You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2018/06/14 00:47:07 UTC

[cordova-windows] branch cb-update-wip1 updated (8cc627b -> 6b8e7e3)

This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a change to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git.


    from 8cc627b  Update requirements, issues and Platform Guide link
     new ceaca3a  remove most existing devdeps for now
     new 67a9039  update to cordova-common@2.2.3
     new 53ca1a3  [squash] add node_modules/fs.realpath
     new af71d78  [squash] add node_modules/strip-bom
     new 6b8e7e3  Revert "remove most existing devdeps for now"

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                         |     1 -
 node_modules/balanced-match/index.js               |     1 +
 node_modules/balanced-match/package.json           |    33 +-
 node_modules/base64-js/.travis.yml                 |     5 -
 node_modules/base64-js/{LICENSE.MIT => LICENSE}    |     0
 node_modules/base64-js/README.md                   |    13 +-
 node_modules/base64-js/base64js.min.js             |     1 +
 node_modules/base64-js/bench/bench.js              |    19 -
 node_modules/base64-js/index.js                    |   151 +
 node_modules/base64-js/lib/b64.js                  |   124 -
 node_modules/base64-js/package.json                |    70 +-
 node_modules/base64-js/test/big-data.js            |    25 +
 node_modules/base64-js/test/convert.js             |   115 +-
 node_modules/base64-js/test/corrupt.js             |    10 +
 node_modules/base64-js/test/url-safe.js            |    24 +-
 node_modules/big-integer/BigInteger.d.ts           |    16 +
 node_modules/big-integer/BigInteger.js             |   230 +-
 node_modules/big-integer/BigInteger.min.js         |     2 +-
 node_modules/big-integer/README.md                 |    50 +
 node_modules/big-integer/package.json              |    40 +-
 .../LICENSE.md => brace-expansion/LICENSE}         |     4 +-
 node_modules/brace-expansion/README.md             |     9 +-
 node_modules/brace-expansion/index.js              |     2 +-
 node_modules/brace-expansion/package.json          |    35 +-
 node_modules/cordova-common/.eslintrc.yml          |     4 +-
 .../.github}/PULL_REQUEST_TEMPLATE.md              |     0
 node_modules/cordova-common/.jscs.json             |    24 -
 node_modules/cordova-common/.travis.yml            |     1 +
 node_modules/cordova-common/README.md              |    16 +-
 node_modules/cordova-common/RELEASENOTES.md        |    14 +
 node_modules/cordova-common/appveyor.yml           |     3 +-
 node_modules/cordova-common/node_modules/.bin/shjs |     1 +
 .../node_modules/elementtree/.npmignore            |     1 -
 .../node_modules/elementtree/.travis.yml           |    10 -
 .../node_modules/elementtree/CHANGES.md            |    39 -
 .../node_modules/elementtree/LICENSE.txt           |   203 -
 .../node_modules/elementtree/Makefile              |    21 -
 .../cordova-common/node_modules/elementtree/NOTICE |     5 -
 .../node_modules/elementtree/README.md             |   141 -
 .../node_modules/elementtree/lib/constants.js      |    20 -
 .../node_modules/elementtree/lib/elementpath.js    |   343 -
 .../node_modules/elementtree/lib/elementtree.js    |   611 -
 .../node_modules/elementtree/lib/errors.js         |    31 -
 .../node_modules/elementtree/lib/parser.js         |    33 -
 .../node_modules/elementtree/lib/parsers/index.js  |     1 -
 .../node_modules/elementtree/lib/parsers/sax.js    |    56 -
 .../node_modules/elementtree/lib/sprintf.js        |    86 -
 .../node_modules/elementtree/lib/treebuilder.js    |    60 -
 .../node_modules/elementtree/lib/utils.js          |    72 -
 .../node_modules/elementtree/package.json          |    83 -
 .../node_modules/elementtree/tests/data/xml1.xml   |    17 -
 .../node_modules/elementtree/tests/data/xml2.xml   |    14 -
 .../node_modules/elementtree/tests/test-simple.js  |   339 -
 .../node_modules/shelljs/CHANGELOG.md              |   894 ++
 .../node_modules}/shelljs/LICENSE                  |     2 +-
 .../cordova-common/node_modules/shelljs/README.md  |   835 ++
 .../node_modules}/shelljs/bin/shjs                 |    22 +-
 .../node_modules/shelljs/commands.js               |    29 +
 .../cordova-common/node_modules/shelljs/global.js  |    12 +
 .../node_modules}/shelljs/make.js                  |     9 +-
 .../node_modules/shelljs/package.json              |   114 +
 .../cordova-common/node_modules/shelljs/plugin.js  |    16 +
 .../cordova-common/node_modules/shelljs/shell.js   |   156 +
 .../cordova-common/node_modules/shelljs/src/cat.js |    76 +
 .../cordova-common/node_modules/shelljs/src/cd.js  |    39 +
 .../node_modules}/shelljs/src/chmod.js             |   130 +-
 .../node_modules/shelljs/src/common.js             |   468 +
 .../cordova-common/node_modules/shelljs/src/cp.js  |   300 +
 .../node_modules}/shelljs/src/dirs.js              |    53 +-
 .../node_modules/shelljs/src/echo.js               |    63 +
 .../node_modules/shelljs/src/error.js              |    15 +
 .../node_modules/shelljs/src/exec-child.js         |    39 +
 .../node_modules/shelljs/src/exec.js               |   205 +
 .../node_modules/shelljs/src/find.js               |    61 +
 .../node_modules/shelljs/src/grep.js               |    68 +
 .../node_modules/shelljs/src/head.js               |   107 +
 .../cordova-common/node_modules/shelljs/src/ln.js  |    73 +
 .../cordova-common/node_modules/shelljs/src/ls.js  |   141 +
 .../node_modules/shelljs/src/mkdir.js              |   100 +
 .../cordova-common/node_modules/shelljs/src/mv.js  |   118 +
 .../node_modules/shelljs/src/popd.js               |     1 +
 .../node_modules/shelljs/src/pushd.js              |     1 +
 .../node_modules}/shelljs/src/pwd.js               |     9 +-
 .../cordova-common/node_modules/shelljs/src/rm.js  |   201 +
 .../cordova-common/node_modules/shelljs/src/sed.js |    87 +
 .../cordova-common/node_modules/shelljs/src/set.js |    56 +
 .../node_modules/shelljs/src/sort.js               |    97 +
 .../node_modules/shelljs/src/tail.js               |    80 +
 .../node_modules}/shelljs/src/tempdir.js           |    29 +-
 .../node_modules/shelljs/src/test.js               |    85 +
 .../cordova-common/node_modules/shelljs/src/to.js  |    37 +
 .../node_modules/shelljs/src/toEnd.js              |    36 +
 .../node_modules/shelljs/src/touch.js              |   111 +
 .../node_modules/shelljs/src/uniq.js               |    92 +
 .../node_modules/shelljs/src/which.js              |    99 +
 node_modules/cordova-common/package.json           |    67 +-
 .../src/ConfigChanges/ConfigChanges.js             |     2 +
 .../cordova-common/src/ConfigChanges/ConfigFile.js |     8 +-
 .../src/ConfigParser/ConfigParser.js               |    45 +-
 .../cordova-common/src/ConfigParser/README.md      |    86 -
 node_modules/cordova-common/src/FileUpdater.js     |     6 +-
 node_modules/cordova-common/src/superspawn.js      |     2 +-
 .../cordova-common/src/util/xml-helpers.js         |     9 +-
 node_modules/fs.realpath/LICENSE                   |    43 +
 node_modules/fs.realpath/README.md                 |    33 +
 node_modules/fs.realpath/index.js                  |    66 +
 node_modules/fs.realpath/old.js                    |   303 +
 node_modules/fs.realpath/package.json              |    59 +
 node_modules/glob/README.md                        |    85 +-
 node_modules/glob/changelog.md                     |    67 +
 node_modules/glob/common.js                        |    53 +-
 node_modules/glob/glob.js                          |    80 +-
 node_modules/glob/package.json                     |    38 +-
 node_modules/glob/sync.js                          |    52 +-
 node_modules/lodash/LICENSE                        |    22 -
 node_modules/lodash/README.md                      |   121 -
 node_modules/lodash/array.js                       |    44 -
 node_modules/lodash/array/chunk.js                 |    46 -
 node_modules/lodash/array/compact.js               |    30 -
 node_modules/lodash/array/difference.js            |    29 -
 node_modules/lodash/array/drop.js                  |    39 -
 node_modules/lodash/array/dropRight.js             |    40 -
 node_modules/lodash/array/dropRightWhile.js        |    59 -
 node_modules/lodash/array/dropWhile.js             |    59 -
 node_modules/lodash/array/fill.js                  |    44 -
 node_modules/lodash/array/findIndex.js             |    53 -
 node_modules/lodash/array/findLastIndex.js         |    53 -
 node_modules/lodash/array/first.js                 |    22 -
 node_modules/lodash/array/flatten.js               |    32 -
 node_modules/lodash/array/flattenDeep.js           |    21 -
 node_modules/lodash/array/head.js                  |     1 -
 node_modules/lodash/array/indexOf.js               |    53 -
 node_modules/lodash/array/initial.js               |    20 -
 node_modules/lodash/array/intersection.js          |    58 -
 node_modules/lodash/array/last.js                  |    19 -
 node_modules/lodash/array/lastIndexOf.js           |    60 -
 node_modules/lodash/array/object.js                |     1 -
 node_modules/lodash/array/pull.js                  |    52 -
 node_modules/lodash/array/pullAt.js                |    40 -
 node_modules/lodash/array/remove.js                |    64 -
 node_modules/lodash/array/rest.js                  |    21 -
 node_modules/lodash/array/slice.js                 |    30 -
 node_modules/lodash/array/sortedIndex.js           |    53 -
 node_modules/lodash/array/sortedLastIndex.js       |    25 -
 node_modules/lodash/array/tail.js                  |     1 -
 node_modules/lodash/array/take.js                  |    39 -
 node_modules/lodash/array/takeRight.js             |    40 -
 node_modules/lodash/array/takeRightWhile.js        |    59 -
 node_modules/lodash/array/takeWhile.js             |    59 -
 node_modules/lodash/array/union.js                 |    24 -
 node_modules/lodash/array/uniq.js                  |    71 -
 node_modules/lodash/array/unique.js                |     1 -
 node_modules/lodash/array/unzip.js                 |    47 -
 node_modules/lodash/array/unzipWith.js             |    41 -
 node_modules/lodash/array/without.js               |    27 -
 node_modules/lodash/array/xor.js                   |    35 -
 node_modules/lodash/array/zip.js                   |    21 -
 node_modules/lodash/array/zipObject.js             |    43 -
 node_modules/lodash/array/zipWith.js               |    36 -
 node_modules/lodash/chain.js                       |    16 -
 node_modules/lodash/chain/chain.js                 |    35 -
 node_modules/lodash/chain/commit.js                |     1 -
 node_modules/lodash/chain/concat.js                |     1 -
 node_modules/lodash/chain/lodash.js                |   125 -
 node_modules/lodash/chain/plant.js                 |     1 -
 node_modules/lodash/chain/reverse.js               |     1 -
 node_modules/lodash/chain/run.js                   |     1 -
 node_modules/lodash/chain/tap.js                   |    29 -
 node_modules/lodash/chain/thru.js                  |    26 -
 node_modules/lodash/chain/toJSON.js                |     1 -
 node_modules/lodash/chain/toString.js              |     1 -
 node_modules/lodash/chain/value.js                 |     1 -
 node_modules/lodash/chain/valueOf.js               |     1 -
 node_modules/lodash/chain/wrapperChain.js          |    32 -
 node_modules/lodash/chain/wrapperCommit.js         |    32 -
 node_modules/lodash/chain/wrapperConcat.js         |    34 -
 node_modules/lodash/chain/wrapperPlant.js          |    45 -
 node_modules/lodash/chain/wrapperReverse.js        |    43 -
 node_modules/lodash/chain/wrapperToString.js       |    17 -
 node_modules/lodash/chain/wrapperValue.js          |    20 -
 node_modules/lodash/collection.js                  |    44 -
 node_modules/lodash/collection/all.js              |     1 -
 node_modules/lodash/collection/any.js              |     1 -
 node_modules/lodash/collection/at.js               |    29 -
 node_modules/lodash/collection/collect.js          |     1 -
 node_modules/lodash/collection/contains.js         |     1 -
 node_modules/lodash/collection/countBy.js          |    54 -
 node_modules/lodash/collection/detect.js           |     1 -
 node_modules/lodash/collection/each.js             |     1 -
 node_modules/lodash/collection/eachRight.js        |     1 -
 node_modules/lodash/collection/every.js            |    66 -
 node_modules/lodash/collection/filter.js           |    61 -
 node_modules/lodash/collection/find.js             |    56 -
 node_modules/lodash/collection/findLast.js         |    25 -
 node_modules/lodash/collection/findWhere.js        |    37 -
 node_modules/lodash/collection/foldl.js            |     1 -
 node_modules/lodash/collection/foldr.js            |     1 -
 node_modules/lodash/collection/forEach.js          |    37 -
 node_modules/lodash/collection/forEachRight.js     |    26 -
 node_modules/lodash/collection/groupBy.js          |    59 -
 node_modules/lodash/collection/include.js          |     1 -
 node_modules/lodash/collection/includes.js         |    57 -
 node_modules/lodash/collection/indexBy.js          |    53 -
 node_modules/lodash/collection/inject.js           |     1 -
 node_modules/lodash/collection/invoke.js           |    42 -
 node_modules/lodash/collection/map.js              |    68 -
 node_modules/lodash/collection/max.js              |     1 -
 node_modules/lodash/collection/min.js              |     1 -
 node_modules/lodash/collection/partition.js        |    66 -
 node_modules/lodash/collection/pluck.js            |    31 -
 node_modules/lodash/collection/reduce.js           |    44 -
 node_modules/lodash/collection/reduceRight.js      |    29 -
 node_modules/lodash/collection/reject.js           |    50 -
 node_modules/lodash/collection/sample.js           |    50 -
 node_modules/lodash/collection/select.js           |     1 -
 node_modules/lodash/collection/shuffle.js          |    24 -
 node_modules/lodash/collection/size.js             |    30 -
 node_modules/lodash/collection/some.js             |    67 -
 node_modules/lodash/collection/sortBy.js           |    71 -
 node_modules/lodash/collection/sortByAll.js        |    52 -
 node_modules/lodash/collection/sortByOrder.js      |    55 -
 node_modules/lodash/collection/sum.js              |     1 -
 node_modules/lodash/collection/where.js            |    37 -
 node_modules/lodash/date.js                        |     3 -
 node_modules/lodash/date/now.js                    |    24 -
 node_modules/lodash/function.js                    |    28 -
 node_modules/lodash/function/after.js              |    48 -
 node_modules/lodash/function/ary.js                |    34 -
 node_modules/lodash/function/backflow.js           |     1 -
 node_modules/lodash/function/before.js             |    42 -
 node_modules/lodash/function/bind.js               |    56 -
 node_modules/lodash/function/bindAll.js            |    50 -
 node_modules/lodash/function/bindKey.js            |    66 -
 node_modules/lodash/function/compose.js            |     1 -
 node_modules/lodash/function/curry.js              |    51 -
 node_modules/lodash/function/curryRight.js         |    48 -
 node_modules/lodash/function/debounce.js           |   181 -
 node_modules/lodash/function/defer.js              |    25 -
 node_modules/lodash/function/delay.js              |    26 -
 node_modules/lodash/function/flow.js               |    25 -
 node_modules/lodash/function/flowRight.js          |    25 -
 node_modules/lodash/function/memoize.js            |    80 -
 node_modules/lodash/function/modArgs.js            |    58 -
 node_modules/lodash/function/negate.js             |    32 -
 node_modules/lodash/function/once.js               |    24 -
 node_modules/lodash/function/partial.js            |    43 -
 node_modules/lodash/function/partialRight.js       |    42 -
 node_modules/lodash/function/rearg.js              |    40 -
 node_modules/lodash/function/restParam.js          |    58 -
 node_modules/lodash/function/spread.js             |    44 -
 node_modules/lodash/function/throttle.js           |    62 -
 node_modules/lodash/function/wrap.js               |    33 -
 node_modules/lodash/index.js                       | 12351 -------------------
 node_modules/lodash/internal/LazyWrapper.js        |    26 -
 node_modules/lodash/internal/LodashWrapper.js      |    21 -
 node_modules/lodash/internal/MapCache.js           |    24 -
 node_modules/lodash/internal/SetCache.js           |    29 -
 node_modules/lodash/internal/arrayConcat.js        |    25 -
 node_modules/lodash/internal/arrayCopy.js          |    20 -
 node_modules/lodash/internal/arrayEach.js          |    22 -
 node_modules/lodash/internal/arrayEachRight.js     |    21 -
 node_modules/lodash/internal/arrayEvery.js         |    23 -
 node_modules/lodash/internal/arrayExtremum.js      |    30 -
 node_modules/lodash/internal/arrayFilter.js        |    25 -
 node_modules/lodash/internal/arrayMap.js           |    21 -
 node_modules/lodash/internal/arrayPush.js          |    20 -
 node_modules/lodash/internal/arrayReduce.js        |    26 -
 node_modules/lodash/internal/arrayReduceRight.js   |    24 -
 node_modules/lodash/internal/arraySome.js          |    23 -
 node_modules/lodash/internal/arraySum.js           |    20 -
 node_modules/lodash/internal/assignDefaults.js     |    13 -
 node_modules/lodash/internal/assignOwnDefaults.js  |    26 -
 node_modules/lodash/internal/assignWith.js         |    32 -
 node_modules/lodash/internal/baseAssign.js         |    19 -
 node_modules/lodash/internal/baseAt.js             |    32 -
 node_modules/lodash/internal/baseCallback.js       |    35 -
 node_modules/lodash/internal/baseClone.js          |   128 -
 .../lodash/internal/baseCompareAscending.js        |    34 -
 node_modules/lodash/internal/baseCopy.js           |    23 -
 node_modules/lodash/internal/baseCreate.js         |    23 -
 node_modules/lodash/internal/baseDelay.js          |    21 -
 node_modules/lodash/internal/baseDifference.js     |    55 -
 node_modules/lodash/internal/baseEach.js           |    15 -
 node_modules/lodash/internal/baseEachRight.js      |    15 -
 node_modules/lodash/internal/baseEvery.js          |    22 -
 node_modules/lodash/internal/baseExtremum.js       |    29 -
 node_modules/lodash/internal/baseFill.js           |    31 -
 node_modules/lodash/internal/baseFilter.js         |    22 -
 node_modules/lodash/internal/baseFind.js           |    25 -
 node_modules/lodash/internal/baseFindIndex.js      |    23 -
 node_modules/lodash/internal/baseFlatten.js        |    41 -
 node_modules/lodash/internal/baseFor.js            |    17 -
 node_modules/lodash/internal/baseForIn.js          |    17 -
 node_modules/lodash/internal/baseForOwn.js         |    17 -
 node_modules/lodash/internal/baseForOwnRight.js    |    17 -
 node_modules/lodash/internal/baseForRight.js       |    15 -
 node_modules/lodash/internal/baseFunctions.js      |    27 -
 node_modules/lodash/internal/baseGet.js            |    29 -
 node_modules/lodash/internal/baseIndexOf.js        |    27 -
 node_modules/lodash/internal/baseIsEqual.js        |    28 -
 node_modules/lodash/internal/baseIsEqualDeep.js    |   102 -
 node_modules/lodash/internal/baseIsFunction.js     |    15 -
 node_modules/lodash/internal/baseIsMatch.js        |    52 -
 node_modules/lodash/internal/baseLodash.js         |    10 -
 node_modules/lodash/internal/baseMap.js            |    23 -
 node_modules/lodash/internal/baseMatches.js        |    30 -
 .../lodash/internal/baseMatchesProperty.js         |    45 -
 node_modules/lodash/internal/baseMerge.js          |    56 -
 node_modules/lodash/internal/baseMergeDeep.js      |    67 -
 node_modules/lodash/internal/baseProperty.js       |    14 -
 node_modules/lodash/internal/basePropertyDeep.js   |    19 -
 node_modules/lodash/internal/basePullAt.js         |    30 -
 node_modules/lodash/internal/baseRandom.js         |    18 -
 node_modules/lodash/internal/baseReduce.js         |    24 -
 node_modules/lodash/internal/baseSetData.js        |    17 -
 node_modules/lodash/internal/baseSlice.js          |    32 -
 node_modules/lodash/internal/baseSome.js           |    23 -
 node_modules/lodash/internal/baseSortBy.js         |    21 -
 node_modules/lodash/internal/baseSortByOrder.js    |    31 -
 node_modules/lodash/internal/baseSum.js            |    20 -
 node_modules/lodash/internal/baseToString.js       |    13 -
 node_modules/lodash/internal/baseUniq.js           |    60 -
 node_modules/lodash/internal/baseValues.js         |    22 -
 node_modules/lodash/internal/baseWhile.js          |    24 -
 node_modules/lodash/internal/baseWrapperValue.js   |    29 -
 node_modules/lodash/internal/binaryIndex.js        |    39 -
 node_modules/lodash/internal/binaryIndexBy.js      |    57 -
 node_modules/lodash/internal/bindCallback.js       |    39 -
 node_modules/lodash/internal/bufferClone.js        |    20 -
 node_modules/lodash/internal/cacheIndexOf.js       |    19 -
 node_modules/lodash/internal/cachePush.js          |    20 -
 node_modules/lodash/internal/charsLeftIndex.js     |    18 -
 node_modules/lodash/internal/charsRightIndex.js    |    17 -
 node_modules/lodash/internal/compareAscending.js   |    16 -
 node_modules/lodash/internal/compareMultiple.js    |    44 -
 node_modules/lodash/internal/composeArgs.js        |    34 -
 node_modules/lodash/internal/composeArgsRight.js   |    36 -
 node_modules/lodash/internal/createAggregator.js   |    35 -
 node_modules/lodash/internal/createAssigner.js     |    41 -
 node_modules/lodash/internal/createBaseEach.js     |    31 -
 node_modules/lodash/internal/createBaseFor.js      |    27 -
 node_modules/lodash/internal/createBindWrapper.js  |    22 -
 node_modules/lodash/internal/createCache.js        |    21 -
 node_modules/lodash/internal/createCompounder.js   |    26 -
 node_modules/lodash/internal/createCtorWrapper.js  |    37 -
 node_modules/lodash/internal/createCurry.js        |    23 -
 node_modules/lodash/internal/createDefaults.js     |    22 -
 node_modules/lodash/internal/createExtremum.js     |    33 -
 node_modules/lodash/internal/createFind.js         |    25 -
 node_modules/lodash/internal/createFindIndex.js    |    21 -
 node_modules/lodash/internal/createFindKey.js      |    18 -
 node_modules/lodash/internal/createFlow.js         |    74 -
 node_modules/lodash/internal/createForEach.js      |    20 -
 node_modules/lodash/internal/createForIn.js        |    20 -
 node_modules/lodash/internal/createForOwn.js       |    19 -
 .../lodash/internal/createHybridWrapper.js         |   111 -
 node_modules/lodash/internal/createObjectMapper.js |    26 -
 node_modules/lodash/internal/createPadDir.js       |    18 -
 node_modules/lodash/internal/createPadding.js      |    29 -
 node_modules/lodash/internal/createPartial.js      |    20 -
 .../lodash/internal/createPartialWrapper.js        |    43 -
 node_modules/lodash/internal/createReduce.js       |    22 -
 node_modules/lodash/internal/createRound.js        |    23 -
 node_modules/lodash/internal/createSortedIndex.js  |    20 -
 node_modules/lodash/internal/createWrapper.js      |    86 -
 node_modules/lodash/internal/deburrLetter.js       |    33 -
 node_modules/lodash/internal/equalArrays.js        |    51 -
 node_modules/lodash/internal/equalByTag.js         |    48 -
 node_modules/lodash/internal/equalObjects.js       |    67 -
 node_modules/lodash/internal/escapeHtmlChar.js     |    22 -
 node_modules/lodash/internal/escapeRegExpChar.js   |    38 -
 node_modules/lodash/internal/escapeStringChar.js   |    22 -
 node_modules/lodash/internal/getData.js            |    15 -
 node_modules/lodash/internal/getFuncName.js        |    25 -
 node_modules/lodash/internal/getLength.js          |    15 -
 node_modules/lodash/internal/getMatchData.js       |    21 -
 node_modules/lodash/internal/getNative.js          |    16 -
 node_modules/lodash/internal/getView.js            |    33 -
 node_modules/lodash/internal/indexOfNaN.js         |    23 -
 node_modules/lodash/internal/initCloneArray.js     |    26 -
 node_modules/lodash/internal/initCloneByTag.js     |    63 -
 node_modules/lodash/internal/initCloneObject.js    |    16 -
 node_modules/lodash/internal/invokePath.js         |    26 -
 node_modules/lodash/internal/isArrayLike.js        |    15 -
 node_modules/lodash/internal/isIndex.js            |    24 -
 node_modules/lodash/internal/isIterateeCall.js     |    28 -
 node_modules/lodash/internal/isKey.js              |    28 -
 node_modules/lodash/internal/isLaziable.js         |    27 -
 node_modules/lodash/internal/isLength.js           |    20 -
 node_modules/lodash/internal/isObjectLike.js       |    12 -
 node_modules/lodash/internal/isSpace.js            |    14 -
 node_modules/lodash/internal/isStrictComparable.js |    15 -
 node_modules/lodash/internal/lazyClone.js          |    23 -
 node_modules/lodash/internal/lazyReverse.js        |    23 -
 node_modules/lodash/internal/lazyValue.js          |    72 -
 node_modules/lodash/internal/mapDelete.js          |    14 -
 node_modules/lodash/internal/mapGet.js             |    14 -
 node_modules/lodash/internal/mapHas.js             |    20 -
 node_modules/lodash/internal/mapSet.js             |    18 -
 node_modules/lodash/internal/mergeData.js          |    89 -
 node_modules/lodash/internal/mergeDefaults.js      |    15 -
 node_modules/lodash/internal/metaMap.js            |     9 -
 node_modules/lodash/internal/pickByArray.js        |    28 -
 node_modules/lodash/internal/pickByCallback.js     |    22 -
 node_modules/lodash/internal/reEscape.js           |     4 -
 node_modules/lodash/internal/reEvaluate.js         |     4 -
 node_modules/lodash/internal/reInterpolate.js      |     4 -
 node_modules/lodash/internal/realNames.js          |     4 -
 node_modules/lodash/internal/reorder.js            |    29 -
 node_modules/lodash/internal/replaceHolders.js     |    28 -
 node_modules/lodash/internal/setData.js            |    41 -
 node_modules/lodash/internal/shimKeys.js           |    41 -
 node_modules/lodash/internal/sortedUniq.js         |    29 -
 node_modules/lodash/internal/toIterable.js         |    22 -
 node_modules/lodash/internal/toObject.js           |    14 -
 node_modules/lodash/internal/toPath.js             |    28 -
 node_modules/lodash/internal/trimmedLeftIndex.js   |    19 -
 node_modules/lodash/internal/trimmedRightIndex.js  |    18 -
 node_modules/lodash/internal/unescapeHtmlChar.js   |    22 -
 node_modules/lodash/internal/wrapperClone.js       |    18 -
 node_modules/lodash/lang.js                        |    32 -
 node_modules/lodash/lang/clone.js                  |    70 -
 node_modules/lodash/lang/cloneDeep.js              |    55 -
 node_modules/lodash/lang/eq.js                     |     1 -
 node_modules/lodash/lang/gt.js                     |    25 -
 node_modules/lodash/lang/gte.js                    |    25 -
 node_modules/lodash/lang/isArguments.js            |    34 -
 node_modules/lodash/lang/isArray.js                |    40 -
 node_modules/lodash/lang/isBoolean.js              |    35 -
 node_modules/lodash/lang/isDate.js                 |    35 -
 node_modules/lodash/lang/isElement.js              |    24 -
 node_modules/lodash/lang/isEmpty.js                |    47 -
 node_modules/lodash/lang/isEqual.js                |    54 -
 node_modules/lodash/lang/isError.js                |    36 -
 node_modules/lodash/lang/isFinite.js               |    35 -
 node_modules/lodash/lang/isFunction.js             |    38 -
 node_modules/lodash/lang/isMatch.js                |    49 -
 node_modules/lodash/lang/isNaN.js                  |    34 -
 node_modules/lodash/lang/isNative.js               |    48 -
 node_modules/lodash/lang/isNull.js                 |    21 -
 node_modules/lodash/lang/isNumber.js               |    41 -
 node_modules/lodash/lang/isObject.js               |    28 -
 node_modules/lodash/lang/isPlainObject.js          |    71 -
 node_modules/lodash/lang/isRegExp.js               |    35 -
 node_modules/lodash/lang/isString.js               |    35 -
 node_modules/lodash/lang/isTypedArray.js           |    74 -
 node_modules/lodash/lang/isUndefined.js            |    21 -
 node_modules/lodash/lang/lt.js                     |    25 -
 node_modules/lodash/lang/lte.js                    |    25 -
 node_modules/lodash/lang/toArray.js                |    32 -
 node_modules/lodash/lang/toPlainObject.js          |    31 -
 node_modules/lodash/math.js                        |     9 -
 node_modules/lodash/math/add.js                    |    19 -
 node_modules/lodash/math/ceil.js                   |    25 -
 node_modules/lodash/math/floor.js                  |    25 -
 node_modules/lodash/math/max.js                    |    56 -
 node_modules/lodash/math/min.js                    |    56 -
 node_modules/lodash/math/round.js                  |    25 -
 node_modules/lodash/math/sum.js                    |    50 -
 node_modules/lodash/number.js                      |     4 -
 node_modules/lodash/number/inRange.js              |    47 -
 node_modules/lodash/number/random.js               |    70 -
 node_modules/lodash/object.js                      |    31 -
 node_modules/lodash/object/assign.js               |    43 -
 node_modules/lodash/object/create.js               |    47 -
 node_modules/lodash/object/defaults.js             |    25 -
 node_modules/lodash/object/defaultsDeep.js         |    25 -
 node_modules/lodash/object/extend.js               |     1 -
 node_modules/lodash/object/findKey.js              |    54 -
 node_modules/lodash/object/findLastKey.js          |    54 -
 node_modules/lodash/object/forIn.js                |    33 -
 node_modules/lodash/object/forInRight.js           |    31 -
 node_modules/lodash/object/forOwn.js               |    33 -
 node_modules/lodash/object/forOwnRight.js          |    31 -
 node_modules/lodash/object/functions.js            |    23 -
 node_modules/lodash/object/get.js                  |    33 -
 node_modules/lodash/object/has.js                  |    57 -
 node_modules/lodash/object/invert.js               |    60 -
 node_modules/lodash/object/keys.js                 |    45 -
 node_modules/lodash/object/keysIn.js               |    64 -
 node_modules/lodash/object/mapKeys.js              |    25 -
 node_modules/lodash/object/mapValues.js            |    46 -
 node_modules/lodash/object/merge.js                |    54 -
 node_modules/lodash/object/methods.js              |     1 -
 node_modules/lodash/object/omit.js                 |    47 -
 node_modules/lodash/object/pairs.js                |    33 -
 node_modules/lodash/object/pick.js                 |    42 -
 node_modules/lodash/object/result.js               |    49 -
 node_modules/lodash/object/set.js                  |    55 -
 node_modules/lodash/object/transform.js            |    61 -
 node_modules/lodash/object/values.js               |    33 -
 node_modules/lodash/object/valuesIn.js             |    31 -
 node_modules/lodash/package.json                   |    84 -
 node_modules/lodash/string.js                      |    25 -
 node_modules/lodash/string/camelCase.js            |    27 -
 node_modules/lodash/string/capitalize.js           |    21 -
 node_modules/lodash/string/deburr.js               |    29 -
 node_modules/lodash/string/endsWith.js             |    40 -
 node_modules/lodash/string/escape.js               |    48 -
 node_modules/lodash/string/escapeRegExp.js         |    32 -
 node_modules/lodash/string/kebabCase.js            |    26 -
 node_modules/lodash/string/pad.js                  |    47 -
 node_modules/lodash/string/padLeft.js              |    27 -
 node_modules/lodash/string/padRight.js             |    27 -
 node_modules/lodash/string/parseInt.js             |    46 -
 node_modules/lodash/string/repeat.js               |    47 -
 node_modules/lodash/string/snakeCase.js            |    26 -
 node_modules/lodash/string/startCase.js            |    26 -
 node_modules/lodash/string/startsWith.js           |    36 -
 node_modules/lodash/string/template.js             |   226 -
 node_modules/lodash/string/templateSettings.js     |    67 -
 node_modules/lodash/string/trim.js                 |    42 -
 node_modules/lodash/string/trimLeft.js             |    36 -
 node_modules/lodash/string/trimRight.js            |    36 -
 node_modules/lodash/string/trunc.js                |   105 -
 node_modules/lodash/string/unescape.js             |    33 -
 node_modules/lodash/string/words.js                |    38 -
 node_modules/lodash/support.js                     |    10 -
 node_modules/lodash/utility.js                     |    18 -
 node_modules/lodash/utility/attempt.js             |    32 -
 node_modules/lodash/utility/callback.js            |    53 -
 node_modules/lodash/utility/constant.js            |    23 -
 node_modules/lodash/utility/identity.js            |    20 -
 node_modules/lodash/utility/iteratee.js            |     1 -
 node_modules/lodash/utility/matches.js             |    33 -
 node_modules/lodash/utility/matchesProperty.js     |    32 -
 node_modules/lodash/utility/method.js              |    33 -
 node_modules/lodash/utility/methodOf.js            |    32 -
 node_modules/lodash/utility/mixin.js               |    82 -
 node_modules/lodash/utility/noop.js                |    19 -
 node_modules/lodash/utility/property.js            |    31 -
 node_modules/lodash/utility/propertyOf.js          |    30 -
 node_modules/lodash/utility/range.js               |    66 -
 node_modules/lodash/utility/times.js               |    60 -
 node_modules/lodash/utility/uniqueId.js            |    27 -
 node_modules/minimatch/package.json                |    44 +-
 node_modules/os-homedir/index.js                   |    24 -
 node_modules/os-homedir/license                    |    21 -
 node_modules/os-homedir/package.json               |    76 -
 node_modules/os-homedir/readme.md                  |    31 -
 node_modules/os-tmpdir/index.js                    |    25 -
 node_modules/os-tmpdir/package.json                |    77 -
 node_modules/os-tmpdir/readme.md                   |    32 -
 node_modules/osenv/.npmignore                      |    13 -
 node_modules/osenv/.travis.yml                     |     9 -
 node_modules/osenv/LICENSE                         |    15 -
 node_modules/osenv/README.md                       |    63 -
 node_modules/osenv/osenv.js                        |    72 -
 node_modules/osenv/package.json                    |    70 -
 node_modules/osenv/test/unix.js                    |    71 -
 node_modules/osenv/test/windows.js                 |    74 -
 node_modules/osenv/x.tap                           |    39 -
 node_modules/plist/.travis.yml                     |    35 +-
 node_modules/plist/History.md                      |    66 +-
 node_modules/plist/LICENSE                         |     2 +-
 node_modules/plist/Makefile                        |     3 +-
 node_modules/plist/README.md                       |    84 +-
 node_modules/plist/dist/plist-build.js             |  5200 +++-----
 node_modules/plist/dist/plist-parse.js             |  2286 ++--
 node_modules/plist/dist/plist.js                   |  6811 +++++-----
 node_modules/plist/index.js                        |    13 +
 node_modules/plist/lib/build.js                    |     1 -
 node_modules/plist/lib/node.js                     |    49 -
 node_modules/plist/lib/parse.js                    |   177 +-
 node_modules/plist/lib/plist.js                    |    23 -
 node_modules/plist/package.json                    |    49 +-
 node_modules/sax/AUTHORS                           |     9 -
 node_modules/sax/LICENSE                           |    23 -
 node_modules/sax/README.md                         |   213 -
 node_modules/sax/examples/big-not-pretty.xml       |  8002 ------------
 node_modules/sax/examples/example.js               |    41 -
 node_modules/sax/examples/get-products.js          |    58 -
 node_modules/sax/examples/hello-world.js           |     4 -
 node_modules/sax/examples/not-pretty.xml           |     8 -
 node_modules/sax/examples/pretty-print.js          |    74 -
 node_modules/sax/examples/shopping.xml             |     2 -
 node_modules/sax/examples/strict.dtd               |   870 --
 node_modules/sax/examples/switch-bench.js          |    45 -
 node_modules/sax/examples/test.html                |    15 -
 node_modules/sax/examples/test.xml                 |  1254 --
 node_modules/sax/lib/sax.js                        |  1006 --
 node_modules/sax/package.json                      |    88 -
 node_modules/sax/test/buffer-overrun.js            |    25 -
 node_modules/sax/test/cdata-chunked.js             |    11 -
 node_modules/sax/test/cdata-end-split.js           |    15 -
 node_modules/sax/test/cdata-fake-end.js            |    28 -
 node_modules/sax/test/cdata-multiple.js            |    15 -
 node_modules/sax/test/cdata.js                     |    10 -
 node_modules/sax/test/index.js                     |    86 -
 node_modules/sax/test/issue-23.js                  |    43 -
 node_modules/sax/test/issue-30.js                  |    24 -
 node_modules/sax/test/issue-35.js                  |    15 -
 node_modules/sax/test/issue-47.js                  |    13 -
 node_modules/sax/test/issue-49.js                  |    31 -
 node_modules/sax/test/parser-position.js           |    28 -
 node_modules/sax/test/script.js                    |    12 -
 node_modules/sax/test/self-closing-child-strict.js |    40 -
 node_modules/sax/test/self-closing-child.js        |    40 -
 node_modules/sax/test/self-closing-tag.js          |    25 -
 node_modules/sax/test/stray-ending.js              |    17 -
 node_modules/sax/test/trailing-non-whitespace.js   |    17 -
 node_modules/sax/test/unquoted.js                  |    17 -
 node_modules/sax/test/xmlns-issue-41.js            |    67 -
 node_modules/sax/test/xmlns-rebinding.js           |    59 -
 node_modules/sax/test/xmlns-strict.js              |    71 -
 node_modules/sax/test/xmlns-unbound.js             |    15 -
 .../sax/test/xmlns-xml-default-prefix-attribute.js |    35 -
 node_modules/sax/test/xmlns-xml-default-prefix.js  |    20 -
 .../sax/test/xmlns-xml-default-redefine.js         |    40 -
 node_modules/strip-bom/index.js                    |    14 +
 node_modules/{os-tmpdir => strip-bom}/license      |     0
 node_modules/strip-bom/package.json                |    72 +
 node_modules/strip-bom/readme.md                   |    36 +
 node_modules/underscore/LICENSE                    |     2 +-
 node_modules/underscore/README.md                  |     6 +
 node_modules/underscore/package.json               |    59 +-
 node_modules/underscore/underscore-min.js          |     7 +-
 node_modules/underscore/underscore-min.js.map      |     1 +
 node_modules/underscore/underscore-min.map         |     1 -
 node_modules/underscore/underscore.js              |   702 +-
 node_modules/unorm/LICENSE.md                      |    42 -
 node_modules/unorm/README.md                       |   118 -
 node_modules/unorm/lib/unorm.js                    |   442 -
 node_modules/unorm/package.json                    |    75 -
 node_modules/util-deprecate/History.md             |    16 -
 node_modules/util-deprecate/LICENSE                |    24 -
 node_modules/util-deprecate/README.md              |    53 -
 node_modules/util-deprecate/browser.js             |    67 -
 node_modules/util-deprecate/node.js                |     6 -
 node_modules/util-deprecate/package.json           |    60 -
 node_modules/xmlbuilder/CHANGELOG.md               |   423 +
 node_modules/xmlbuilder/README.md                  |     7 +-
 node_modules/xmlbuilder/lib/Utility.js             |    73 +
 node_modules/xmlbuilder/lib/XMLAttribute.js        |    13 +-
 node_modules/xmlbuilder/lib/XMLBuilder.js          |    69 -
 node_modules/xmlbuilder/lib/XMLCData.js            |    27 +-
 node_modules/xmlbuilder/lib/XMLComment.js          |    27 +-
 node_modules/xmlbuilder/lib/XMLDTDAttList.js       |    42 +-
 node_modules/xmlbuilder/lib/XMLDTDElement.js       |    35 +-
 node_modules/xmlbuilder/lib/XMLDTDEntity.js        |    54 +-
 node_modules/xmlbuilder/lib/XMLDTDNotation.js      |    43 +-
 node_modules/xmlbuilder/lib/XMLDeclaration.js      |    35 +-
 node_modules/xmlbuilder/lib/XMLDocType.js          |   107 +-
 node_modules/xmlbuilder/lib/XMLDocument.js         |    48 +
 node_modules/xmlbuilder/lib/XMLDocumentCB.js       |   402 +
 node_modules/xmlbuilder/lib/XMLElement.js          |   133 +-
 node_modules/xmlbuilder/lib/XMLNode.js             |   189 +-
 .../xmlbuilder/lib/XMLProcessingInstruction.js     |    42 +-
 node_modules/xmlbuilder/lib/XMLRaw.js              |    27 +-
 node_modules/xmlbuilder/lib/XMLStreamWriter.js     |   279 +
 node_modules/xmlbuilder/lib/XMLStringWriter.js     |   334 +
 node_modules/xmlbuilder/lib/XMLStringifier.js      |    36 +-
 node_modules/xmlbuilder/lib/XMLText.js             |    27 +-
 node_modules/xmlbuilder/lib/XMLWriterBase.js       |    90 +
 node_modules/xmlbuilder/lib/index.js               |    49 +-
 node_modules/xmlbuilder/package.json               |    43 +-
 package.json                                       |     2 +-
 657 files changed, 15566 insertions(+), 52882 deletions(-)
 delete mode 100644 node_modules/base64-js/.travis.yml
 rename node_modules/base64-js/{LICENSE.MIT => LICENSE} (100%)
 create mode 100644 node_modules/base64-js/base64js.min.js
 delete mode 100644 node_modules/base64-js/bench/bench.js
 create mode 100644 node_modules/base64-js/index.js
 delete mode 100644 node_modules/base64-js/lib/b64.js
 create mode 100644 node_modules/base64-js/test/big-data.js
 create mode 100644 node_modules/base64-js/test/corrupt.js
 copy node_modules/{node-uuid/LICENSE.md => brace-expansion/LICENSE} (93%)
 copy {.github => node_modules/cordova-common/.github}/PULL_REQUEST_TEMPLATE.md (100%)
 delete mode 100644 node_modules/cordova-common/.jscs.json
 create mode 120000 node_modules/cordova-common/node_modules/.bin/shjs
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/.npmignore
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/.travis.yml
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/CHANGES.md
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/LICENSE.txt
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/Makefile
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/NOTICE
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/README.md
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/constants.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/elementpath.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/elementtree.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/errors.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/parser.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/parsers/index.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/parsers/sax.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/sprintf.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/treebuilder.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/lib/utils.js
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/package.json
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/tests/data/xml1.xml
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/tests/data/xml2.xml
 delete mode 100644 node_modules/cordova-common/node_modules/elementtree/tests/test-simple.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/CHANGELOG.md
 copy node_modules/{ => cordova-common/node_modules}/shelljs/LICENSE (96%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/README.md
 copy node_modules/{ => cordova-common/node_modules}/shelljs/bin/shjs (66%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/commands.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/global.js
 copy node_modules/{ => cordova-common/node_modules}/shelljs/make.js (86%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/package.json
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/plugin.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/shell.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/cat.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/cd.js
 copy node_modules/{ => cordova-common/node_modules}/shelljs/src/chmod.js (60%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/common.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/cp.js
 copy node_modules/{ => cordova-common/node_modules}/shelljs/src/dirs.js (73%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/echo.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/error.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/exec-child.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/exec.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/find.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/grep.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/head.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/ln.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/ls.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/mkdir.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/mv.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/popd.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/pushd.js
 copy node_modules/{ => cordova-common/node_modules}/shelljs/src/pwd.js (65%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/rm.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/sed.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/set.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/sort.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/tail.js
 copy node_modules/{ => cordova-common/node_modules}/shelljs/src/tempdir.js (65%)
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/test.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/to.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/toEnd.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/touch.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/uniq.js
 create mode 100644 node_modules/cordova-common/node_modules/shelljs/src/which.js
 delete mode 100644 node_modules/cordova-common/src/ConfigParser/README.md
 create mode 100644 node_modules/fs.realpath/LICENSE
 create mode 100644 node_modules/fs.realpath/README.md
 create mode 100644 node_modules/fs.realpath/index.js
 create mode 100644 node_modules/fs.realpath/old.js
 create mode 100644 node_modules/fs.realpath/package.json
 create mode 100644 node_modules/glob/changelog.md
 delete mode 100644 node_modules/lodash/LICENSE
 delete mode 100644 node_modules/lodash/README.md
 delete mode 100644 node_modules/lodash/array.js
 delete mode 100644 node_modules/lodash/array/chunk.js
 delete mode 100644 node_modules/lodash/array/compact.js
 delete mode 100644 node_modules/lodash/array/difference.js
 delete mode 100644 node_modules/lodash/array/drop.js
 delete mode 100644 node_modules/lodash/array/dropRight.js
 delete mode 100644 node_modules/lodash/array/dropRightWhile.js
 delete mode 100644 node_modules/lodash/array/dropWhile.js
 delete mode 100644 node_modules/lodash/array/fill.js
 delete mode 100644 node_modules/lodash/array/findIndex.js
 delete mode 100644 node_modules/lodash/array/findLastIndex.js
 delete mode 100644 node_modules/lodash/array/first.js
 delete mode 100644 node_modules/lodash/array/flatten.js
 delete mode 100644 node_modules/lodash/array/flattenDeep.js
 delete mode 100644 node_modules/lodash/array/head.js
 delete mode 100644 node_modules/lodash/array/indexOf.js
 delete mode 100644 node_modules/lodash/array/initial.js
 delete mode 100644 node_modules/lodash/array/intersection.js
 delete mode 100644 node_modules/lodash/array/last.js
 delete mode 100644 node_modules/lodash/array/lastIndexOf.js
 delete mode 100644 node_modules/lodash/array/object.js
 delete mode 100644 node_modules/lodash/array/pull.js
 delete mode 100644 node_modules/lodash/array/pullAt.js
 delete mode 100644 node_modules/lodash/array/remove.js
 delete mode 100644 node_modules/lodash/array/rest.js
 delete mode 100644 node_modules/lodash/array/slice.js
 delete mode 100644 node_modules/lodash/array/sortedIndex.js
 delete mode 100644 node_modules/lodash/array/sortedLastIndex.js
 delete mode 100644 node_modules/lodash/array/tail.js
 delete mode 100644 node_modules/lodash/array/take.js
 delete mode 100644 node_modules/lodash/array/takeRight.js
 delete mode 100644 node_modules/lodash/array/takeRightWhile.js
 delete mode 100644 node_modules/lodash/array/takeWhile.js
 delete mode 100644 node_modules/lodash/array/union.js
 delete mode 100644 node_modules/lodash/array/uniq.js
 delete mode 100644 node_modules/lodash/array/unique.js
 delete mode 100644 node_modules/lodash/array/unzip.js
 delete mode 100644 node_modules/lodash/array/unzipWith.js
 delete mode 100644 node_modules/lodash/array/without.js
 delete mode 100644 node_modules/lodash/array/xor.js
 delete mode 100644 node_modules/lodash/array/zip.js
 delete mode 100644 node_modules/lodash/array/zipObject.js
 delete mode 100644 node_modules/lodash/array/zipWith.js
 delete mode 100644 node_modules/lodash/chain.js
 delete mode 100644 node_modules/lodash/chain/chain.js
 delete mode 100644 node_modules/lodash/chain/commit.js
 delete mode 100644 node_modules/lodash/chain/concat.js
 delete mode 100644 node_modules/lodash/chain/lodash.js
 delete mode 100644 node_modules/lodash/chain/plant.js
 delete mode 100644 node_modules/lodash/chain/reverse.js
 delete mode 100644 node_modules/lodash/chain/run.js
 delete mode 100644 node_modules/lodash/chain/tap.js
 delete mode 100644 node_modules/lodash/chain/thru.js
 delete mode 100644 node_modules/lodash/chain/toJSON.js
 delete mode 100644 node_modules/lodash/chain/toString.js
 delete mode 100644 node_modules/lodash/chain/value.js
 delete mode 100644 node_modules/lodash/chain/valueOf.js
 delete mode 100644 node_modules/lodash/chain/wrapperChain.js
 delete mode 100644 node_modules/lodash/chain/wrapperCommit.js
 delete mode 100644 node_modules/lodash/chain/wrapperConcat.js
 delete mode 100644 node_modules/lodash/chain/wrapperPlant.js
 delete mode 100644 node_modules/lodash/chain/wrapperReverse.js
 delete mode 100644 node_modules/lodash/chain/wrapperToString.js
 delete mode 100644 node_modules/lodash/chain/wrapperValue.js
 delete mode 100644 node_modules/lodash/collection.js
 delete mode 100644 node_modules/lodash/collection/all.js
 delete mode 100644 node_modules/lodash/collection/any.js
 delete mode 100644 node_modules/lodash/collection/at.js
 delete mode 100644 node_modules/lodash/collection/collect.js
 delete mode 100644 node_modules/lodash/collection/contains.js
 delete mode 100644 node_modules/lodash/collection/countBy.js
 delete mode 100644 node_modules/lodash/collection/detect.js
 delete mode 100644 node_modules/lodash/collection/each.js
 delete mode 100644 node_modules/lodash/collection/eachRight.js
 delete mode 100644 node_modules/lodash/collection/every.js
 delete mode 100644 node_modules/lodash/collection/filter.js
 delete mode 100644 node_modules/lodash/collection/find.js
 delete mode 100644 node_modules/lodash/collection/findLast.js
 delete mode 100644 node_modules/lodash/collection/findWhere.js
 delete mode 100644 node_modules/lodash/collection/foldl.js
 delete mode 100644 node_modules/lodash/collection/foldr.js
 delete mode 100644 node_modules/lodash/collection/forEach.js
 delete mode 100644 node_modules/lodash/collection/forEachRight.js
 delete mode 100644 node_modules/lodash/collection/groupBy.js
 delete mode 100644 node_modules/lodash/collection/include.js
 delete mode 100644 node_modules/lodash/collection/includes.js
 delete mode 100644 node_modules/lodash/collection/indexBy.js
 delete mode 100644 node_modules/lodash/collection/inject.js
 delete mode 100644 node_modules/lodash/collection/invoke.js
 delete mode 100644 node_modules/lodash/collection/map.js
 delete mode 100644 node_modules/lodash/collection/max.js
 delete mode 100644 node_modules/lodash/collection/min.js
 delete mode 100644 node_modules/lodash/collection/partition.js
 delete mode 100644 node_modules/lodash/collection/pluck.js
 delete mode 100644 node_modules/lodash/collection/reduce.js
 delete mode 100644 node_modules/lodash/collection/reduceRight.js
 delete mode 100644 node_modules/lodash/collection/reject.js
 delete mode 100644 node_modules/lodash/collection/sample.js
 delete mode 100644 node_modules/lodash/collection/select.js
 delete mode 100644 node_modules/lodash/collection/shuffle.js
 delete mode 100644 node_modules/lodash/collection/size.js
 delete mode 100644 node_modules/lodash/collection/some.js
 delete mode 100644 node_modules/lodash/collection/sortBy.js
 delete mode 100644 node_modules/lodash/collection/sortByAll.js
 delete mode 100644 node_modules/lodash/collection/sortByOrder.js
 delete mode 100644 node_modules/lodash/collection/sum.js
 delete mode 100644 node_modules/lodash/collection/where.js
 delete mode 100644 node_modules/lodash/date.js
 delete mode 100644 node_modules/lodash/date/now.js
 delete mode 100644 node_modules/lodash/function.js
 delete mode 100644 node_modules/lodash/function/after.js
 delete mode 100644 node_modules/lodash/function/ary.js
 delete mode 100644 node_modules/lodash/function/backflow.js
 delete mode 100644 node_modules/lodash/function/before.js
 delete mode 100644 node_modules/lodash/function/bind.js
 delete mode 100644 node_modules/lodash/function/bindAll.js
 delete mode 100644 node_modules/lodash/function/bindKey.js
 delete mode 100644 node_modules/lodash/function/compose.js
 delete mode 100644 node_modules/lodash/function/curry.js
 delete mode 100644 node_modules/lodash/function/curryRight.js
 delete mode 100644 node_modules/lodash/function/debounce.js
 delete mode 100644 node_modules/lodash/function/defer.js
 delete mode 100644 node_modules/lodash/function/delay.js
 delete mode 100644 node_modules/lodash/function/flow.js
 delete mode 100644 node_modules/lodash/function/flowRight.js
 delete mode 100644 node_modules/lodash/function/memoize.js
 delete mode 100644 node_modules/lodash/function/modArgs.js
 delete mode 100644 node_modules/lodash/function/negate.js
 delete mode 100644 node_modules/lodash/function/once.js
 delete mode 100644 node_modules/lodash/function/partial.js
 delete mode 100644 node_modules/lodash/function/partialRight.js
 delete mode 100644 node_modules/lodash/function/rearg.js
 delete mode 100644 node_modules/lodash/function/restParam.js
 delete mode 100644 node_modules/lodash/function/spread.js
 delete mode 100644 node_modules/lodash/function/throttle.js
 delete mode 100644 node_modules/lodash/function/wrap.js
 delete mode 100644 node_modules/lodash/index.js
 delete mode 100644 node_modules/lodash/internal/LazyWrapper.js
 delete mode 100644 node_modules/lodash/internal/LodashWrapper.js
 delete mode 100644 node_modules/lodash/internal/MapCache.js
 delete mode 100644 node_modules/lodash/internal/SetCache.js
 delete mode 100644 node_modules/lodash/internal/arrayConcat.js
 delete mode 100644 node_modules/lodash/internal/arrayCopy.js
 delete mode 100644 node_modules/lodash/internal/arrayEach.js
 delete mode 100644 node_modules/lodash/internal/arrayEachRight.js
 delete mode 100644 node_modules/lodash/internal/arrayEvery.js
 delete mode 100644 node_modules/lodash/internal/arrayExtremum.js
 delete mode 100644 node_modules/lodash/internal/arrayFilter.js
 delete mode 100644 node_modules/lodash/internal/arrayMap.js
 delete mode 100644 node_modules/lodash/internal/arrayPush.js
 delete mode 100644 node_modules/lodash/internal/arrayReduce.js
 delete mode 100644 node_modules/lodash/internal/arrayReduceRight.js
 delete mode 100644 node_modules/lodash/internal/arraySome.js
 delete mode 100644 node_modules/lodash/internal/arraySum.js
 delete mode 100644 node_modules/lodash/internal/assignDefaults.js
 delete mode 100644 node_modules/lodash/internal/assignOwnDefaults.js
 delete mode 100644 node_modules/lodash/internal/assignWith.js
 delete mode 100644 node_modules/lodash/internal/baseAssign.js
 delete mode 100644 node_modules/lodash/internal/baseAt.js
 delete mode 100644 node_modules/lodash/internal/baseCallback.js
 delete mode 100644 node_modules/lodash/internal/baseClone.js
 delete mode 100644 node_modules/lodash/internal/baseCompareAscending.js
 delete mode 100644 node_modules/lodash/internal/baseCopy.js
 delete mode 100644 node_modules/lodash/internal/baseCreate.js
 delete mode 100644 node_modules/lodash/internal/baseDelay.js
 delete mode 100644 node_modules/lodash/internal/baseDifference.js
 delete mode 100644 node_modules/lodash/internal/baseEach.js
 delete mode 100644 node_modules/lodash/internal/baseEachRight.js
 delete mode 100644 node_modules/lodash/internal/baseEvery.js
 delete mode 100644 node_modules/lodash/internal/baseExtremum.js
 delete mode 100644 node_modules/lodash/internal/baseFill.js
 delete mode 100644 node_modules/lodash/internal/baseFilter.js
 delete mode 100644 node_modules/lodash/internal/baseFind.js
 delete mode 100644 node_modules/lodash/internal/baseFindIndex.js
 delete mode 100644 node_modules/lodash/internal/baseFlatten.js
 delete mode 100644 node_modules/lodash/internal/baseFor.js
 delete mode 100644 node_modules/lodash/internal/baseForIn.js
 delete mode 100644 node_modules/lodash/internal/baseForOwn.js
 delete mode 100644 node_modules/lodash/internal/baseForOwnRight.js
 delete mode 100644 node_modules/lodash/internal/baseForRight.js
 delete mode 100644 node_modules/lodash/internal/baseFunctions.js
 delete mode 100644 node_modules/lodash/internal/baseGet.js
 delete mode 100644 node_modules/lodash/internal/baseIndexOf.js
 delete mode 100644 node_modules/lodash/internal/baseIsEqual.js
 delete mode 100644 node_modules/lodash/internal/baseIsEqualDeep.js
 delete mode 100644 node_modules/lodash/internal/baseIsFunction.js
 delete mode 100644 node_modules/lodash/internal/baseIsMatch.js
 delete mode 100644 node_modules/lodash/internal/baseLodash.js
 delete mode 100644 node_modules/lodash/internal/baseMap.js
 delete mode 100644 node_modules/lodash/internal/baseMatches.js
 delete mode 100644 node_modules/lodash/internal/baseMatchesProperty.js
 delete mode 100644 node_modules/lodash/internal/baseMerge.js
 delete mode 100644 node_modules/lodash/internal/baseMergeDeep.js
 delete mode 100644 node_modules/lodash/internal/baseProperty.js
 delete mode 100644 node_modules/lodash/internal/basePropertyDeep.js
 delete mode 100644 node_modules/lodash/internal/basePullAt.js
 delete mode 100644 node_modules/lodash/internal/baseRandom.js
 delete mode 100644 node_modules/lodash/internal/baseReduce.js
 delete mode 100644 node_modules/lodash/internal/baseSetData.js
 delete mode 100644 node_modules/lodash/internal/baseSlice.js
 delete mode 100644 node_modules/lodash/internal/baseSome.js
 delete mode 100644 node_modules/lodash/internal/baseSortBy.js
 delete mode 100644 node_modules/lodash/internal/baseSortByOrder.js
 delete mode 100644 node_modules/lodash/internal/baseSum.js
 delete mode 100644 node_modules/lodash/internal/baseToString.js
 delete mode 100644 node_modules/lodash/internal/baseUniq.js
 delete mode 100644 node_modules/lodash/internal/baseValues.js
 delete mode 100644 node_modules/lodash/internal/baseWhile.js
 delete mode 100644 node_modules/lodash/internal/baseWrapperValue.js
 delete mode 100644 node_modules/lodash/internal/binaryIndex.js
 delete mode 100644 node_modules/lodash/internal/binaryIndexBy.js
 delete mode 100644 node_modules/lodash/internal/bindCallback.js
 delete mode 100644 node_modules/lodash/internal/bufferClone.js
 delete mode 100644 node_modules/lodash/internal/cacheIndexOf.js
 delete mode 100644 node_modules/lodash/internal/cachePush.js
 delete mode 100644 node_modules/lodash/internal/charsLeftIndex.js
 delete mode 100644 node_modules/lodash/internal/charsRightIndex.js
 delete mode 100644 node_modules/lodash/internal/compareAscending.js
 delete mode 100644 node_modules/lodash/internal/compareMultiple.js
 delete mode 100644 node_modules/lodash/internal/composeArgs.js
 delete mode 100644 node_modules/lodash/internal/composeArgsRight.js
 delete mode 100644 node_modules/lodash/internal/createAggregator.js
 delete mode 100644 node_modules/lodash/internal/createAssigner.js
 delete mode 100644 node_modules/lodash/internal/createBaseEach.js
 delete mode 100644 node_modules/lodash/internal/createBaseFor.js
 delete mode 100644 node_modules/lodash/internal/createBindWrapper.js
 delete mode 100644 node_modules/lodash/internal/createCache.js
 delete mode 100644 node_modules/lodash/internal/createCompounder.js
 delete mode 100644 node_modules/lodash/internal/createCtorWrapper.js
 delete mode 100644 node_modules/lodash/internal/createCurry.js
 delete mode 100644 node_modules/lodash/internal/createDefaults.js
 delete mode 100644 node_modules/lodash/internal/createExtremum.js
 delete mode 100644 node_modules/lodash/internal/createFind.js
 delete mode 100644 node_modules/lodash/internal/createFindIndex.js
 delete mode 100644 node_modules/lodash/internal/createFindKey.js
 delete mode 100644 node_modules/lodash/internal/createFlow.js
 delete mode 100644 node_modules/lodash/internal/createForEach.js
 delete mode 100644 node_modules/lodash/internal/createForIn.js
 delete mode 100644 node_modules/lodash/internal/createForOwn.js
 delete mode 100644 node_modules/lodash/internal/createHybridWrapper.js
 delete mode 100644 node_modules/lodash/internal/createObjectMapper.js
 delete mode 100644 node_modules/lodash/internal/createPadDir.js
 delete mode 100644 node_modules/lodash/internal/createPadding.js
 delete mode 100644 node_modules/lodash/internal/createPartial.js
 delete mode 100644 node_modules/lodash/internal/createPartialWrapper.js
 delete mode 100644 node_modules/lodash/internal/createReduce.js
 delete mode 100644 node_modules/lodash/internal/createRound.js
 delete mode 100644 node_modules/lodash/internal/createSortedIndex.js
 delete mode 100644 node_modules/lodash/internal/createWrapper.js
 delete mode 100644 node_modules/lodash/internal/deburrLetter.js
 delete mode 100644 node_modules/lodash/internal/equalArrays.js
 delete mode 100644 node_modules/lodash/internal/equalByTag.js
 delete mode 100644 node_modules/lodash/internal/equalObjects.js
 delete mode 100644 node_modules/lodash/internal/escapeHtmlChar.js
 delete mode 100644 node_modules/lodash/internal/escapeRegExpChar.js
 delete mode 100644 node_modules/lodash/internal/escapeStringChar.js
 delete mode 100644 node_modules/lodash/internal/getData.js
 delete mode 100644 node_modules/lodash/internal/getFuncName.js
 delete mode 100644 node_modules/lodash/internal/getLength.js
 delete mode 100644 node_modules/lodash/internal/getMatchData.js
 delete mode 100644 node_modules/lodash/internal/getNative.js
 delete mode 100644 node_modules/lodash/internal/getView.js
 delete mode 100644 node_modules/lodash/internal/indexOfNaN.js
 delete mode 100644 node_modules/lodash/internal/initCloneArray.js
 delete mode 100644 node_modules/lodash/internal/initCloneByTag.js
 delete mode 100644 node_modules/lodash/internal/initCloneObject.js
 delete mode 100644 node_modules/lodash/internal/invokePath.js
 delete mode 100644 node_modules/lodash/internal/isArrayLike.js
 delete mode 100644 node_modules/lodash/internal/isIndex.js
 delete mode 100644 node_modules/lodash/internal/isIterateeCall.js
 delete mode 100644 node_modules/lodash/internal/isKey.js
 delete mode 100644 node_modules/lodash/internal/isLaziable.js
 delete mode 100644 node_modules/lodash/internal/isLength.js
 delete mode 100644 node_modules/lodash/internal/isObjectLike.js
 delete mode 100644 node_modules/lodash/internal/isSpace.js
 delete mode 100644 node_modules/lodash/internal/isStrictComparable.js
 delete mode 100644 node_modules/lodash/internal/lazyClone.js
 delete mode 100644 node_modules/lodash/internal/lazyReverse.js
 delete mode 100644 node_modules/lodash/internal/lazyValue.js
 delete mode 100644 node_modules/lodash/internal/mapDelete.js
 delete mode 100644 node_modules/lodash/internal/mapGet.js
 delete mode 100644 node_modules/lodash/internal/mapHas.js
 delete mode 100644 node_modules/lodash/internal/mapSet.js
 delete mode 100644 node_modules/lodash/internal/mergeData.js
 delete mode 100644 node_modules/lodash/internal/mergeDefaults.js
 delete mode 100644 node_modules/lodash/internal/metaMap.js
 delete mode 100644 node_modules/lodash/internal/pickByArray.js
 delete mode 100644 node_modules/lodash/internal/pickByCallback.js
 delete mode 100644 node_modules/lodash/internal/reEscape.js
 delete mode 100644 node_modules/lodash/internal/reEvaluate.js
 delete mode 100644 node_modules/lodash/internal/reInterpolate.js
 delete mode 100644 node_modules/lodash/internal/realNames.js
 delete mode 100644 node_modules/lodash/internal/reorder.js
 delete mode 100644 node_modules/lodash/internal/replaceHolders.js
 delete mode 100644 node_modules/lodash/internal/setData.js
 delete mode 100644 node_modules/lodash/internal/shimKeys.js
 delete mode 100644 node_modules/lodash/internal/sortedUniq.js
 delete mode 100644 node_modules/lodash/internal/toIterable.js
 delete mode 100644 node_modules/lodash/internal/toObject.js
 delete mode 100644 node_modules/lodash/internal/toPath.js
 delete mode 100644 node_modules/lodash/internal/trimmedLeftIndex.js
 delete mode 100644 node_modules/lodash/internal/trimmedRightIndex.js
 delete mode 100644 node_modules/lodash/internal/unescapeHtmlChar.js
 delete mode 100644 node_modules/lodash/internal/wrapperClone.js
 delete mode 100644 node_modules/lodash/lang.js
 delete mode 100644 node_modules/lodash/lang/clone.js
 delete mode 100644 node_modules/lodash/lang/cloneDeep.js
 delete mode 100644 node_modules/lodash/lang/eq.js
 delete mode 100644 node_modules/lodash/lang/gt.js
 delete mode 100644 node_modules/lodash/lang/gte.js
 delete mode 100644 node_modules/lodash/lang/isArguments.js
 delete mode 100644 node_modules/lodash/lang/isArray.js
 delete mode 100644 node_modules/lodash/lang/isBoolean.js
 delete mode 100644 node_modules/lodash/lang/isDate.js
 delete mode 100644 node_modules/lodash/lang/isElement.js
 delete mode 100644 node_modules/lodash/lang/isEmpty.js
 delete mode 100644 node_modules/lodash/lang/isEqual.js
 delete mode 100644 node_modules/lodash/lang/isError.js
 delete mode 100644 node_modules/lodash/lang/isFinite.js
 delete mode 100644 node_modules/lodash/lang/isFunction.js
 delete mode 100644 node_modules/lodash/lang/isMatch.js
 delete mode 100644 node_modules/lodash/lang/isNaN.js
 delete mode 100644 node_modules/lodash/lang/isNative.js
 delete mode 100644 node_modules/lodash/lang/isNull.js
 delete mode 100644 node_modules/lodash/lang/isNumber.js
 delete mode 100644 node_modules/lodash/lang/isObject.js
 delete mode 100644 node_modules/lodash/lang/isPlainObject.js
 delete mode 100644 node_modules/lodash/lang/isRegExp.js
 delete mode 100644 node_modules/lodash/lang/isString.js
 delete mode 100644 node_modules/lodash/lang/isTypedArray.js
 delete mode 100644 node_modules/lodash/lang/isUndefined.js
 delete mode 100644 node_modules/lodash/lang/lt.js
 delete mode 100644 node_modules/lodash/lang/lte.js
 delete mode 100644 node_modules/lodash/lang/toArray.js
 delete mode 100644 node_modules/lodash/lang/toPlainObject.js
 delete mode 100644 node_modules/lodash/math.js
 delete mode 100644 node_modules/lodash/math/add.js
 delete mode 100644 node_modules/lodash/math/ceil.js
 delete mode 100644 node_modules/lodash/math/floor.js
 delete mode 100644 node_modules/lodash/math/max.js
 delete mode 100644 node_modules/lodash/math/min.js
 delete mode 100644 node_modules/lodash/math/round.js
 delete mode 100644 node_modules/lodash/math/sum.js
 delete mode 100644 node_modules/lodash/number.js
 delete mode 100644 node_modules/lodash/number/inRange.js
 delete mode 100644 node_modules/lodash/number/random.js
 delete mode 100644 node_modules/lodash/object.js
 delete mode 100644 node_modules/lodash/object/assign.js
 delete mode 100644 node_modules/lodash/object/create.js
 delete mode 100644 node_modules/lodash/object/defaults.js
 delete mode 100644 node_modules/lodash/object/defaultsDeep.js
 delete mode 100644 node_modules/lodash/object/extend.js
 delete mode 100644 node_modules/lodash/object/findKey.js
 delete mode 100644 node_modules/lodash/object/findLastKey.js
 delete mode 100644 node_modules/lodash/object/forIn.js
 delete mode 100644 node_modules/lodash/object/forInRight.js
 delete mode 100644 node_modules/lodash/object/forOwn.js
 delete mode 100644 node_modules/lodash/object/forOwnRight.js
 delete mode 100644 node_modules/lodash/object/functions.js
 delete mode 100644 node_modules/lodash/object/get.js
 delete mode 100644 node_modules/lodash/object/has.js
 delete mode 100644 node_modules/lodash/object/invert.js
 delete mode 100644 node_modules/lodash/object/keys.js
 delete mode 100644 node_modules/lodash/object/keysIn.js
 delete mode 100644 node_modules/lodash/object/mapKeys.js
 delete mode 100644 node_modules/lodash/object/mapValues.js
 delete mode 100644 node_modules/lodash/object/merge.js
 delete mode 100644 node_modules/lodash/object/methods.js
 delete mode 100644 node_modules/lodash/object/omit.js
 delete mode 100644 node_modules/lodash/object/pairs.js
 delete mode 100644 node_modules/lodash/object/pick.js
 delete mode 100644 node_modules/lodash/object/result.js
 delete mode 100644 node_modules/lodash/object/set.js
 delete mode 100644 node_modules/lodash/object/transform.js
 delete mode 100644 node_modules/lodash/object/values.js
 delete mode 100644 node_modules/lodash/object/valuesIn.js
 delete mode 100644 node_modules/lodash/package.json
 delete mode 100644 node_modules/lodash/string.js
 delete mode 100644 node_modules/lodash/string/camelCase.js
 delete mode 100644 node_modules/lodash/string/capitalize.js
 delete mode 100644 node_modules/lodash/string/deburr.js
 delete mode 100644 node_modules/lodash/string/endsWith.js
 delete mode 100644 node_modules/lodash/string/escape.js
 delete mode 100644 node_modules/lodash/string/escapeRegExp.js
 delete mode 100644 node_modules/lodash/string/kebabCase.js
 delete mode 100644 node_modules/lodash/string/pad.js
 delete mode 100644 node_modules/lodash/string/padLeft.js
 delete mode 100644 node_modules/lodash/string/padRight.js
 delete mode 100644 node_modules/lodash/string/parseInt.js
 delete mode 100644 node_modules/lodash/string/repeat.js
 delete mode 100644 node_modules/lodash/string/snakeCase.js
 delete mode 100644 node_modules/lodash/string/startCase.js
 delete mode 100644 node_modules/lodash/string/startsWith.js
 delete mode 100644 node_modules/lodash/string/template.js
 delete mode 100644 node_modules/lodash/string/templateSettings.js
 delete mode 100644 node_modules/lodash/string/trim.js
 delete mode 100644 node_modules/lodash/string/trimLeft.js
 delete mode 100644 node_modules/lodash/string/trimRight.js
 delete mode 100644 node_modules/lodash/string/trunc.js
 delete mode 100644 node_modules/lodash/string/unescape.js
 delete mode 100644 node_modules/lodash/string/words.js
 delete mode 100644 node_modules/lodash/support.js
 delete mode 100644 node_modules/lodash/utility.js
 delete mode 100644 node_modules/lodash/utility/attempt.js
 delete mode 100644 node_modules/lodash/utility/callback.js
 delete mode 100644 node_modules/lodash/utility/constant.js
 delete mode 100644 node_modules/lodash/utility/identity.js
 delete mode 100644 node_modules/lodash/utility/iteratee.js
 delete mode 100644 node_modules/lodash/utility/matches.js
 delete mode 100644 node_modules/lodash/utility/matchesProperty.js
 delete mode 100644 node_modules/lodash/utility/method.js
 delete mode 100644 node_modules/lodash/utility/methodOf.js
 delete mode 100644 node_modules/lodash/utility/mixin.js
 delete mode 100644 node_modules/lodash/utility/noop.js
 delete mode 100644 node_modules/lodash/utility/property.js
 delete mode 100644 node_modules/lodash/utility/propertyOf.js
 delete mode 100644 node_modules/lodash/utility/range.js
 delete mode 100644 node_modules/lodash/utility/times.js
 delete mode 100644 node_modules/lodash/utility/uniqueId.js
 delete mode 100644 node_modules/os-homedir/index.js
 delete mode 100644 node_modules/os-homedir/license
 delete mode 100644 node_modules/os-homedir/package.json
 delete mode 100644 node_modules/os-homedir/readme.md
 delete mode 100644 node_modules/os-tmpdir/index.js
 delete mode 100644 node_modules/os-tmpdir/package.json
 delete mode 100644 node_modules/os-tmpdir/readme.md
 delete mode 100644 node_modules/osenv/.npmignore
 delete mode 100644 node_modules/osenv/.travis.yml
 delete mode 100644 node_modules/osenv/LICENSE
 delete mode 100644 node_modules/osenv/README.md
 delete mode 100644 node_modules/osenv/osenv.js
 delete mode 100644 node_modules/osenv/package.json
 delete mode 100644 node_modules/osenv/test/unix.js
 delete mode 100644 node_modules/osenv/test/windows.js
 delete mode 100644 node_modules/osenv/x.tap
 create mode 100644 node_modules/plist/index.js
 delete mode 100644 node_modules/plist/lib/node.js
 delete mode 100644 node_modules/plist/lib/plist.js
 delete mode 100644 node_modules/sax/AUTHORS
 delete mode 100644 node_modules/sax/LICENSE
 delete mode 100644 node_modules/sax/README.md
 delete mode 100644 node_modules/sax/examples/big-not-pretty.xml
 delete mode 100644 node_modules/sax/examples/example.js
 delete mode 100644 node_modules/sax/examples/get-products.js
 delete mode 100644 node_modules/sax/examples/hello-world.js
 delete mode 100644 node_modules/sax/examples/not-pretty.xml
 delete mode 100644 node_modules/sax/examples/pretty-print.js
 delete mode 100644 node_modules/sax/examples/shopping.xml
 delete mode 100644 node_modules/sax/examples/strict.dtd
 delete mode 100755 node_modules/sax/examples/switch-bench.js
 delete mode 100644 node_modules/sax/examples/test.html
 delete mode 100644 node_modules/sax/examples/test.xml
 delete mode 100644 node_modules/sax/lib/sax.js
 delete mode 100644 node_modules/sax/package.json
 delete mode 100644 node_modules/sax/test/buffer-overrun.js
 delete mode 100644 node_modules/sax/test/cdata-chunked.js
 delete mode 100644 node_modules/sax/test/cdata-end-split.js
 delete mode 100644 node_modules/sax/test/cdata-fake-end.js
 delete mode 100644 node_modules/sax/test/cdata-multiple.js
 delete mode 100644 node_modules/sax/test/cdata.js
 delete mode 100644 node_modules/sax/test/index.js
 delete mode 100644 node_modules/sax/test/issue-23.js
 delete mode 100644 node_modules/sax/test/issue-30.js
 delete mode 100644 node_modules/sax/test/issue-35.js
 delete mode 100644 node_modules/sax/test/issue-47.js
 delete mode 100644 node_modules/sax/test/issue-49.js
 delete mode 100644 node_modules/sax/test/parser-position.js
 delete mode 100644 node_modules/sax/test/script.js
 delete mode 100644 node_modules/sax/test/self-closing-child-strict.js
 delete mode 100644 node_modules/sax/test/self-closing-child.js
 delete mode 100644 node_modules/sax/test/self-closing-tag.js
 delete mode 100644 node_modules/sax/test/stray-ending.js
 delete mode 100644 node_modules/sax/test/trailing-non-whitespace.js
 delete mode 100644 node_modules/sax/test/unquoted.js
 delete mode 100644 node_modules/sax/test/xmlns-issue-41.js
 delete mode 100644 node_modules/sax/test/xmlns-rebinding.js
 delete mode 100644 node_modules/sax/test/xmlns-strict.js
 delete mode 100644 node_modules/sax/test/xmlns-unbound.js
 delete mode 100644 node_modules/sax/test/xmlns-xml-default-prefix-attribute.js
 delete mode 100644 node_modules/sax/test/xmlns-xml-default-prefix.js
 delete mode 100644 node_modules/sax/test/xmlns-xml-default-redefine.js
 create mode 100644 node_modules/strip-bom/index.js
 rename node_modules/{os-tmpdir => strip-bom}/license (100%)
 create mode 100644 node_modules/strip-bom/package.json
 create mode 100644 node_modules/strip-bom/readme.md
 create mode 100644 node_modules/underscore/underscore-min.js.map
 delete mode 100644 node_modules/underscore/underscore-min.map
 delete mode 100644 node_modules/unorm/LICENSE.md
 delete mode 100644 node_modules/unorm/README.md
 delete mode 100644 node_modules/unorm/lib/unorm.js
 delete mode 100644 node_modules/unorm/package.json
 delete mode 100644 node_modules/util-deprecate/History.md
 delete mode 100644 node_modules/util-deprecate/LICENSE
 delete mode 100644 node_modules/util-deprecate/README.md
 delete mode 100644 node_modules/util-deprecate/browser.js
 delete mode 100644 node_modules/util-deprecate/node.js
 delete mode 100644 node_modules/util-deprecate/package.json
 create mode 100644 node_modules/xmlbuilder/CHANGELOG.md
 create mode 100644 node_modules/xmlbuilder/lib/Utility.js
 delete mode 100644 node_modules/xmlbuilder/lib/XMLBuilder.js
 create mode 100644 node_modules/xmlbuilder/lib/XMLDocument.js
 create mode 100644 node_modules/xmlbuilder/lib/XMLDocumentCB.js
 create mode 100644 node_modules/xmlbuilder/lib/XMLStreamWriter.js
 create mode 100644 node_modules/xmlbuilder/lib/XMLStringWriter.js
 create mode 100644 node_modules/xmlbuilder/lib/XMLWriterBase.js

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[cordova-windows] 03/05: [squash] add node_modules/fs.realpath

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit 53ca1a31dc618e33d9618c7dc2718298f63d9ac6
Author: Christopher J. Brody <br...@litehelpers.net>
AuthorDate: Wed Jun 13 18:41:51 2018 -0400

    [squash] add node_modules/fs.realpath
---
 .gitignore                            |   1 -
 node_modules/fs.realpath/LICENSE      |  43 +++++
 node_modules/fs.realpath/README.md    |  33 ++++
 node_modules/fs.realpath/index.js     |  66 ++++++++
 node_modules/fs.realpath/old.js       | 303 ++++++++++++++++++++++++++++++++++
 node_modules/fs.realpath/package.json |  59 +++++++
 6 files changed, 504 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 198f042..7e7b59e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,7 +43,6 @@ node_modules/esutils/
 node_modules/exit/
 node_modules/fast-levenshtein/
 node_modules/fileset/
-node_modules/fs.realpath/
 node_modules/gaze/
 node_modules/growl/
 node_modules/handlebars/
diff --git a/node_modules/fs.realpath/LICENSE b/node_modules/fs.realpath/LICENSE
new file mode 100644
index 0000000..5bd884c
--- /dev/null
+++ b/node_modules/fs.realpath/LICENSE
@@ -0,0 +1,43 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+----
+
+This library bundles a version of the `fs.realpath` and `fs.realpathSync`
+methods from Node.js v0.10 under the terms of the Node.js MIT license.
+
+Node's license follows, also included at the header of `old.js` which contains
+the licensed code:
+
+  Copyright Joyent, Inc. and other Node contributors.
+
+  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.
diff --git a/node_modules/fs.realpath/README.md b/node_modules/fs.realpath/README.md
new file mode 100644
index 0000000..a42ceac
--- /dev/null
+++ b/node_modules/fs.realpath/README.md
@@ -0,0 +1,33 @@
+# fs.realpath
+
+A backwards-compatible fs.realpath for Node v6 and above
+
+In Node v6, the JavaScript implementation of fs.realpath was replaced
+with a faster (but less resilient) native implementation.  That raises
+new and platform-specific errors and cannot handle long or excessively
+symlink-looping paths.
+
+This module handles those cases by detecting the new errors and
+falling back to the JavaScript implementation.  On versions of Node
+prior to v6, it has no effect.
+
+## USAGE
+
+```js
+var rp = require('fs.realpath')
+
+// async version
+rp.realpath(someLongAndLoopingPath, function (er, real) {
+  // the ELOOP was handled, but it was a bit slower
+})
+
+// sync version
+var real = rp.realpathSync(someLongAndLoopingPath)
+
+// monkeypatch at your own risk!
+// This replaces the fs.realpath/fs.realpathSync builtins
+rp.monkeypatch()
+
+// un-do the monkeypatching
+rp.unmonkeypatch()
+```
diff --git a/node_modules/fs.realpath/index.js b/node_modules/fs.realpath/index.js
new file mode 100644
index 0000000..b09c7c7
--- /dev/null
+++ b/node_modules/fs.realpath/index.js
@@ -0,0 +1,66 @@
+module.exports = realpath
+realpath.realpath = realpath
+realpath.sync = realpathSync
+realpath.realpathSync = realpathSync
+realpath.monkeypatch = monkeypatch
+realpath.unmonkeypatch = unmonkeypatch
+
+var fs = require('fs')
+var origRealpath = fs.realpath
+var origRealpathSync = fs.realpathSync
+
+var version = process.version
+var ok = /^v[0-5]\./.test(version)
+var old = require('./old.js')
+
+function newError (er) {
+  return er && er.syscall === 'realpath' && (
+    er.code === 'ELOOP' ||
+    er.code === 'ENOMEM' ||
+    er.code === 'ENAMETOOLONG'
+  )
+}
+
+function realpath (p, cache, cb) {
+  if (ok) {
+    return origRealpath(p, cache, cb)
+  }
+
+  if (typeof cache === 'function') {
+    cb = cache
+    cache = null
+  }
+  origRealpath(p, cache, function (er, result) {
+    if (newError(er)) {
+      old.realpath(p, cache, cb)
+    } else {
+      cb(er, result)
+    }
+  })
+}
+
+function realpathSync (p, cache) {
+  if (ok) {
+    return origRealpathSync(p, cache)
+  }
+
+  try {
+    return origRealpathSync(p, cache)
+  } catch (er) {
+    if (newError(er)) {
+      return old.realpathSync(p, cache)
+    } else {
+      throw er
+    }
+  }
+}
+
+function monkeypatch () {
+  fs.realpath = realpath
+  fs.realpathSync = realpathSync
+}
+
+function unmonkeypatch () {
+  fs.realpath = origRealpath
+  fs.realpathSync = origRealpathSync
+}
diff --git a/node_modules/fs.realpath/old.js b/node_modules/fs.realpath/old.js
new file mode 100644
index 0000000..b40305e
--- /dev/null
+++ b/node_modules/fs.realpath/old.js
@@ -0,0 +1,303 @@
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// 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.
+
+var pathModule = require('path');
+var isWindows = process.platform === 'win32';
+var fs = require('fs');
+
+// JavaScript implementation of realpath, ported from node pre-v6
+
+var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
+
+function rethrow() {
+  // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
+  // is fairly slow to generate.
+  var callback;
+  if (DEBUG) {
+    var backtrace = new Error;
+    callback = debugCallback;
+  } else
+    callback = missingCallback;
+
+  return callback;
+
+  function debugCallback(err) {
+    if (err) {
+      backtrace.message = err.message;
+      err = backtrace;
+      missingCallback(err);
+    }
+  }
+
+  function missingCallback(err) {
+    if (err) {
+      if (process.throwDeprecation)
+        throw err;  // Forgot a callback but don't know where? Use NODE_DEBUG=fs
+      else if (!process.noDeprecation) {
+        var msg = 'fs: missing callback ' + (err.stack || err.message);
+        if (process.traceDeprecation)
+          console.trace(msg);
+        else
+          console.error(msg);
+      }
+    }
+  }
+}
+
+function maybeCallback(cb) {
+  return typeof cb === 'function' ? cb : rethrow();
+}
+
+var normalize = pathModule.normalize;
+
+// Regexp that finds the next partion of a (partial) path
+// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
+if (isWindows) {
+  var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
+} else {
+  var nextPartRe = /(.*?)(?:[\/]+|$)/g;
+}
+
+// Regex to find the device root, including trailing slash. E.g. 'c:\\'.
+if (isWindows) {
+  var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
+} else {
+  var splitRootRe = /^[\/]*/;
+}
+
+exports.realpathSync = function realpathSync(p, cache) {
+  // make p is absolute
+  p = pathModule.resolve(p);
+
+  if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+    return cache[p];
+  }
+
+  var original = p,
+      seenLinks = {},
+      knownHard = {};
+
+  // current character position in p
+  var pos;
+  // the partial path so far, including a trailing slash if any
+  var current;
+  // the partial path without a trailing slash (except when pointing at a root)
+  var base;
+  // the partial path scanned in the previous round, with slash
+  var previous;
+
+  start();
+
+  function start() {
+    // Skip over roots
+    var m = splitRootRe.exec(p);
+    pos = m[0].length;
+    current = m[0];
+    base = m[0];
+    previous = '';
+
+    // On windows, check that the root exists. On unix there is no need.
+    if (isWindows && !knownHard[base]) {
+      fs.lstatSync(base);
+      knownHard[base] = true;
+    }
+  }
+
+  // walk down the path, swapping out linked pathparts for their real
+  // values
+  // NB: p.length changes.
+  while (pos < p.length) {
+    // find the next part
+    nextPartRe.lastIndex = pos;
+    var result = nextPartRe.exec(p);
+    previous = current;
+    current += result[0];
+    base = previous + result[1];
+    pos = nextPartRe.lastIndex;
+
+    // continue if not a symlink
+    if (knownHard[base] || (cache && cache[base] === base)) {
+      continue;
+    }
+
+    var resolvedLink;
+    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+      // some known symbolic link.  no need to stat again.
+      resolvedLink = cache[base];
+    } else {
+      var stat = fs.lstatSync(base);
+      if (!stat.isSymbolicLink()) {
+        knownHard[base] = true;
+        if (cache) cache[base] = base;
+        continue;
+      }
+
+      // read the link if it wasn't read before
+      // dev/ino always return 0 on windows, so skip the check.
+      var linkTarget = null;
+      if (!isWindows) {
+        var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+        if (seenLinks.hasOwnProperty(id)) {
+          linkTarget = seenLinks[id];
+        }
+      }
+      if (linkTarget === null) {
+        fs.statSync(base);
+        linkTarget = fs.readlinkSync(base);
+      }
+      resolvedLink = pathModule.resolve(previous, linkTarget);
+      // track this, if given a cache.
+      if (cache) cache[base] = resolvedLink;
+      if (!isWindows) seenLinks[id] = linkTarget;
+    }
+
+    // resolve the link, then start over
+    p = pathModule.resolve(resolvedLink, p.slice(pos));
+    start();
+  }
+
+  if (cache) cache[original] = p;
+
+  return p;
+};
+
+
+exports.realpath = function realpath(p, cache, cb) {
+  if (typeof cb !== 'function') {
+    cb = maybeCallback(cache);
+    cache = null;
+  }
+
+  // make p is absolute
+  p = pathModule.resolve(p);
+
+  if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+    return process.nextTick(cb.bind(null, null, cache[p]));
+  }
+
+  var original = p,
+      seenLinks = {},
+      knownHard = {};
+
+  // current character position in p
+  var pos;
+  // the partial path so far, including a trailing slash if any
+  var current;
+  // the partial path without a trailing slash (except when pointing at a root)
+  var base;
+  // the partial path scanned in the previous round, with slash
+  var previous;
+
+  start();
+
+  function start() {
+    // Skip over roots
+    var m = splitRootRe.exec(p);
+    pos = m[0].length;
+    current = m[0];
+    base = m[0];
+    previous = '';
+
+    // On windows, check that the root exists. On unix there is no need.
+    if (isWindows && !knownHard[base]) {
+      fs.lstat(base, function(err) {
+        if (err) return cb(err);
+        knownHard[base] = true;
+        LOOP();
+      });
+    } else {
+      process.nextTick(LOOP);
+    }
+  }
+
+  // walk down the path, swapping out linked pathparts for their real
+  // values
+  function LOOP() {
+    // stop if scanned past end of path
+    if (pos >= p.length) {
+      if (cache) cache[original] = p;
+      return cb(null, p);
+    }
+
+    // find the next part
+    nextPartRe.lastIndex = pos;
+    var result = nextPartRe.exec(p);
+    previous = current;
+    current += result[0];
+    base = previous + result[1];
+    pos = nextPartRe.lastIndex;
+
+    // continue if not a symlink
+    if (knownHard[base] || (cache && cache[base] === base)) {
+      return process.nextTick(LOOP);
+    }
+
+    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+      // known symbolic link.  no need to stat again.
+      return gotResolvedLink(cache[base]);
+    }
+
+    return fs.lstat(base, gotStat);
+  }
+
+  function gotStat(err, stat) {
+    if (err) return cb(err);
+
+    // if not a symlink, skip to the next path part
+    if (!stat.isSymbolicLink()) {
+      knownHard[base] = true;
+      if (cache) cache[base] = base;
+      return process.nextTick(LOOP);
+    }
+
+    // stat & read the link if not read before
+    // call gotTarget as soon as the link target is known
+    // dev/ino always return 0 on windows, so skip the check.
+    if (!isWindows) {
+      var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+      if (seenLinks.hasOwnProperty(id)) {
+        return gotTarget(null, seenLinks[id], base);
+      }
+    }
+    fs.stat(base, function(err) {
+      if (err) return cb(err);
+
+      fs.readlink(base, function(err, target) {
+        if (!isWindows) seenLinks[id] = target;
+        gotTarget(err, target);
+      });
+    });
+  }
+
+  function gotTarget(err, target, base) {
+    if (err) return cb(err);
+
+    var resolvedLink = pathModule.resolve(previous, target);
+    if (cache) cache[base] = resolvedLink;
+    gotResolvedLink(resolvedLink);
+  }
+
+  function gotResolvedLink(resolvedLink) {
+    // resolve the link, then start over
+    p = pathModule.resolve(resolvedLink, p.slice(pos));
+    start();
+  }
+};
diff --git a/node_modules/fs.realpath/package.json b/node_modules/fs.realpath/package.json
new file mode 100644
index 0000000..3fa8b88
--- /dev/null
+++ b/node_modules/fs.realpath/package.json
@@ -0,0 +1,59 @@
+{
+  "_from": "fs.realpath@^1.0.0",
+  "_id": "fs.realpath@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+  "_location": "/fs.realpath",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "fs.realpath@^1.0.0",
+    "name": "fs.realpath",
+    "escapedName": "fs.realpath",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+  "_shasum": "1504ad2523158caa40db4a2787cb01411994ea4f",
+  "_spec": "fs.realpath@^1.0.0",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/glob",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/fs.realpath/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
+  "devDependencies": {},
+  "files": [
+    "old.js",
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/fs.realpath#readme",
+  "keywords": [
+    "realpath",
+    "fs",
+    "polyfill"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "fs.realpath",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/fs.realpath.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js --cov"
+  },
+  "version": "1.0.0"
+}

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[cordova-windows] 02/05: update to cordova-common@2.2.3

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit 67a9039cdc6251be921424b80e9e45608861cb65
Author: Christopher J. Brody <br...@litehelpers.net>
AuthorDate: Wed Jun 13 18:40:48 2018 -0400

    update to cordova-common@2.2.3
---
 node_modules/balanced-match/index.js               |     1 +
 node_modules/balanced-match/package.json           |    33 +-
 node_modules/base64-js/.travis.yml                 |     5 -
 node_modules/base64-js/{LICENSE.MIT => LICENSE}    |     0
 node_modules/base64-js/README.md                   |    13 +-
 node_modules/base64-js/base64js.min.js             |     1 +
 node_modules/base64-js/bench/bench.js              |    19 -
 node_modules/base64-js/index.js                    |   151 +
 node_modules/base64-js/lib/b64.js                  |   124 -
 node_modules/base64-js/package.json                |    70 +-
 node_modules/base64-js/test/big-data.js            |    25 +
 node_modules/base64-js/test/convert.js             |   115 +-
 node_modules/base64-js/test/corrupt.js             |    10 +
 node_modules/base64-js/test/url-safe.js            |    24 +-
 node_modules/big-integer/BigInteger.d.ts           |    16 +
 node_modules/big-integer/BigInteger.js             |   230 +-
 node_modules/big-integer/BigInteger.min.js         |     2 +-
 node_modules/big-integer/README.md                 |    50 +
 node_modules/big-integer/package.json              |    40 +-
 .../license => brace-expansion/LICENSE}            |    12 +-
 node_modules/brace-expansion/README.md             |     9 +-
 node_modules/brace-expansion/index.js              |     2 +-
 node_modules/brace-expansion/package.json          |    35 +-
 node_modules/cordova-common/.eslintrc.yml          |     4 +-
 .../.github/PULL_REQUEST_TEMPLATE.md               |    22 +
 node_modules/cordova-common/.jscs.json             |    24 -
 node_modules/cordova-common/.travis.yml            |     1 +
 node_modules/cordova-common/README.md              |    16 +-
 node_modules/cordova-common/RELEASENOTES.md        |    14 +
 node_modules/cordova-common/appveyor.yml           |     3 +-
 node_modules/cordova-common/node_modules/.bin/shjs |     1 +
 .../node_modules/elementtree/.npmignore            |     1 -
 .../node_modules/elementtree/.travis.yml           |    10 -
 .../node_modules/elementtree/CHANGES.md            |    39 -
 .../node_modules/elementtree/LICENSE.txt           |   203 -
 .../node_modules/elementtree/Makefile              |    21 -
 .../cordova-common/node_modules/elementtree/NOTICE |     5 -
 .../node_modules/elementtree/README.md             |   141 -
 .../node_modules/elementtree/lib/constants.js      |    20 -
 .../node_modules/elementtree/lib/elementpath.js    |   343 -
 .../node_modules/elementtree/lib/elementtree.js    |   611 -
 .../node_modules/elementtree/lib/errors.js         |    31 -
 .../node_modules/elementtree/lib/parser.js         |    33 -
 .../node_modules/elementtree/lib/parsers/index.js  |     1 -
 .../node_modules/elementtree/lib/parsers/sax.js    |    56 -
 .../node_modules/elementtree/lib/sprintf.js        |    86 -
 .../node_modules/elementtree/lib/treebuilder.js    |    60 -
 .../node_modules/elementtree/lib/utils.js          |    72 -
 .../node_modules/elementtree/package.json          |    83 -
 .../node_modules/elementtree/tests/data/xml1.xml   |    17 -
 .../node_modules/elementtree/tests/data/xml2.xml   |    14 -
 .../node_modules/elementtree/tests/test-simple.js  |   339 -
 .../node_modules/shelljs/CHANGELOG.md              |   894 ++
 .../cordova-common/node_modules/shelljs/LICENSE    |    26 +
 .../cordova-common/node_modules/shelljs/README.md  |   835 ++
 .../cordova-common/node_modules/shelljs/bin/shjs   |    39 +
 .../node_modules/shelljs/commands.js               |    29 +
 .../cordova-common/node_modules/shelljs/global.js  |    12 +
 .../cordova-common/node_modules/shelljs/make.js    |    57 +
 .../node_modules/shelljs/package.json              |   114 +
 .../cordova-common/node_modules/shelljs/plugin.js  |    16 +
 .../cordova-common/node_modules/shelljs/shell.js   |   156 +
 .../cordova-common/node_modules/shelljs/src/cat.js |    76 +
 .../cordova-common/node_modules/shelljs/src/cd.js  |    39 +
 .../node_modules/shelljs/src/chmod.js              |   216 +
 .../node_modules/shelljs/src/common.js             |   468 +
 .../cordova-common/node_modules/shelljs/src/cp.js  |   300 +
 .../node_modules/shelljs/src/dirs.js               |   212 +
 .../node_modules/shelljs/src/echo.js               |    63 +
 .../node_modules/shelljs/src/error.js              |    15 +
 .../node_modules/shelljs/src/exec-child.js         |    39 +
 .../node_modules/shelljs/src/exec.js               |   205 +
 .../node_modules/shelljs/src/find.js               |    61 +
 .../node_modules/shelljs/src/grep.js               |    68 +
 .../node_modules/shelljs/src/head.js               |   107 +
 .../cordova-common/node_modules/shelljs/src/ln.js  |    73 +
 .../cordova-common/node_modules/shelljs/src/ls.js  |   141 +
 .../node_modules/shelljs/src/mkdir.js              |   100 +
 .../cordova-common/node_modules/shelljs/src/mv.js  |   118 +
 .../node_modules/shelljs/src/popd.js               |     1 +
 .../node_modules/shelljs/src/pushd.js              |     1 +
 .../cordova-common/node_modules/shelljs/src/pwd.js |    16 +
 .../cordova-common/node_modules/shelljs/src/rm.js  |   201 +
 .../cordova-common/node_modules/shelljs/src/sed.js |    87 +
 .../cordova-common/node_modules/shelljs/src/set.js |    56 +
 .../node_modules/shelljs/src/sort.js               |    97 +
 .../node_modules/shelljs/src/tail.js               |    80 +
 .../node_modules/shelljs/src/tempdir.js            |    59 +
 .../node_modules/shelljs/src/test.js               |    85 +
 .../cordova-common/node_modules/shelljs/src/to.js  |    37 +
 .../node_modules/shelljs/src/toEnd.js              |    36 +
 .../node_modules/shelljs/src/touch.js              |   111 +
 .../node_modules/shelljs/src/uniq.js               |    92 +
 .../node_modules/shelljs/src/which.js              |    99 +
 node_modules/cordova-common/package.json           |    67 +-
 .../src/ConfigChanges/ConfigChanges.js             |     2 +
 .../cordova-common/src/ConfigChanges/ConfigFile.js |     8 +-
 .../src/ConfigParser/ConfigParser.js               |    45 +-
 .../cordova-common/src/ConfigParser/README.md      |    86 -
 node_modules/cordova-common/src/FileUpdater.js     |     6 +-
 node_modules/cordova-common/src/superspawn.js      |     2 +-
 .../cordova-common/src/util/xml-helpers.js         |     9 +-
 node_modules/glob/README.md                        |    85 +-
 node_modules/glob/changelog.md                     |    67 +
 node_modules/glob/common.js                        |    53 +-
 node_modules/glob/glob.js                          |    80 +-
 node_modules/glob/package.json                     |    38 +-
 node_modules/glob/sync.js                          |    52 +-
 node_modules/lodash/LICENSE                        |    22 -
 node_modules/lodash/README.md                      |   121 -
 node_modules/lodash/array.js                       |    44 -
 node_modules/lodash/array/chunk.js                 |    46 -
 node_modules/lodash/array/compact.js               |    30 -
 node_modules/lodash/array/difference.js            |    29 -
 node_modules/lodash/array/drop.js                  |    39 -
 node_modules/lodash/array/dropRight.js             |    40 -
 node_modules/lodash/array/dropRightWhile.js        |    59 -
 node_modules/lodash/array/dropWhile.js             |    59 -
 node_modules/lodash/array/fill.js                  |    44 -
 node_modules/lodash/array/findIndex.js             |    53 -
 node_modules/lodash/array/findLastIndex.js         |    53 -
 node_modules/lodash/array/first.js                 |    22 -
 node_modules/lodash/array/flatten.js               |    32 -
 node_modules/lodash/array/flattenDeep.js           |    21 -
 node_modules/lodash/array/head.js                  |     1 -
 node_modules/lodash/array/indexOf.js               |    53 -
 node_modules/lodash/array/initial.js               |    20 -
 node_modules/lodash/array/intersection.js          |    58 -
 node_modules/lodash/array/last.js                  |    19 -
 node_modules/lodash/array/lastIndexOf.js           |    60 -
 node_modules/lodash/array/object.js                |     1 -
 node_modules/lodash/array/pull.js                  |    52 -
 node_modules/lodash/array/pullAt.js                |    40 -
 node_modules/lodash/array/remove.js                |    64 -
 node_modules/lodash/array/rest.js                  |    21 -
 node_modules/lodash/array/slice.js                 |    30 -
 node_modules/lodash/array/sortedIndex.js           |    53 -
 node_modules/lodash/array/sortedLastIndex.js       |    25 -
 node_modules/lodash/array/tail.js                  |     1 -
 node_modules/lodash/array/take.js                  |    39 -
 node_modules/lodash/array/takeRight.js             |    40 -
 node_modules/lodash/array/takeRightWhile.js        |    59 -
 node_modules/lodash/array/takeWhile.js             |    59 -
 node_modules/lodash/array/union.js                 |    24 -
 node_modules/lodash/array/uniq.js                  |    71 -
 node_modules/lodash/array/unique.js                |     1 -
 node_modules/lodash/array/unzip.js                 |    47 -
 node_modules/lodash/array/unzipWith.js             |    41 -
 node_modules/lodash/array/without.js               |    27 -
 node_modules/lodash/array/xor.js                   |    35 -
 node_modules/lodash/array/zip.js                   |    21 -
 node_modules/lodash/array/zipObject.js             |    43 -
 node_modules/lodash/array/zipWith.js               |    36 -
 node_modules/lodash/chain.js                       |    16 -
 node_modules/lodash/chain/chain.js                 |    35 -
 node_modules/lodash/chain/commit.js                |     1 -
 node_modules/lodash/chain/concat.js                |     1 -
 node_modules/lodash/chain/lodash.js                |   125 -
 node_modules/lodash/chain/plant.js                 |     1 -
 node_modules/lodash/chain/reverse.js               |     1 -
 node_modules/lodash/chain/run.js                   |     1 -
 node_modules/lodash/chain/tap.js                   |    29 -
 node_modules/lodash/chain/thru.js                  |    26 -
 node_modules/lodash/chain/toJSON.js                |     1 -
 node_modules/lodash/chain/toString.js              |     1 -
 node_modules/lodash/chain/value.js                 |     1 -
 node_modules/lodash/chain/valueOf.js               |     1 -
 node_modules/lodash/chain/wrapperChain.js          |    32 -
 node_modules/lodash/chain/wrapperCommit.js         |    32 -
 node_modules/lodash/chain/wrapperConcat.js         |    34 -
 node_modules/lodash/chain/wrapperPlant.js          |    45 -
 node_modules/lodash/chain/wrapperReverse.js        |    43 -
 node_modules/lodash/chain/wrapperToString.js       |    17 -
 node_modules/lodash/chain/wrapperValue.js          |    20 -
 node_modules/lodash/collection.js                  |    44 -
 node_modules/lodash/collection/all.js              |     1 -
 node_modules/lodash/collection/any.js              |     1 -
 node_modules/lodash/collection/at.js               |    29 -
 node_modules/lodash/collection/collect.js          |     1 -
 node_modules/lodash/collection/contains.js         |     1 -
 node_modules/lodash/collection/countBy.js          |    54 -
 node_modules/lodash/collection/detect.js           |     1 -
 node_modules/lodash/collection/each.js             |     1 -
 node_modules/lodash/collection/eachRight.js        |     1 -
 node_modules/lodash/collection/every.js            |    66 -
 node_modules/lodash/collection/filter.js           |    61 -
 node_modules/lodash/collection/find.js             |    56 -
 node_modules/lodash/collection/findLast.js         |    25 -
 node_modules/lodash/collection/findWhere.js        |    37 -
 node_modules/lodash/collection/foldl.js            |     1 -
 node_modules/lodash/collection/foldr.js            |     1 -
 node_modules/lodash/collection/forEach.js          |    37 -
 node_modules/lodash/collection/forEachRight.js     |    26 -
 node_modules/lodash/collection/groupBy.js          |    59 -
 node_modules/lodash/collection/include.js          |     1 -
 node_modules/lodash/collection/includes.js         |    57 -
 node_modules/lodash/collection/indexBy.js          |    53 -
 node_modules/lodash/collection/inject.js           |     1 -
 node_modules/lodash/collection/invoke.js           |    42 -
 node_modules/lodash/collection/map.js              |    68 -
 node_modules/lodash/collection/max.js              |     1 -
 node_modules/lodash/collection/min.js              |     1 -
 node_modules/lodash/collection/partition.js        |    66 -
 node_modules/lodash/collection/pluck.js            |    31 -
 node_modules/lodash/collection/reduce.js           |    44 -
 node_modules/lodash/collection/reduceRight.js      |    29 -
 node_modules/lodash/collection/reject.js           |    50 -
 node_modules/lodash/collection/sample.js           |    50 -
 node_modules/lodash/collection/select.js           |     1 -
 node_modules/lodash/collection/shuffle.js          |    24 -
 node_modules/lodash/collection/size.js             |    30 -
 node_modules/lodash/collection/some.js             |    67 -
 node_modules/lodash/collection/sortBy.js           |    71 -
 node_modules/lodash/collection/sortByAll.js        |    52 -
 node_modules/lodash/collection/sortByOrder.js      |    55 -
 node_modules/lodash/collection/sum.js              |     1 -
 node_modules/lodash/collection/where.js            |    37 -
 node_modules/lodash/date.js                        |     3 -
 node_modules/lodash/date/now.js                    |    24 -
 node_modules/lodash/function.js                    |    28 -
 node_modules/lodash/function/after.js              |    48 -
 node_modules/lodash/function/ary.js                |    34 -
 node_modules/lodash/function/backflow.js           |     1 -
 node_modules/lodash/function/before.js             |    42 -
 node_modules/lodash/function/bind.js               |    56 -
 node_modules/lodash/function/bindAll.js            |    50 -
 node_modules/lodash/function/bindKey.js            |    66 -
 node_modules/lodash/function/compose.js            |     1 -
 node_modules/lodash/function/curry.js              |    51 -
 node_modules/lodash/function/curryRight.js         |    48 -
 node_modules/lodash/function/debounce.js           |   181 -
 node_modules/lodash/function/defer.js              |    25 -
 node_modules/lodash/function/delay.js              |    26 -
 node_modules/lodash/function/flow.js               |    25 -
 node_modules/lodash/function/flowRight.js          |    25 -
 node_modules/lodash/function/memoize.js            |    80 -
 node_modules/lodash/function/modArgs.js            |    58 -
 node_modules/lodash/function/negate.js             |    32 -
 node_modules/lodash/function/once.js               |    24 -
 node_modules/lodash/function/partial.js            |    43 -
 node_modules/lodash/function/partialRight.js       |    42 -
 node_modules/lodash/function/rearg.js              |    40 -
 node_modules/lodash/function/restParam.js          |    58 -
 node_modules/lodash/function/spread.js             |    44 -
 node_modules/lodash/function/throttle.js           |    62 -
 node_modules/lodash/function/wrap.js               |    33 -
 node_modules/lodash/index.js                       | 12351 -------------------
 node_modules/lodash/internal/LazyWrapper.js        |    26 -
 node_modules/lodash/internal/LodashWrapper.js      |    21 -
 node_modules/lodash/internal/MapCache.js           |    24 -
 node_modules/lodash/internal/SetCache.js           |    29 -
 node_modules/lodash/internal/arrayConcat.js        |    25 -
 node_modules/lodash/internal/arrayCopy.js          |    20 -
 node_modules/lodash/internal/arrayEach.js          |    22 -
 node_modules/lodash/internal/arrayEachRight.js     |    21 -
 node_modules/lodash/internal/arrayEvery.js         |    23 -
 node_modules/lodash/internal/arrayExtremum.js      |    30 -
 node_modules/lodash/internal/arrayFilter.js        |    25 -
 node_modules/lodash/internal/arrayMap.js           |    21 -
 node_modules/lodash/internal/arrayPush.js          |    20 -
 node_modules/lodash/internal/arrayReduce.js        |    26 -
 node_modules/lodash/internal/arrayReduceRight.js   |    24 -
 node_modules/lodash/internal/arraySome.js          |    23 -
 node_modules/lodash/internal/arraySum.js           |    20 -
 node_modules/lodash/internal/assignDefaults.js     |    13 -
 node_modules/lodash/internal/assignOwnDefaults.js  |    26 -
 node_modules/lodash/internal/assignWith.js         |    32 -
 node_modules/lodash/internal/baseAssign.js         |    19 -
 node_modules/lodash/internal/baseAt.js             |    32 -
 node_modules/lodash/internal/baseCallback.js       |    35 -
 node_modules/lodash/internal/baseClone.js          |   128 -
 .../lodash/internal/baseCompareAscending.js        |    34 -
 node_modules/lodash/internal/baseCopy.js           |    23 -
 node_modules/lodash/internal/baseCreate.js         |    23 -
 node_modules/lodash/internal/baseDelay.js          |    21 -
 node_modules/lodash/internal/baseDifference.js     |    55 -
 node_modules/lodash/internal/baseEach.js           |    15 -
 node_modules/lodash/internal/baseEachRight.js      |    15 -
 node_modules/lodash/internal/baseEvery.js          |    22 -
 node_modules/lodash/internal/baseExtremum.js       |    29 -
 node_modules/lodash/internal/baseFill.js           |    31 -
 node_modules/lodash/internal/baseFilter.js         |    22 -
 node_modules/lodash/internal/baseFind.js           |    25 -
 node_modules/lodash/internal/baseFindIndex.js      |    23 -
 node_modules/lodash/internal/baseFlatten.js        |    41 -
 node_modules/lodash/internal/baseFor.js            |    17 -
 node_modules/lodash/internal/baseForIn.js          |    17 -
 node_modules/lodash/internal/baseForOwn.js         |    17 -
 node_modules/lodash/internal/baseForOwnRight.js    |    17 -
 node_modules/lodash/internal/baseForRight.js       |    15 -
 node_modules/lodash/internal/baseFunctions.js      |    27 -
 node_modules/lodash/internal/baseGet.js            |    29 -
 node_modules/lodash/internal/baseIndexOf.js        |    27 -
 node_modules/lodash/internal/baseIsEqual.js        |    28 -
 node_modules/lodash/internal/baseIsEqualDeep.js    |   102 -
 node_modules/lodash/internal/baseIsFunction.js     |    15 -
 node_modules/lodash/internal/baseIsMatch.js        |    52 -
 node_modules/lodash/internal/baseLodash.js         |    10 -
 node_modules/lodash/internal/baseMap.js            |    23 -
 node_modules/lodash/internal/baseMatches.js        |    30 -
 .../lodash/internal/baseMatchesProperty.js         |    45 -
 node_modules/lodash/internal/baseMerge.js          |    56 -
 node_modules/lodash/internal/baseMergeDeep.js      |    67 -
 node_modules/lodash/internal/baseProperty.js       |    14 -
 node_modules/lodash/internal/basePropertyDeep.js   |    19 -
 node_modules/lodash/internal/basePullAt.js         |    30 -
 node_modules/lodash/internal/baseRandom.js         |    18 -
 node_modules/lodash/internal/baseReduce.js         |    24 -
 node_modules/lodash/internal/baseSetData.js        |    17 -
 node_modules/lodash/internal/baseSlice.js          |    32 -
 node_modules/lodash/internal/baseSome.js           |    23 -
 node_modules/lodash/internal/baseSortBy.js         |    21 -
 node_modules/lodash/internal/baseSortByOrder.js    |    31 -
 node_modules/lodash/internal/baseSum.js            |    20 -
 node_modules/lodash/internal/baseToString.js       |    13 -
 node_modules/lodash/internal/baseUniq.js           |    60 -
 node_modules/lodash/internal/baseValues.js         |    22 -
 node_modules/lodash/internal/baseWhile.js          |    24 -
 node_modules/lodash/internal/baseWrapperValue.js   |    29 -
 node_modules/lodash/internal/binaryIndex.js        |    39 -
 node_modules/lodash/internal/binaryIndexBy.js      |    57 -
 node_modules/lodash/internal/bindCallback.js       |    39 -
 node_modules/lodash/internal/bufferClone.js        |    20 -
 node_modules/lodash/internal/cacheIndexOf.js       |    19 -
 node_modules/lodash/internal/cachePush.js          |    20 -
 node_modules/lodash/internal/charsLeftIndex.js     |    18 -
 node_modules/lodash/internal/charsRightIndex.js    |    17 -
 node_modules/lodash/internal/compareAscending.js   |    16 -
 node_modules/lodash/internal/compareMultiple.js    |    44 -
 node_modules/lodash/internal/composeArgs.js        |    34 -
 node_modules/lodash/internal/composeArgsRight.js   |    36 -
 node_modules/lodash/internal/createAggregator.js   |    35 -
 node_modules/lodash/internal/createAssigner.js     |    41 -
 node_modules/lodash/internal/createBaseEach.js     |    31 -
 node_modules/lodash/internal/createBaseFor.js      |    27 -
 node_modules/lodash/internal/createBindWrapper.js  |    22 -
 node_modules/lodash/internal/createCache.js        |    21 -
 node_modules/lodash/internal/createCompounder.js   |    26 -
 node_modules/lodash/internal/createCtorWrapper.js  |    37 -
 node_modules/lodash/internal/createCurry.js        |    23 -
 node_modules/lodash/internal/createDefaults.js     |    22 -
 node_modules/lodash/internal/createExtremum.js     |    33 -
 node_modules/lodash/internal/createFind.js         |    25 -
 node_modules/lodash/internal/createFindIndex.js    |    21 -
 node_modules/lodash/internal/createFindKey.js      |    18 -
 node_modules/lodash/internal/createFlow.js         |    74 -
 node_modules/lodash/internal/createForEach.js      |    20 -
 node_modules/lodash/internal/createForIn.js        |    20 -
 node_modules/lodash/internal/createForOwn.js       |    19 -
 .../lodash/internal/createHybridWrapper.js         |   111 -
 node_modules/lodash/internal/createObjectMapper.js |    26 -
 node_modules/lodash/internal/createPadDir.js       |    18 -
 node_modules/lodash/internal/createPadding.js      |    29 -
 node_modules/lodash/internal/createPartial.js      |    20 -
 .../lodash/internal/createPartialWrapper.js        |    43 -
 node_modules/lodash/internal/createReduce.js       |    22 -
 node_modules/lodash/internal/createRound.js        |    23 -
 node_modules/lodash/internal/createSortedIndex.js  |    20 -
 node_modules/lodash/internal/createWrapper.js      |    86 -
 node_modules/lodash/internal/deburrLetter.js       |    33 -
 node_modules/lodash/internal/equalArrays.js        |    51 -
 node_modules/lodash/internal/equalByTag.js         |    48 -
 node_modules/lodash/internal/equalObjects.js       |    67 -
 node_modules/lodash/internal/escapeHtmlChar.js     |    22 -
 node_modules/lodash/internal/escapeRegExpChar.js   |    38 -
 node_modules/lodash/internal/escapeStringChar.js   |    22 -
 node_modules/lodash/internal/getData.js            |    15 -
 node_modules/lodash/internal/getFuncName.js        |    25 -
 node_modules/lodash/internal/getLength.js          |    15 -
 node_modules/lodash/internal/getMatchData.js       |    21 -
 node_modules/lodash/internal/getNative.js          |    16 -
 node_modules/lodash/internal/getView.js            |    33 -
 node_modules/lodash/internal/indexOfNaN.js         |    23 -
 node_modules/lodash/internal/initCloneArray.js     |    26 -
 node_modules/lodash/internal/initCloneByTag.js     |    63 -
 node_modules/lodash/internal/initCloneObject.js    |    16 -
 node_modules/lodash/internal/invokePath.js         |    26 -
 node_modules/lodash/internal/isArrayLike.js        |    15 -
 node_modules/lodash/internal/isIndex.js            |    24 -
 node_modules/lodash/internal/isIterateeCall.js     |    28 -
 node_modules/lodash/internal/isKey.js              |    28 -
 node_modules/lodash/internal/isLaziable.js         |    27 -
 node_modules/lodash/internal/isLength.js           |    20 -
 node_modules/lodash/internal/isObjectLike.js       |    12 -
 node_modules/lodash/internal/isSpace.js            |    14 -
 node_modules/lodash/internal/isStrictComparable.js |    15 -
 node_modules/lodash/internal/lazyClone.js          |    23 -
 node_modules/lodash/internal/lazyReverse.js        |    23 -
 node_modules/lodash/internal/lazyValue.js          |    72 -
 node_modules/lodash/internal/mapDelete.js          |    14 -
 node_modules/lodash/internal/mapGet.js             |    14 -
 node_modules/lodash/internal/mapHas.js             |    20 -
 node_modules/lodash/internal/mapSet.js             |    18 -
 node_modules/lodash/internal/mergeData.js          |    89 -
 node_modules/lodash/internal/mergeDefaults.js      |    15 -
 node_modules/lodash/internal/metaMap.js            |     9 -
 node_modules/lodash/internal/pickByArray.js        |    28 -
 node_modules/lodash/internal/pickByCallback.js     |    22 -
 node_modules/lodash/internal/reEscape.js           |     4 -
 node_modules/lodash/internal/reEvaluate.js         |     4 -
 node_modules/lodash/internal/reInterpolate.js      |     4 -
 node_modules/lodash/internal/realNames.js          |     4 -
 node_modules/lodash/internal/reorder.js            |    29 -
 node_modules/lodash/internal/replaceHolders.js     |    28 -
 node_modules/lodash/internal/setData.js            |    41 -
 node_modules/lodash/internal/shimKeys.js           |    41 -
 node_modules/lodash/internal/sortedUniq.js         |    29 -
 node_modules/lodash/internal/toIterable.js         |    22 -
 node_modules/lodash/internal/toObject.js           |    14 -
 node_modules/lodash/internal/toPath.js             |    28 -
 node_modules/lodash/internal/trimmedLeftIndex.js   |    19 -
 node_modules/lodash/internal/trimmedRightIndex.js  |    18 -
 node_modules/lodash/internal/unescapeHtmlChar.js   |    22 -
 node_modules/lodash/internal/wrapperClone.js       |    18 -
 node_modules/lodash/lang.js                        |    32 -
 node_modules/lodash/lang/clone.js                  |    70 -
 node_modules/lodash/lang/cloneDeep.js              |    55 -
 node_modules/lodash/lang/eq.js                     |     1 -
 node_modules/lodash/lang/gt.js                     |    25 -
 node_modules/lodash/lang/gte.js                    |    25 -
 node_modules/lodash/lang/isArguments.js            |    34 -
 node_modules/lodash/lang/isArray.js                |    40 -
 node_modules/lodash/lang/isBoolean.js              |    35 -
 node_modules/lodash/lang/isDate.js                 |    35 -
 node_modules/lodash/lang/isElement.js              |    24 -
 node_modules/lodash/lang/isEmpty.js                |    47 -
 node_modules/lodash/lang/isEqual.js                |    54 -
 node_modules/lodash/lang/isError.js                |    36 -
 node_modules/lodash/lang/isFinite.js               |    35 -
 node_modules/lodash/lang/isFunction.js             |    38 -
 node_modules/lodash/lang/isMatch.js                |    49 -
 node_modules/lodash/lang/isNaN.js                  |    34 -
 node_modules/lodash/lang/isNative.js               |    48 -
 node_modules/lodash/lang/isNull.js                 |    21 -
 node_modules/lodash/lang/isNumber.js               |    41 -
 node_modules/lodash/lang/isObject.js               |    28 -
 node_modules/lodash/lang/isPlainObject.js          |    71 -
 node_modules/lodash/lang/isRegExp.js               |    35 -
 node_modules/lodash/lang/isString.js               |    35 -
 node_modules/lodash/lang/isTypedArray.js           |    74 -
 node_modules/lodash/lang/isUndefined.js            |    21 -
 node_modules/lodash/lang/lt.js                     |    25 -
 node_modules/lodash/lang/lte.js                    |    25 -
 node_modules/lodash/lang/toArray.js                |    32 -
 node_modules/lodash/lang/toPlainObject.js          |    31 -
 node_modules/lodash/math.js                        |     9 -
 node_modules/lodash/math/add.js                    |    19 -
 node_modules/lodash/math/ceil.js                   |    25 -
 node_modules/lodash/math/floor.js                  |    25 -
 node_modules/lodash/math/max.js                    |    56 -
 node_modules/lodash/math/min.js                    |    56 -
 node_modules/lodash/math/round.js                  |    25 -
 node_modules/lodash/math/sum.js                    |    50 -
 node_modules/lodash/number.js                      |     4 -
 node_modules/lodash/number/inRange.js              |    47 -
 node_modules/lodash/number/random.js               |    70 -
 node_modules/lodash/object.js                      |    31 -
 node_modules/lodash/object/assign.js               |    43 -
 node_modules/lodash/object/create.js               |    47 -
 node_modules/lodash/object/defaults.js             |    25 -
 node_modules/lodash/object/defaultsDeep.js         |    25 -
 node_modules/lodash/object/extend.js               |     1 -
 node_modules/lodash/object/findKey.js              |    54 -
 node_modules/lodash/object/findLastKey.js          |    54 -
 node_modules/lodash/object/forIn.js                |    33 -
 node_modules/lodash/object/forInRight.js           |    31 -
 node_modules/lodash/object/forOwn.js               |    33 -
 node_modules/lodash/object/forOwnRight.js          |    31 -
 node_modules/lodash/object/functions.js            |    23 -
 node_modules/lodash/object/get.js                  |    33 -
 node_modules/lodash/object/has.js                  |    57 -
 node_modules/lodash/object/invert.js               |    60 -
 node_modules/lodash/object/keys.js                 |    45 -
 node_modules/lodash/object/keysIn.js               |    64 -
 node_modules/lodash/object/mapKeys.js              |    25 -
 node_modules/lodash/object/mapValues.js            |    46 -
 node_modules/lodash/object/merge.js                |    54 -
 node_modules/lodash/object/methods.js              |     1 -
 node_modules/lodash/object/omit.js                 |    47 -
 node_modules/lodash/object/pairs.js                |    33 -
 node_modules/lodash/object/pick.js                 |    42 -
 node_modules/lodash/object/result.js               |    49 -
 node_modules/lodash/object/set.js                  |    55 -
 node_modules/lodash/object/transform.js            |    61 -
 node_modules/lodash/object/values.js               |    33 -
 node_modules/lodash/object/valuesIn.js             |    31 -
 node_modules/lodash/package.json                   |    84 -
 node_modules/lodash/string.js                      |    25 -
 node_modules/lodash/string/camelCase.js            |    27 -
 node_modules/lodash/string/capitalize.js           |    21 -
 node_modules/lodash/string/deburr.js               |    29 -
 node_modules/lodash/string/endsWith.js             |    40 -
 node_modules/lodash/string/escape.js               |    48 -
 node_modules/lodash/string/escapeRegExp.js         |    32 -
 node_modules/lodash/string/kebabCase.js            |    26 -
 node_modules/lodash/string/pad.js                  |    47 -
 node_modules/lodash/string/padLeft.js              |    27 -
 node_modules/lodash/string/padRight.js             |    27 -
 node_modules/lodash/string/parseInt.js             |    46 -
 node_modules/lodash/string/repeat.js               |    47 -
 node_modules/lodash/string/snakeCase.js            |    26 -
 node_modules/lodash/string/startCase.js            |    26 -
 node_modules/lodash/string/startsWith.js           |    36 -
 node_modules/lodash/string/template.js             |   226 -
 node_modules/lodash/string/templateSettings.js     |    67 -
 node_modules/lodash/string/trim.js                 |    42 -
 node_modules/lodash/string/trimLeft.js             |    36 -
 node_modules/lodash/string/trimRight.js            |    36 -
 node_modules/lodash/string/trunc.js                |   105 -
 node_modules/lodash/string/unescape.js             |    33 -
 node_modules/lodash/string/words.js                |    38 -
 node_modules/lodash/support.js                     |    10 -
 node_modules/lodash/utility.js                     |    18 -
 node_modules/lodash/utility/attempt.js             |    32 -
 node_modules/lodash/utility/callback.js            |    53 -
 node_modules/lodash/utility/constant.js            |    23 -
 node_modules/lodash/utility/identity.js            |    20 -
 node_modules/lodash/utility/iteratee.js            |     1 -
 node_modules/lodash/utility/matches.js             |    33 -
 node_modules/lodash/utility/matchesProperty.js     |    32 -
 node_modules/lodash/utility/method.js              |    33 -
 node_modules/lodash/utility/methodOf.js            |    32 -
 node_modules/lodash/utility/mixin.js               |    82 -
 node_modules/lodash/utility/noop.js                |    19 -
 node_modules/lodash/utility/property.js            |    31 -
 node_modules/lodash/utility/propertyOf.js          |    30 -
 node_modules/lodash/utility/range.js               |    66 -
 node_modules/lodash/utility/times.js               |    60 -
 node_modules/lodash/utility/uniqueId.js            |    27 -
 node_modules/minimatch/package.json                |    44 +-
 node_modules/os-homedir/index.js                   |    24 -
 node_modules/os-homedir/package.json               |    76 -
 node_modules/os-homedir/readme.md                  |    31 -
 node_modules/os-tmpdir/index.js                    |    25 -
 node_modules/os-tmpdir/license                     |    21 -
 node_modules/os-tmpdir/package.json                |    77 -
 node_modules/os-tmpdir/readme.md                   |    32 -
 node_modules/osenv/.npmignore                      |    13 -
 node_modules/osenv/.travis.yml                     |     9 -
 node_modules/osenv/LICENSE                         |    15 -
 node_modules/osenv/README.md                       |    63 -
 node_modules/osenv/osenv.js                        |    72 -
 node_modules/osenv/package.json                    |    70 -
 node_modules/osenv/test/unix.js                    |    71 -
 node_modules/osenv/test/windows.js                 |    74 -
 node_modules/osenv/x.tap                           |    39 -
 node_modules/plist/.travis.yml                     |    35 +-
 node_modules/plist/History.md                      |    66 +-
 node_modules/plist/LICENSE                         |     2 +-
 node_modules/plist/Makefile                        |     3 +-
 node_modules/plist/README.md                       |    84 +-
 node_modules/plist/dist/plist-build.js             |  5200 +++-----
 node_modules/plist/dist/plist-parse.js             |  2286 ++--
 node_modules/plist/dist/plist.js                   |  6811 +++++-----
 node_modules/plist/index.js                        |    13 +
 node_modules/plist/lib/build.js                    |     1 -
 node_modules/plist/lib/node.js                     |    49 -
 node_modules/plist/lib/parse.js                    |   177 +-
 node_modules/plist/lib/plist.js                    |    23 -
 node_modules/plist/package.json                    |    49 +-
 node_modules/sax/AUTHORS                           |     9 -
 node_modules/sax/LICENSE                           |    23 -
 node_modules/sax/README.md                         |   213 -
 node_modules/sax/examples/big-not-pretty.xml       |  8002 ------------
 node_modules/sax/examples/example.js               |    41 -
 node_modules/sax/examples/get-products.js          |    58 -
 node_modules/sax/examples/hello-world.js           |     4 -
 node_modules/sax/examples/not-pretty.xml           |     8 -
 node_modules/sax/examples/pretty-print.js          |    74 -
 node_modules/sax/examples/shopping.xml             |     2 -
 node_modules/sax/examples/strict.dtd               |   870 --
 node_modules/sax/examples/switch-bench.js          |    45 -
 node_modules/sax/examples/test.html                |    15 -
 node_modules/sax/examples/test.xml                 |  1254 --
 node_modules/sax/lib/sax.js                        |  1006 --
 node_modules/sax/package.json                      |    88 -
 node_modules/sax/test/buffer-overrun.js            |    25 -
 node_modules/sax/test/cdata-chunked.js             |    11 -
 node_modules/sax/test/cdata-end-split.js           |    15 -
 node_modules/sax/test/cdata-fake-end.js            |    28 -
 node_modules/sax/test/cdata-multiple.js            |    15 -
 node_modules/sax/test/cdata.js                     |    10 -
 node_modules/sax/test/index.js                     |    86 -
 node_modules/sax/test/issue-23.js                  |    43 -
 node_modules/sax/test/issue-30.js                  |    24 -
 node_modules/sax/test/issue-35.js                  |    15 -
 node_modules/sax/test/issue-47.js                  |    13 -
 node_modules/sax/test/issue-49.js                  |    31 -
 node_modules/sax/test/parser-position.js           |    28 -
 node_modules/sax/test/script.js                    |    12 -
 node_modules/sax/test/self-closing-child-strict.js |    40 -
 node_modules/sax/test/self-closing-child.js        |    40 -
 node_modules/sax/test/self-closing-tag.js          |    25 -
 node_modules/sax/test/stray-ending.js              |    17 -
 node_modules/sax/test/trailing-non-whitespace.js   |    17 -
 node_modules/sax/test/unquoted.js                  |    17 -
 node_modules/sax/test/xmlns-issue-41.js            |    67 -
 node_modules/sax/test/xmlns-rebinding.js           |    59 -
 node_modules/sax/test/xmlns-strict.js              |    71 -
 node_modules/sax/test/xmlns-unbound.js             |    15 -
 .../sax/test/xmlns-xml-default-prefix-attribute.js |    35 -
 node_modules/sax/test/xmlns-xml-default-prefix.js  |    20 -
 .../sax/test/xmlns-xml-default-redefine.js         |    40 -
 node_modules/underscore/LICENSE                    |     2 +-
 node_modules/underscore/README.md                  |     6 +
 node_modules/underscore/package.json               |    59 +-
 node_modules/underscore/underscore-min.js          |     7 +-
 node_modules/underscore/underscore-min.js.map      |     1 +
 node_modules/underscore/underscore-min.map         |     1 -
 node_modules/underscore/underscore.js              |   702 +-
 node_modules/unorm/LICENSE.md                      |    42 -
 node_modules/unorm/README.md                       |   118 -
 node_modules/unorm/lib/unorm.js                    |   442 -
 node_modules/unorm/package.json                    |    75 -
 node_modules/util-deprecate/History.md             |    16 -
 node_modules/util-deprecate/LICENSE                |    24 -
 node_modules/util-deprecate/README.md              |    53 -
 node_modules/util-deprecate/browser.js             |    67 -
 node_modules/util-deprecate/node.js                |     6 -
 node_modules/util-deprecate/package.json           |    60 -
 node_modules/xmlbuilder/CHANGELOG.md               |   423 +
 node_modules/xmlbuilder/README.md                  |     7 +-
 node_modules/xmlbuilder/lib/Utility.js             |    73 +
 node_modules/xmlbuilder/lib/XMLAttribute.js        |    13 +-
 node_modules/xmlbuilder/lib/XMLBuilder.js          |    69 -
 node_modules/xmlbuilder/lib/XMLCData.js            |    27 +-
 node_modules/xmlbuilder/lib/XMLComment.js          |    27 +-
 node_modules/xmlbuilder/lib/XMLDTDAttList.js       |    42 +-
 node_modules/xmlbuilder/lib/XMLDTDElement.js       |    35 +-
 node_modules/xmlbuilder/lib/XMLDTDEntity.js        |    54 +-
 node_modules/xmlbuilder/lib/XMLDTDNotation.js      |    43 +-
 node_modules/xmlbuilder/lib/XMLDeclaration.js      |    35 +-
 node_modules/xmlbuilder/lib/XMLDocType.js          |   107 +-
 node_modules/xmlbuilder/lib/XMLDocument.js         |    48 +
 node_modules/xmlbuilder/lib/XMLDocumentCB.js       |   402 +
 node_modules/xmlbuilder/lib/XMLElement.js          |   133 +-
 node_modules/xmlbuilder/lib/XMLNode.js             |   189 +-
 .../xmlbuilder/lib/XMLProcessingInstruction.js     |    42 +-
 node_modules/xmlbuilder/lib/XMLRaw.js              |    27 +-
 node_modules/xmlbuilder/lib/XMLStreamWriter.js     |   279 +
 node_modules/xmlbuilder/lib/XMLStringWriter.js     |   334 +
 node_modules/xmlbuilder/lib/XMLStringifier.js      |    36 +-
 node_modules/xmlbuilder/lib/XMLText.js             |    27 +-
 node_modules/xmlbuilder/lib/XMLWriterBase.js       |    90 +
 node_modules/xmlbuilder/lib/index.js               |    49 +-
 node_modules/xmlbuilder/package.json               |    43 +-
 package.json                                       |     2 +-
 647 files changed, 15451 insertions(+), 52771 deletions(-)

diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js
index e8d8587..1685a76 100644
--- a/node_modules/balanced-match/index.js
+++ b/node_modules/balanced-match/index.js
@@ -1,3 +1,4 @@
+'use strict';
 module.exports = balanced;
 function balanced(a, b, str) {
   if (a instanceof RegExp) a = maybeMatch(a, str);
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
index c6c7fb9..cbbe045 100644
--- a/node_modules/balanced-match/package.json
+++ b/node_modules/balanced-match/package.json
@@ -1,32 +1,27 @@
 {
-  "_args": [
-    [
-      "balanced-match@0.4.2",
-      "C:\\Projects\\Cordova\\cordova-windows"
-    ]
-  ],
-  "_from": "balanced-match@0.4.2",
-  "_id": "balanced-match@0.4.2",
+  "_from": "balanced-match@^1.0.0",
+  "_id": "balanced-match@1.0.0",
   "_inBundle": false,
-  "_integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+  "_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
   "_location": "/balanced-match",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "range",
     "registry": true,
-    "raw": "balanced-match@0.4.2",
+    "raw": "balanced-match@^1.0.0",
     "name": "balanced-match",
     "escapedName": "balanced-match",
-    "rawSpec": "0.4.2",
+    "rawSpec": "^1.0.0",
     "saveSpec": null,
-    "fetchSpec": "0.4.2"
+    "fetchSpec": "^1.0.0"
   },
   "_requiredBy": [
     "/brace-expansion"
   ],
-  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-  "_spec": "0.4.2",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+  "_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
+  "_spec": "balanced-match@^1.0.0",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/brace-expansion",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",
@@ -35,9 +30,12 @@
   "bugs": {
     "url": "https://github.com/juliangruber/balanced-match/issues"
   },
+  "bundleDependencies": false,
   "dependencies": {},
+  "deprecated": false,
   "description": "Match balanced character pairs, like \"{\" and \"}\"",
   "devDependencies": {
+    "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
   "homepage": "https://github.com/juliangruber/balanced-match",
@@ -56,6 +54,7 @@
     "url": "git://github.com/juliangruber/balanced-match.git"
   },
   "scripts": {
+    "bench": "make bench",
     "test": "make test"
   },
   "testling": {
@@ -74,5 +73,5 @@
       "android-browser/4.2..latest"
     ]
   },
-  "version": "0.4.2"
+  "version": "1.0.0"
 }
diff --git a/node_modules/base64-js/.travis.yml b/node_modules/base64-js/.travis.yml
deleted file mode 100644
index 939cb51..0000000
--- a/node_modules/base64-js/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"
-  - "0.11"
\ No newline at end of file
diff --git a/node_modules/base64-js/LICENSE.MIT b/node_modules/base64-js/LICENSE
similarity index 100%
rename from node_modules/base64-js/LICENSE.MIT
rename to node_modules/base64-js/LICENSE
diff --git a/node_modules/base64-js/README.md b/node_modules/base64-js/README.md
index ed31d1a..7532511 100644
--- a/node_modules/base64-js/README.md
+++ b/node_modules/base64-js/README.md
@@ -15,17 +15,20 @@ Sometimes encoding/decoding binary data in the browser is useful, and that is wh
 
 With [npm](https://npmjs.org) do:
 
-`npm install base64-js`
+`npm install base64-js` and `var base64js = require('base64-js')`
 
-## methods
+For use in web browsers do:
+
+`<script src="base64js.min.js"></script>`
 
-`var base64 = require('base64-js')`
+## methods
 
-`base64` has two exposed functions, `toByteArray` and `fromByteArray`, which both take a single argument.
+`base64js` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument.
 
+* `byteLength` - Takes a base64 string and returns length of byte array
 * `toByteArray` - Takes a base64 string and returns a byte array
 * `fromByteArray` - Takes a byte array and returns a base64 string
 
 ## license
 
-MIT
\ No newline at end of file
+MIT
diff --git a/node_modules/base64-js/base64js.min.js b/node_modules/base64-js/base64js.min.js
new file mode 100644
index 0000000..0c621d3
--- /dev/null
+++ b/node_modules/base64-js/base64js.min.js
@@ -0,0 +1 @@
+(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,n;return function(){function r(e,n,t){function o(f,i){if(!n[f]){if(!e[f]){var u="function"==typeof require&&require;if(!i&&u)return u(f,!0);if(a)return [...]
diff --git a/node_modules/base64-js/bench/bench.js b/node_modules/base64-js/bench/bench.js
deleted file mode 100644
index 0689e08..0000000
--- a/node_modules/base64-js/bench/bench.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var random = require('crypto').pseudoRandomBytes
-
-var b64 = require('../')
-var fs = require('fs')
-var path = require('path')
-var data = random(1e6).toString('base64')
-//fs.readFileSync(path.join(__dirname, 'example.b64'), 'ascii').split('\n').join('')
-var start = Date.now()
-var raw = b64.toByteArray(data)
-var middle = Date.now()
-var data = b64.fromByteArray(raw)
-var end = Date.now()
-
-console.log('decode ms, decode ops/ms, encode ms, encode ops/ms')
-console.log(
-	middle - start,  data.length / (middle - start), 
-	end - middle,  data.length / (end - middle))
-//console.log(data)
-
diff --git a/node_modules/base64-js/index.js b/node_modules/base64-js/index.js
new file mode 100644
index 0000000..44c6766
--- /dev/null
+++ b/node_modules/base64-js/index.js
@@ -0,0 +1,151 @@
+'use strict'
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+// Support decoding URL-safe base64 strings, as Node.js does.
+// See: https://en.wikipedia.org/wiki/Base64#URL_applications
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function getLens (b64) {
+  var len = b64.length
+
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // Trim off extra bytes after placeholder bytes are found
+  // See: https://github.com/beatgammit/base64-js/issues/42
+  var validLen = b64.indexOf('=')
+  if (validLen === -1) validLen = len
+
+  var placeHoldersLen = validLen === len
+    ? 0
+    : 4 - (validLen % 4)
+
+  return [validLen, placeHoldersLen]
+}
+
+// base64 is 4/3 + up to two characters of the original data
+function byteLength (b64) {
+  var lens = getLens(b64)
+  var validLen = lens[0]
+  var placeHoldersLen = lens[1]
+  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
+
+function _byteLength (b64, validLen, placeHoldersLen) {
+  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
+}
+
+function toByteArray (b64) {
+  var tmp
+  var lens = getLens(b64)
+  var validLen = lens[0]
+  var placeHoldersLen = lens[1]
+
+  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
+
+  var curByte = 0
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  var len = placeHoldersLen > 0
+    ? validLen - 4
+    : validLen
+
+  for (var i = 0; i < len; i += 4) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 18) |
+      (revLookup[b64.charCodeAt(i + 1)] << 12) |
+      (revLookup[b64.charCodeAt(i + 2)] << 6) |
+      revLookup[b64.charCodeAt(i + 3)]
+    arr[curByte++] = (tmp >> 16) & 0xFF
+    arr[curByte++] = (tmp >> 8) & 0xFF
+    arr[curByte++] = tmp & 0xFF
+  }
+
+  if (placeHoldersLen === 2) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 2) |
+      (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[curByte++] = tmp & 0xFF
+  }
+
+  if (placeHoldersLen === 1) {
+    tmp =
+      (revLookup[b64.charCodeAt(i)] << 10) |
+      (revLookup[b64.charCodeAt(i + 1)] << 4) |
+      (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[curByte++] = (tmp >> 8) & 0xFF
+    arr[curByte++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] +
+    lookup[num >> 12 & 0x3F] +
+    lookup[num >> 6 & 0x3F] +
+    lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp =
+      ((uint8[i] << 16) & 0xFF0000) +
+      ((uint8[i + 1] << 8) & 0xFF00) +
+      (uint8[i + 2] & 0xFF)
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(
+      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
+    ))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    parts.push(
+      lookup[tmp >> 2] +
+      lookup[(tmp << 4) & 0x3F] +
+      '=='
+    )
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
+    parts.push(
+      lookup[tmp >> 10] +
+      lookup[(tmp >> 4) & 0x3F] +
+      lookup[(tmp << 2) & 0x3F] +
+      '='
+    )
+  }
+
+  return parts.join('')
+}
diff --git a/node_modules/base64-js/lib/b64.js b/node_modules/base64-js/lib/b64.js
deleted file mode 100644
index 46001d2..0000000
--- a/node_modules/base64-js/lib/b64.js
+++ /dev/null
@@ -1,124 +0,0 @@
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-;(function (exports) {
-	'use strict';
-
-  var Arr = (typeof Uint8Array !== 'undefined')
-    ? Uint8Array
-    : Array
-
-	var PLUS   = '+'.charCodeAt(0)
-	var SLASH  = '/'.charCodeAt(0)
-	var NUMBER = '0'.charCodeAt(0)
-	var LOWER  = 'a'.charCodeAt(0)
-	var UPPER  = 'A'.charCodeAt(0)
-	var PLUS_URL_SAFE = '-'.charCodeAt(0)
-	var SLASH_URL_SAFE = '_'.charCodeAt(0)
-
-	function decode (elt) {
-		var code = elt.charCodeAt(0)
-		if (code === PLUS ||
-		    code === PLUS_URL_SAFE)
-			return 62 // '+'
-		if (code === SLASH ||
-		    code === SLASH_URL_SAFE)
-			return 63 // '/'
-		if (code < NUMBER)
-			return -1 //no match
-		if (code < NUMBER + 10)
-			return code - NUMBER + 26 + 26
-		if (code < UPPER + 26)
-			return code - UPPER
-		if (code < LOWER + 26)
-			return code - LOWER + 26
-	}
-
-	function b64ToByteArray (b64) {
-		var i, j, l, tmp, placeHolders, arr
-
-		if (b64.length % 4 > 0) {
-			throw new Error('Invalid string. Length must be a multiple of 4')
-		}
-
-		// the number of equal signs (place holders)
-		// if there are two placeholders, than the two characters before it
-		// represent one byte
-		// if there is only one, then the three characters before it represent 2 bytes
-		// this is just a cheap hack to not do indexOf twice
-		var len = b64.length
-		placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
-
-		// base64 is 4/3 + up to two characters of the original data
-		arr = new Arr(b64.length * 3 / 4 - placeHolders)
-
-		// if there are placeholders, only get up to the last complete 4 chars
-		l = placeHolders > 0 ? b64.length - 4 : b64.length
-
-		var L = 0
-
-		function push (v) {
-			arr[L++] = v
-		}
-
-		for (i = 0, j = 0; i < l; i += 4, j += 3) {
-			tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
-			push((tmp & 0xFF0000) >> 16)
-			push((tmp & 0xFF00) >> 8)
-			push(tmp & 0xFF)
-		}
-
-		if (placeHolders === 2) {
-			tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
-			push(tmp & 0xFF)
-		} else if (placeHolders === 1) {
-			tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
-			push((tmp >> 8) & 0xFF)
-			push(tmp & 0xFF)
-		}
-
-		return arr
-	}
-
-	function uint8ToBase64 (uint8) {
-		var i,
-			extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
-			output = "",
-			temp, length
-
-		function encode (num) {
-			return lookup.charAt(num)
-		}
-
-		function tripletToBase64 (num) {
-			return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
-		}
-
-		// go through the array every three bytes, we'll deal with trailing stuff later
-		for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
-			temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
-			output += tripletToBase64(temp)
-		}
-
-		// pad the end with zeros, but make sure to not forget the extra bytes
-		switch (extraBytes) {
-			case 1:
-				temp = uint8[uint8.length - 1]
-				output += encode(temp >> 2)
-				output += encode((temp << 4) & 0x3F)
-				output += '=='
-				break
-			case 2:
-				temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
-				output += encode(temp >> 10)
-				output += encode((temp >> 4) & 0x3F)
-				output += encode((temp << 2) & 0x3F)
-				output += '='
-				break
-		}
-
-		return output
-	}
-
-	exports.toByteArray = b64ToByteArray
-	exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
diff --git a/node_modules/base64-js/package.json b/node_modules/base64-js/package.json
index 801b9a1..035c078 100644
--- a/node_modules/base64-js/package.json
+++ b/node_modules/base64-js/package.json
@@ -1,32 +1,27 @@
 {
-  "_args": [
-    [
-      "base64-js@0.0.8",
-      "C:\\Projects\\Cordova\\cordova-windows"
-    ]
-  ],
-  "_from": "base64-js@0.0.8",
-  "_id": "base64-js@0.0.8",
+  "_from": "base64-js@^1.2.3",
+  "_id": "base64-js@1.3.0",
   "_inBundle": false,
-  "_integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=",
+  "_integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
   "_location": "/base64-js",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "range",
     "registry": true,
-    "raw": "base64-js@0.0.8",
+    "raw": "base64-js@^1.2.3",
     "name": "base64-js",
     "escapedName": "base64-js",
-    "rawSpec": "0.0.8",
+    "rawSpec": "^1.2.3",
     "saveSpec": null,
-    "fetchSpec": "0.0.8"
+    "fetchSpec": "^1.2.3"
   },
   "_requiredBy": [
     "/plist"
   ],
-  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
-  "_spec": "0.0.8",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+  "_shasum": "cab1e6118f051095e58b5281aea8c1cd22bfc0e3",
+  "_spec": "base64-js@^1.2.3",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/plist",
   "author": {
     "name": "T. Jameson Little",
     "email": "t.jameson.little@gmail.com"
@@ -34,36 +29,37 @@
   "bugs": {
     "url": "https://github.com/beatgammit/base64-js/issues"
   },
-  "dependencies": {},
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "Base64 encoding/decoding in pure JS",
   "devDependencies": {
-    "tape": "~2.3.2"
-  },
-  "engines": {
-    "node": ">= 0.4"
+    "benchmark": "^2.1.4",
+    "browserify": "^14.0.0",
+    "standard": "*",
+    "tape": "4.x",
+    "uglify-js": "^2.8.29"
   },
-  "homepage": "https://github.com/beatgammit/base64-js#readme",
+  "files": [
+    "test",
+    "index.js",
+    "base64js.min.js"
+  ],
+  "homepage": "https://github.com/beatgammit/base64-js",
+  "keywords": [
+    "base64"
+  ],
   "license": "MIT",
-  "main": "lib/b64.js",
+  "main": "index.js",
   "name": "base64-js",
   "repository": {
     "type": "git",
     "url": "git://github.com/beatgammit/base64-js.git"
   },
   "scripts": {
-    "test": "tape test/*.js"
-  },
-  "testling": {
-    "files": "test/*.js",
-    "browsers": [
-      "ie/6..latest",
-      "chrome/4..latest",
-      "firefox/3..latest",
-      "safari/5.1..latest",
-      "opera/11.0..latest",
-      "iphone/6",
-      "ipad/6"
-    ]
+    "build": "browserify -s base64js -r ./ | uglifyjs -m > base64js.min.js",
+    "lint": "standard",
+    "test": "npm run lint && npm run unit",
+    "unit": "tape test/*.js"
   },
-  "version": "0.0.8"
+  "version": "1.3.0"
 }
diff --git a/node_modules/base64-js/test/big-data.js b/node_modules/base64-js/test/big-data.js
new file mode 100644
index 0000000..107e09e
--- /dev/null
+++ b/node_modules/base64-js/test/big-data.js
@@ -0,0 +1,25 @@
+var test = require('tape')
+var b64 = require('../')
+
+test('convert big data to base64', function (t) {
+  var b64str, arr, i, length
+  var big = new Uint8Array(64 * 1024 * 1024)
+  for (i = 0, length = big.length; i < length; ++i) {
+    big[i] = i % 256
+  }
+  b64str = b64.fromByteArray(big)
+  arr = b64.toByteArray(b64str)
+  t.ok(equal(arr, big))
+  t.equal(b64.byteLength(b64str), arr.length)
+  t.end()
+})
+
+function equal (a, b) {
+  var i
+  var length = a.length
+  if (length !== b.length) return false
+  for (i = 0; i < length; ++i) {
+    if (a[i] !== b[i]) return false
+  }
+  return true
+}
diff --git a/node_modules/base64-js/test/convert.js b/node_modules/base64-js/test/convert.js
index 60b09c0..017a133 100644
--- a/node_modules/base64-js/test/convert.js
+++ b/node_modules/base64-js/test/convert.js
@@ -1,51 +1,88 @@
-var test = require('tape'),
-  b64 = require('../lib/b64'),
-	checks = [
-		'a',
-		'aa',
-		'aaa',
-		'hi',
-		'hi!',
-		'hi!!',
-		'sup',
-		'sup?',
-		'sup?!'
-	];
+var test = require('tape')
+var b64 = require('../')
+var checks = [
+  'a',
+  'aa',
+  'aaa',
+  'hi',
+  'hi!',
+  'hi!!',
+  'sup',
+  'sup?',
+  'sup?!'
+]
 
 test('convert to base64 and back', function (t) {
-  t.plan(checks.length);
+  t.plan(checks.length * 2)
 
   for (var i = 0; i < checks.length; i++) {
-    var check = checks[i],
-      b64Str,
-      arr,
-      str;
+    var check = checks[i]
+    var b64Str, arr, str
 
-    b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0); }));
+    b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0) }))
 
-    arr = b64.toByteArray(b64Str);
-    str = map(arr, function (byte) { return String.fromCharCode(byte); }).join('');
+    arr = b64.toByteArray(b64Str)
+    str = map(arr, function (byte) { return String.fromCharCode(byte) }).join('')
 
-    t.equal(check, str, 'Checked ' + check);
+    t.equal(check, str, 'Checked ' + check)
+    t.equal(b64.byteLength(b64Str), arr.length, 'Checked length for ' + check)
   }
+})
 
-});
+var data = [
+  [[0, 0, 0], 'AAAA'],
+  [[0, 0, 1], 'AAAB'],
+  [[0, 1, -1], 'AAH/'],
+  [[1, 1, 1], 'AQEB'],
+  [[0, -73, 23], 'ALcX']
+]
+
+test('convert known data to string', function (t) {
+  for (var i = 0; i < data.length; i++) {
+    var bytes = data[i][0]
+    var expected = data[i][1]
+    var actual = b64.fromByteArray(bytes)
+    t.equal(actual, expected, 'Ensure that ' + bytes + ' serialise to ' + expected)
+  }
+  t.end()
+})
+
+test('convert known data from string', function (t) {
+  for (var i = 0; i < data.length; i++) {
+    var expected = data[i][0]
+    var string = data[i][1]
+    var actual = b64.toByteArray(string)
+    t.ok(equal(actual, expected), 'Ensure that ' + string + ' deserialise to ' + expected)
+    var length = b64.byteLength(string)
+    t.equal(length, expected.length, 'Ensure that ' + string + ' has byte lentgh of ' + expected.length)
+  }
+  t.end()
+})
+
+function equal (a, b) {
+  var i
+  var length = a.length
+  if (length !== b.length) return false
+  for (i = 0; i < length; ++i) {
+    if ((a[i] & 0xFF) !== (b[i] & 0xFF)) return false
+  }
+  return true
+}
 
 function map (arr, callback) {
-	var res = [],
-    kValue,
-    mappedValue;
-
-	for (var k = 0, len = arr.length; k < len; k++) {
-		if ((typeof arr === 'string' && !!arr.charAt(k))) {
-			kValue = arr.charAt(k);
-			mappedValue = callback(kValue, k, arr);
-			res[k] = mappedValue;
-		} else if (typeof arr !== 'string' && k in arr) {
-			kValue = arr[k];
-			mappedValue = callback(kValue, k, arr);
-			res[k] = mappedValue;
-		}
-	}
-	return res;
+  var res = []
+  var kValue, mappedValue
+
+  for (var k = 0, len = arr.length; k < len; k++) {
+    if ((typeof arr === 'string' && !!arr.charAt(k))) {
+      kValue = arr.charAt(k)
+      mappedValue = callback(kValue, k, arr)
+      res[k] = mappedValue
+    } else if (typeof arr !== 'string' && k in arr) {
+      kValue = arr[k]
+      mappedValue = callback(kValue, k, arr)
+      res[k] = mappedValue
+    }
+  }
+  return res
 }
diff --git a/node_modules/base64-js/test/corrupt.js b/node_modules/base64-js/test/corrupt.js
new file mode 100644
index 0000000..44c6e71
--- /dev/null
+++ b/node_modules/base64-js/test/corrupt.js
@@ -0,0 +1,10 @@
+var test = require('tape')
+var b64 = require('../')
+
+test('padding bytes found inside base64 string', function (t) {
+  // See https://github.com/beatgammit/base64-js/issues/42
+  var str = 'SQ==QU0='
+  t.deepEqual(b64.toByteArray(str), new Uint8Array([73]))
+  t.equal(b64.byteLength(str), 1)
+  t.end()
+})
diff --git a/node_modules/base64-js/test/url-safe.js b/node_modules/base64-js/test/url-safe.js
index dc437e9..4382e06 100644
--- a/node_modules/base64-js/test/url-safe.js
+++ b/node_modules/base64-js/test/url-safe.js
@@ -1,18 +1,24 @@
-var test = require('tape'),
-  b64 = require('../lib/b64');
+var test = require('tape')
+var b64 = require('../')
 
 test('decode url-safe style base64 strings', function (t) {
-  var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff];
+  var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]
 
-  var actual = b64.toByteArray('//++/++/++//');
+  var str = '//++/++/++//'
+  var actual = b64.toByteArray(str)
   for (var i = 0; i < actual.length; i++) {
     t.equal(actual[i], expected[i])
   }
 
-  actual = b64.toByteArray('__--_--_--__');
-  for (var i = 0; i < actual.length; i++) {
+  t.equal(b64.byteLength(str), actual.length)
+
+  str = '__--_--_--__'
+  actual = b64.toByteArray(str)
+  for (i = 0; i < actual.length; i++) {
     t.equal(actual[i], expected[i])
   }
-  
-  t.end();
-});
+
+  t.equal(b64.byteLength(str), actual.length)
+
+  t.end()
+})
diff --git a/node_modules/big-integer/BigInteger.d.ts b/node_modules/big-integer/BigInteger.d.ts
index d70e401..a367aa1 100644
--- a/node_modules/big-integer/BigInteger.d.ts
+++ b/node_modules/big-integer/BigInteger.d.ts
@@ -101,6 +101,11 @@ declare namespace bigInt {
         and(number: BigNumber): BigInteger;
 
         /**
+         * Returns the number of digits required to represent a bigInt in binary.
+         */
+        bitLength(): BigInteger;
+
+        /**
          * Performs a comparison between two numbers. If the numbers are equal, it returns 0.
          * If the first number is greater, it returns 1. If the first number is lesser, it returns -1.
          */
@@ -338,6 +343,12 @@ declare namespace bigInt {
         times(number: BigNumber): BigInteger;
 
         /**
+         *
+         * Converts a bigInt to an object representing it as an array of integers module the given radix.
+         */
+         toArray(radix: number): BaseArray;
+
+        /**
          * Converts a bigInt into a native Javascript number. Loses precision for numbers outside the range.
          */
         toJSNumber(): number;
@@ -2366,4 +2377,9 @@ declare namespace bigInt {
         '998': BigInteger;
         '999': BigInteger;
     }
+
+    interface BaseArray {
+        value: number[],
+        isNegative: boolean
+    }
 }
diff --git a/node_modules/big-integer/BigInteger.js b/node_modules/big-integer/BigInteger.js
index 9a65a5f..697e9c8 100644
--- a/node_modules/big-integer/BigInteger.js
+++ b/node_modules/big-integer/BigInteger.js
@@ -179,7 +179,7 @@ var bigInt = (function (undefined) {
     function subtractAny(a, b, sign) {
         var value;
         if (compareAbs(a, b) >= 0) {
-            value = subtract(a,b);
+            value = subtract(a, b);
         } else {
             value = subtract(b, a);
             sign = !sign;
@@ -354,16 +354,16 @@ var bigInt = (function (undefined) {
         return new BigInteger(multiplyLong(b, smallToArray(a)), sign);
     }
     SmallInteger.prototype._multiplyBySmall = function (a) {
-            if (isPrecise(a.value * this.value)) {
-                return new SmallInteger(a.value * this.value);
-            }
-            return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);
+        if (isPrecise(a.value * this.value)) {
+            return new SmallInteger(a.value * this.value);
+        }
+        return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);
     };
     BigInteger.prototype._multiplyBySmall = function (a) {
-            if (a.value === 0) return Integer[0];
-            if (a.value === 1) return this;
-            if (a.value === -1) return this.negate();
-            return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);
+        if (a.value === 0) return Integer[0];
+        if (a.value === 1) return this;
+        if (a.value === -1) return this.negate();
+        return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);
     };
     SmallInteger.prototype.multiply = function (v) {
         return parseValue(v)._multiplyBySmall(this);
@@ -416,7 +416,7 @@ var bigInt = (function (undefined) {
         for (shift = a_l - b_l; shift >= 0; shift--) {
             quotientDigit = base - 1;
             if (remainder[shift + b_l] !== divisorMostSignificantDigit) {
-              quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);
+                quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);
             }
             // quotientDigit <= base - 1
             carry = 0;
@@ -799,7 +799,7 @@ var bigInt = (function (undefined) {
         for (i = 0; i < a.length; i++) {
             x = bigInt(a[i]).modPow(b, n);
             if (x.equals(Integer[1]) || x.equals(nPrev)) continue;
-            for (t = true, d = b; t && d.lesser(nPrev) ; d = d.multiply(2)) {
+            for (t = true, d = b; t && d.lesser(nPrev); d = d.multiply(2)) {
                 x = x.square().mod(n);
                 if (x.equals(nPrev)) t = false;
             }
@@ -975,6 +975,29 @@ var bigInt = (function (undefined) {
         return x & -x;
     }
 
+    function integerLogarithm(value, base) {
+        if (base.compareTo(value) <= 0) {
+            var tmp = integerLogarithm(value, base.square(base));
+            var p = tmp.p;
+            var e = tmp.e;
+            var t = p.multiply(base);
+            return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };
+        }
+        return { p: bigInt(1), e: 0 };
+    }
+
+    BigInteger.prototype.bitLength = function () {
+        var n = this;
+        if (n.compareTo(bigInt(0)) < 0) {
+            n = n.negate().subtract(bigInt(1));
+        }
+        if (n.compareTo(bigInt(0)) === 0) {
+            return bigInt(0);
+        }
+        return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));
+    }
+    SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;
+
     function max(a, b) {
         a = parseValue(a);
         b = parseValue(b);
@@ -1036,26 +1059,26 @@ var bigInt = (function (undefined) {
     }
     var parseBase = function (text, base) {
         var length = text.length;
-		var i;
-		var absBase = Math.abs(base);
-		for(var i = 0; i < length; i++) {
-			var c = text[i].toLowerCase();
-			if(c === "-") continue;
-			if(/[a-z0-9]/.test(c)) {
-			    if(/[0-9]/.test(c) && +c >= absBase) {
-					if(c === "1" && absBase === 1) continue;
+        var i;
+        var absBase = Math.abs(base);
+        for (var i = 0; i < length; i++) {
+            var c = text[i].toLowerCase();
+            if (c === "-") continue;
+            if (/[a-z0-9]/.test(c)) {
+                if (/[0-9]/.test(c) && +c >= absBase) {
+                    if (c === "1" && absBase === 1) continue;
+                    throw new Error(c + " is not a valid digit in base " + base + ".");
+                } else if (c.charCodeAt(0) - 87 >= absBase) {
                     throw new Error(c + " is not a valid digit in base " + base + ".");
-				} else if(c.charCodeAt(0) - 87 >= absBase) {
-					throw new Error(c + " is not a valid digit in base " + base + ".");
-				}
-			}
-		}
+                }
+            }
+        }
         if (2 <= base && base <= 36) {
             if (length <= LOG_MAX_INT / Math.log(base)) {
-				var result = parseInt(text, base);
-				if(isNaN(result)) {
-					throw new Error(c + " is not a valid digit in base " + base + ".");
-				}
+                var result = parseInt(text, base);
+                if (isNaN(result)) {
+                    throw new Error(c + " is not a valid digit in base " + base + ".");
+                }
                 return new SmallInteger(parseInt(text, base));
             }
         }
@@ -1087,32 +1110,50 @@ var bigInt = (function (undefined) {
     }
 
     function stringify(digit) {
-        var v = digit.value;
-        if (typeof v === "number") v = [v];
-        if (v.length === 1 && v[0] <= 35) {
-            return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(v[0]);
+        if (digit <= 35) {
+            return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(digit);
         }
-        return "<" + v + ">";
+        return "<" + digit + ">";
     }
+
     function toBase(n, base) {
         base = bigInt(base);
         if (base.isZero()) {
-            if (n.isZero()) return "0";
+            if (n.isZero()) return { value: [0], isNegative: false };
             throw new Error("Cannot convert nonzero numbers to base 0.");
         }
         if (base.equals(-1)) {
-            if (n.isZero()) return "0";
-            if (n.isNegative()) return new Array(1 - n).join("10");
-            return "1" + new Array(+n).join("01");
-        }
-        var minusSign = "";
+            if (n.isZero()) return { value: [0], isNegative: false };
+            if (n.isNegative())
+                return {
+                    value: [].concat.apply([], Array.apply(null, Array(-n))
+                        .map(Array.prototype.valueOf, [1, 0])
+                    ),
+                    isNegative: false
+                };
+
+            var arr = Array.apply(null, Array(+n - 1))
+                .map(Array.prototype.valueOf, [0, 1]);
+            arr.unshift([1]);
+            return {
+                value: [].concat.apply([], arr),
+                isNegative: false
+            };
+        }
+
+        var neg = false;
         if (n.isNegative() && base.isPositive()) {
-            minusSign = "-";
+            neg = true;
             n = n.abs();
         }
         if (base.equals(1)) {
-            if (n.isZero()) return "0";
-            return minusSign + new Array(+n + 1).join(1);
+            if (n.isZero()) return { value: [0], isNegative: false };
+
+            return {
+                value: Array.apply(null, Array(+n))
+                    .map(Number.prototype.valueOf, 1),
+                isNegative: neg
+            };
         }
         var out = [];
         var left = n, divmod;
@@ -1124,15 +1165,28 @@ var bigInt = (function (undefined) {
                 digit = base.minus(digit).abs();
                 left = left.next();
             }
-            out.push(stringify(digit));
+            out.push(digit.toJSNumber());
         }
-        out.push(stringify(left));
-        return minusSign + out.reverse().join("");
+        out.push(left.toJSNumber());
+        return { value: out.reverse(), isNegative: neg };
     }
 
+    function toBaseString(n, base) {
+        var arr = toBase(n, base);
+        return (arr.isNegative ? "-" : "") + arr.value.map(stringify).join('');
+    }
+
+    BigInteger.prototype.toArray = function (radix) {
+        return toBase(this, radix);
+    };
+
+    SmallInteger.prototype.toArray = function (radix) {
+        return toBase(this, radix);
+    };
+
     BigInteger.prototype.toString = function (radix) {
         if (radix === undefined) radix = 10;
-        if (radix !== 10) return toBase(this, radix);
+        if (radix !== 10) return toBaseString(this, radix);
         var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit;
         while (--l >= 0) {
             digit = String(v[l]);
@@ -1144,13 +1198,13 @@ var bigInt = (function (undefined) {
 
     SmallInteger.prototype.toString = function (radix) {
         if (radix === undefined) radix = 10;
-        if (radix != 10) return toBase(this, radix);
+        if (radix != 10) return toBaseString(this, radix);
         return String(this.value);
     };
-    BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function() { return this.toString(); }
+    BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }
 
     BigInteger.prototype.valueOf = function () {
-        return +this.toString();
+        return parseInt(this.toString(), 10);
     };
     BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;
 
@@ -1160,42 +1214,42 @@ var bigInt = (function (undefined) {
     SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
 
     function parseStringValue(v) {
-            if (isPrecise(+v)) {
-                var x = +v;
-                if (x === truncate(x))
-                    return new SmallInteger(x);
-                throw "Invalid integer: " + v;
-            }
-            var sign = v[0] === "-";
-            if (sign) v = v.slice(1);
-            var split = v.split(/e/i);
-            if (split.length > 2) throw new Error("Invalid integer: " + split.join("e"));
-            if (split.length === 2) {
-                var exp = split[1];
-                if (exp[0] === "+") exp = exp.slice(1);
-                exp = +exp;
-                if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent.");
-                var text = split[0];
-                var decimalPlace = text.indexOf(".");
-                if (decimalPlace >= 0) {
-                    exp -= text.length - decimalPlace - 1;
-                    text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);
-                }
-                if (exp < 0) throw new Error("Cannot include negative exponent part for integers");
-                text += (new Array(exp + 1)).join("0");
-                v = text;
+        if (isPrecise(+v)) {
+            var x = +v;
+            if (x === truncate(x))
+                return new SmallInteger(x);
+            throw new Error("Invalid integer: " + v);
+        }
+        var sign = v[0] === "-";
+        if (sign) v = v.slice(1);
+        var split = v.split(/e/i);
+        if (split.length > 2) throw new Error("Invalid integer: " + split.join("e"));
+        if (split.length === 2) {
+            var exp = split[1];
+            if (exp[0] === "+") exp = exp.slice(1);
+            exp = +exp;
+            if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent.");
+            var text = split[0];
+            var decimalPlace = text.indexOf(".");
+            if (decimalPlace >= 0) {
+                exp -= text.length - decimalPlace - 1;
+                text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);
             }
-            var isValid = /^([0-9][0-9]*)$/.test(v);
-            if (!isValid) throw new Error("Invalid integer: " + v);
-            var r = [], max = v.length, l = LOG_BASE, min = max - l;
-            while (max > 0) {
-                r.push(+v.slice(min, max));
-                min -= l;
-                if (min < 0) min = 0;
-                max -= l;
-            }
-            trim(r);
-            return new BigInteger(r, sign);
+            if (exp < 0) throw new Error("Cannot include negative exponent part for integers");
+            text += (new Array(exp + 1)).join("0");
+            v = text;
+        }
+        var isValid = /^([0-9][0-9]*)$/.test(v);
+        if (!isValid) throw new Error("Invalid integer: " + v);
+        var r = [], max = v.length, l = LOG_BASE, min = max - l;
+        while (max > 0) {
+            r.push(+v.slice(min, max));
+            min -= l;
+            if (min < 0) min = 0;
+            max -= l;
+        }
+        trim(r);
+        return new BigInteger(r, sign);
     }
 
     function parseNumberValue(v) {
@@ -1244,8 +1298,8 @@ if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
 }
 
 //amd check
-if ( typeof define === "function" && define.amd ) {
-  define( "big-integer", [], function() {
-    return bigInt;
-  });
+if (typeof define === "function" && define.amd) {
+    define("big-integer", [], function () {
+        return bigInt;
+    });
 }
diff --git a/node_modules/big-integer/BigInteger.min.js b/node_modules/big-integer/BigInteger.min.js
index a868e44..c775f97 100644
--- a/node_modules/big-integer/BigInteger.min.js
+++ b/node_modules/big-integer/BigInteger.min.js
@@ -1 +1 @@
-var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(valu [...]
\ No newline at end of file
+var bigInt=function(undefined){"use strict";var BASE=1e7,LOG_BASE=7,MAX_INT=9007199254740992,MAX_INT_ARR=smallToArray(MAX_INT),LOG_MAX_INT=Math.log(MAX_INT);function Integer(v,radix){if(typeof v==="undefined")return Integer[0];if(typeof radix!=="undefined")return+radix===10?parseValue(v):parseBase(v,radix);return parseValue(v)}function BigInteger(value,sign){this.value=value;this.sign=sign;this.isSmall=false}BigInteger.prototype=Object.create(Integer.prototype);function SmallInteger(valu [...]
\ No newline at end of file
diff --git a/node_modules/big-integer/README.md b/node_modules/big-integer/README.md
index 5824f7e..55ab8d3 100644
--- a/node_modules/big-integer/README.md
+++ b/node_modules/big-integer/README.md
@@ -92,6 +92,12 @@ Performs the bitwise AND operation. The operands are treated as if they were rep
  - `bigInt(6).and(3)` => `2`
  - `bigInt(6).and(-3)` => `4`
 
+#### `bitLength()`
+
+Returns the number of digits required to represent a bigInt in binary.
+
+ - `bigInt(5)` => `3` (since 5 is `101` in binary, which is three digits long)
+
 #### `compare(number)`
 
 Performs a comparison between two numbers. If the numbers are equal, it returns `0`. If the first number is greater, it returns `1`. If the first number is lesser, it returns `-1`.
@@ -406,6 +412,50 @@ Alias for the `multiply` method.
  
 [View benchmarks for this method](http://peterolson.github.io/BigInteger.js/benchmark/#Multiplication)
 
+#### `toArray(radix)`
+
+Converts a bigInt into an object with the properties "value" and "isNegative." "Value" is an array of integers modulo the given radix. "isNegative" is a boolean that represents the sign of the result.
+
+ - `bigInt("1e9").toArray(10)` => {
+     value: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+     isNegative: false
+   }
+ - `bigInt("1e9").toArray(16)` => {
+     value: [3, 11, 9, 10, 12, 10, 0, 0],
+     isNegative: false
+   }
+ - `bigInt(567890).toArray(100)` => {
+     value: [56, 78, 90],
+     isNegative: false
+   }
+
+Negative bases are supported.
+
+ - `bigInt(12345).toArray(-10)` => {
+     value: [2, 8, 4, 6, 5],
+     isNegative: false
+   }
+
+Base 1 and base -1 are also supported.
+
+ - `bigInt(-15).toArray(1)` => {
+     value: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+     isNegative: true
+   }
+ - `bigInt(-15).toArray(-1)` => {
+     value: [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+             0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
+     isNegative: false
+   }
+
+Base 0 is only allowed for the number zero.
+
+ - `bigInt(0).toArray(0)` => {
+     value: [0],
+     isNegative: false
+   }
+ - `bigInt(1).toArray(0)` => `Error: Cannot convert nonzero numbers to base 0.`
+
 #### `toJSNumber()`
 
 Converts a bigInt into a native Javascript number. Loses precision for numbers outside the range `[-9007199254740992, 9007199254740992]`.
diff --git a/node_modules/big-integer/package.json b/node_modules/big-integer/package.json
index 623f4c2..4765db5 100644
--- a/node_modules/big-integer/package.json
+++ b/node_modules/big-integer/package.json
@@ -1,32 +1,27 @@
 {
-  "_args": [
-    [
-      "big-integer@1.6.26",
-      "C:\\Projects\\Cordova\\cordova-windows"
-    ]
-  ],
-  "_from": "big-integer@1.6.26",
-  "_id": "big-integer@1.6.26",
+  "_from": "big-integer@^1.6.7",
+  "_id": "big-integer@1.6.31",
   "_inBundle": false,
-  "_integrity": "sha1-OvFnL6Ytry1eyvrPblqg0l4Cwcg=",
+  "_integrity": "sha512-lDbZNHHwxDKnjP7LWg2leO+tjs4SyVs2Z83dsR1Idbe2urRnxZAUdeQ8YBhHaGaWK/4WM3mz+RlbZsgqck17CA==",
   "_location": "/big-integer",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "range",
     "registry": true,
-    "raw": "big-integer@1.6.26",
+    "raw": "big-integer@^1.6.7",
     "name": "big-integer",
     "escapedName": "big-integer",
-    "rawSpec": "1.6.26",
+    "rawSpec": "^1.6.7",
     "saveSpec": null,
-    "fetchSpec": "1.6.26"
+    "fetchSpec": "^1.6.7"
   },
   "_requiredBy": [
     "/bplist-parser"
   ],
-  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.26.tgz",
-  "_spec": "1.6.26",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.31.tgz",
+  "_shasum": "6d7852486e67c642502dcc03f7225a245c9fc7fa",
+  "_spec": "big-integer@^1.6.7",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/bplist-parser",
   "author": {
     "name": "Peter Olson",
     "email": "peter.e.c.olson+npm@gmail.com"
@@ -35,15 +30,18 @@
   "bugs": {
     "url": "https://github.com/peterolson/BigInteger.js/issues"
   },
+  "bundleDependencies": false,
   "contributors": [],
+  "deprecated": false,
   "description": "An arbitrary length integer library for Javascript",
   "devDependencies": {
-    "@types/lodash": "^4.14.64",
-    "@types/node": "^7.0.22",
+    "@types/lodash": "^4.14.109",
+    "@types/node": "^7.0.65",
     "coveralls": "^2.11.4",
     "jasmine": "2.1.x",
     "jasmine-core": "^2.3.4",
-    "karma": "^0.13.3",
+    "karma": "^0.13.22",
+    "karma-cli": "^1.0.1",
     "karma-coverage": "^0.4.2",
     "karma-jasmine": "^0.3.6",
     "karma-phantomjs-launcher": "^1.0.4",
@@ -75,8 +73,8 @@
   },
   "scripts": {
     "minify": "uglifyjs BigInteger.js -o BigInteger.min.js",
-    "test": "tsc && node_modules/.bin/karma start my.conf.js && node spec/tsDefinitions.js"
+    "test": "tsc && karma start my.conf.js && node spec/tsDefinitions.js"
   },
   "typings": "./BigInteger.d.ts",
-  "version": "1.6.26"
+  "version": "1.6.31"
 }
diff --git a/node_modules/os-homedir/license b/node_modules/brace-expansion/LICENSE
similarity index 83%
rename from node_modules/os-homedir/license
rename to node_modules/brace-expansion/LICENSE
index 654d0bf..de32266 100644
--- a/node_modules/os-homedir/license
+++ b/node_modules/brace-expansion/LICENSE
@@ -1,6 +1,6 @@
-The MIT License (MIT)
+MIT License
 
-Copyright (c) Sindre Sorhus <si...@gmail.com> (sindresorhus.com)
+Copyright (c) 2013 Julian Gruber <ju...@juliangruber.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ 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 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.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md
index 1793929..6b4e0e1 100644
--- a/node_modules/brace-expansion/README.md
+++ b/node_modules/brace-expansion/README.md
@@ -5,6 +5,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)
+[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/)
 
 [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
 
@@ -62,7 +63,7 @@ Valid expansions are:
 // {a,b,...}
 ```
 
-A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
+A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
 
 ```js
 /^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
@@ -97,6 +98,12 @@ npm install brace-expansion
 - [Julian Gruber](https://github.com/juliangruber)
 - [Isaac Z. Schlueter](https://github.com/isaacs)
 
+## Sponsors
+
+This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
+
+Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
+
 ## License
 
 (MIT)
diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js
index 955f27c..0478be8 100644
--- a/node_modules/brace-expansion/index.js
+++ b/node_modules/brace-expansion/index.js
@@ -106,7 +106,7 @@ function expand(str, isTop) {
   var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
   var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
   var isSequence = isNumericSequence || isAlphaSequence;
-  var isOptions = /^(.*,)+(.+)?$/.test(m.body);
+  var isOptions = m.body.indexOf(',') >= 0;
   if (!isSequence && !isOptions) {
     // {a},b}
     if (m.post.match(/,.*\}/)) {
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
index a680fc9..d04b4a8 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -1,32 +1,27 @@
 {
-  "_args": [
-    [
-      "brace-expansion@1.1.6",
-      "C:\\Projects\\Cordova\\cordova-windows"
-    ]
-  ],
-  "_from": "brace-expansion@1.1.6",
-  "_id": "brace-expansion@1.1.6",
+  "_from": "brace-expansion@^1.1.7",
+  "_id": "brace-expansion@1.1.11",
   "_inBundle": false,
-  "_integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
+  "_integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
   "_location": "/brace-expansion",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "range",
     "registry": true,
-    "raw": "brace-expansion@1.1.6",
+    "raw": "brace-expansion@^1.1.7",
     "name": "brace-expansion",
     "escapedName": "brace-expansion",
-    "rawSpec": "1.1.6",
+    "rawSpec": "^1.1.7",
     "saveSpec": null,
-    "fetchSpec": "1.1.6"
+    "fetchSpec": "^1.1.7"
   },
   "_requiredBy": [
     "/minimatch"
   ],
-  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
-  "_spec": "1.1.6",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+  "_shasum": "3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
+  "_spec": "brace-expansion@^1.1.7",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/minimatch",
   "author": {
     "name": "Julian Gruber",
     "email": "mail@juliangruber.com",
@@ -35,12 +30,15 @@
   "bugs": {
     "url": "https://github.com/juliangruber/brace-expansion/issues"
   },
+  "bundleDependencies": false,
   "dependencies": {
-    "balanced-match": "^0.4.1",
+    "balanced-match": "^1.0.0",
     "concat-map": "0.0.1"
   },
+  "deprecated": false,
   "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
+    "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
   "homepage": "https://github.com/juliangruber/brace-expansion",
@@ -53,6 +51,7 @@
     "url": "git://github.com/juliangruber/brace-expansion.git"
   },
   "scripts": {
+    "bench": "matcha test/perf/bench.js",
     "gentest": "bash test/generate.sh",
     "test": "tape test/*.js"
   },
@@ -72,5 +71,5 @@
       "android-browser/4.2..latest"
     ]
   },
-  "version": "1.1.6"
+  "version": "1.1.11"
 }
diff --git a/node_modules/cordova-common/.eslintrc.yml b/node_modules/cordova-common/.eslintrc.yml
index 7701c82..21a8e7b 100644
--- a/node_modules/cordova-common/.eslintrc.yml
+++ b/node_modules/cordova-common/.eslintrc.yml
@@ -8,4 +8,6 @@ rules:
   padded-blocks: off
   operator-linebreak: off
   no-throw-literal: off
-  
\ No newline at end of file
+  no-unused-vars:
+    - error
+    - args: after-used
diff --git a/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md b/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..91582f4
--- /dev/null
+++ b/node_modules/cordova-common/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,22 @@
+<!--
+Please make sure the checklist boxes are all checked before submitting the PR. The checklist
+is intended as a quick reference, for complete details please see our Contributor Guidelines:
+
+http://cordova.apache.org/contribute/contribute_guidelines.html
+
+Thanks!
+-->
+
+### Platforms affected
+
+
+### What does this PR do?
+
+
+### What testing has been done on this change?
+
+
+### Checklist
+- [ ] [Reported an issue](http://cordova.apache.org/contribute/issues.html) in the JIRA database
+- [ ] Commit message follows the format: "CB-3232: (android) Fix bug with resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform affected.
+- [ ] Added automated test coverage as appropriate for this change.
diff --git a/node_modules/cordova-common/.jscs.json b/node_modules/cordova-common/.jscs.json
deleted file mode 100644
index 5cc7e26..0000000
--- a/node_modules/cordova-common/.jscs.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "disallowMixedSpacesAndTabs": true,
-    "disallowTrailingWhitespace": true,
-    "validateLineBreaks": "LF",
-    "validateIndentation": 4,
-    "requireLineFeedAtFileEnd": true,
-
-    "disallowSpaceAfterPrefixUnaryOperators": true,
-    "disallowSpaceBeforePostfixUnaryOperators": true,
-    "requireSpaceAfterLineComment": true,
-    "requireCapitalizedConstructors": true,
-
-    "disallowSpacesInNamedFunctionExpression": {
-        "beforeOpeningRoundBrace": true
-    },
-
-    "requireSpaceAfterKeywords": [
-      "if",
-      "else",
-      "for",
-      "while",
-      "do"
-    ]
-}
diff --git a/node_modules/cordova-common/.travis.yml b/node_modules/cordova-common/.travis.yml
index 4592c3e..b4e310d 100644
--- a/node_modules/cordova-common/.travis.yml
+++ b/node_modules/cordova-common/.travis.yml
@@ -6,6 +6,7 @@ node_js:
   - "4"
   - "6"
   - "8"
+  - "10"
 install:
   - npm install
   - npm install -g codecov
diff --git a/node_modules/cordova-common/README.md b/node_modules/cordova-common/README.md
index 5659c57..422c98b 100644
--- a/node_modules/cordova-common/README.md
+++ b/node_modules/cordova-common/README.md
@@ -24,11 +24,11 @@
 [![NPM](https://nodei.co/npm/cordova-common.png)](https://nodei.co/npm/cordova-common/)
 
 # cordova-common
-Expoeses shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
+Exposes shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
 ## Exposed APIs
 
 ### `events`
-  
+
 Represents special instance of NodeJS EventEmitter which is intended to be used to post events to cordova-lib and cordova-cli
 
 Usage:
@@ -122,7 +122,7 @@ superspawn.spawn('adb', ['devices'])
 
 ### `xmlHelpers`
 
-A set of utility methods for dealing with xml files.
+A set of utility methods for dealing with XML files.
 
 Usage:
 ```js
@@ -148,10 +148,8 @@ mungeUtil
 
 ## Setup
 * Clone this repository onto your local machine
-    `git clone https://git-wip-us.apache.org/repos/asf/cordova-lib.git`
-* In terminal, navigate to the inner cordova-common directory
-    `cd cordova-lib/cordova-common`
-* Install dependencies and npm-link
-    `npm install && npm link`
+    `git clone https://github.com/apache/cordova-common.git`
+* Navigate to cordova-common directory, install dependencies and npm-link
+    `cd cordova-common && npm install && npm link`
 * Navigate to cordova-lib directory and link cordova-common
-    `cd ../cordova-lib && npm link cordova-common && npm install`
+    `cd <cordova-lib directory> && npm link cordova-common && npm install`
diff --git a/node_modules/cordova-common/RELEASENOTES.md b/node_modules/cordova-common/RELEASENOTES.md
index 5dda362..bc4fe14 100644
--- a/node_modules/cordova-common/RELEASENOTES.md
+++ b/node_modules/cordova-common/RELEASENOTES.md
@@ -20,6 +20,20 @@
 -->
 # Cordova-common Release Notes
 
+### 2.2.3 (June 1, 2018)
+* Revert a minor refactoring that was incompatible with NodeJS 4.x. No change to functionality.
+
+### 2.2.2 (May 30, 2018)
+* [CB-13979](https://issues.apache.org/jira/browse/CB-13979) More consistency for `config.xml` lookups
+* [CB-14064](https://issues.apache.org/jira/browse/CB-14064) Remove Node 4 from CI matrix
+* [CB-14088](https://issues.apache.org/jira/browse/CB-14088) Update dependencies
+* [CB-11691](https://issues.apache.org/jira/browse/CB-11691) Fix for modifying binary plists
+* [CB-13770](https://issues.apache.org/jira/browse/CB-13770) Warn when <edit-config> or <config-file> not found
+* [CB-13471](https://issues.apache.org/jira/browse/CB-13471) Fix tests and path issues for **Windows**
+* [CB-13471](https://issues.apache.org/jira/browse/CB-13471) added unit test for config file provider
+* [CB-13744](https://issues.apache.org/jira/browse/CB-13744) Recognize storyboards as XML files
+* [CB-13674](https://issues.apache.org/jira/browse/CB-13674) Incremented package version to -dev
+
 ### 2.2.1 (Dec 14, 2017)
 * [CB-13674](https://issues.apache.org/jira/browse/CB-13674): updated dependencies
 
diff --git a/node_modules/cordova-common/appveyor.yml b/node_modules/cordova-common/appveyor.yml
index ffe5194..5302ae0 100644
--- a/node_modules/cordova-common/appveyor.yml
+++ b/node_modules/cordova-common/appveyor.yml
@@ -6,7 +6,8 @@ environment:
   - nodejs_version: "4"
   - nodejs_version: "6"
   - nodejs_version: "8"
-  
+  - nodejs_version: "10"
+
 install:
   - ps: Install-Product node $env:nodejs_version
   - npm install
diff --git a/node_modules/cordova-common/node_modules/.bin/shjs b/node_modules/cordova-common/node_modules/.bin/shjs
new file mode 120000
index 0000000..a044997
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/.bin/shjs
@@ -0,0 +1 @@
+../shelljs/bin/shjs
\ No newline at end of file
diff --git a/node_modules/cordova-common/node_modules/elementtree/.npmignore b/node_modules/cordova-common/node_modules/elementtree/.npmignore
deleted file mode 100644
index 3c3629e..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/node_modules/cordova-common/node_modules/elementtree/.travis.yml b/node_modules/cordova-common/node_modules/elementtree/.travis.yml
deleted file mode 100644
index 6f27c96..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: node_js
-
-node_js:
-  - 0.6
-
-script: make test
-
-notifications:
-  email:
-    - tomaz+travisci@tomaz.me
diff --git a/node_modules/cordova-common/node_modules/elementtree/CHANGES.md b/node_modules/cordova-common/node_modules/elementtree/CHANGES.md
deleted file mode 100644
index 50d415d..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/CHANGES.md
+++ /dev/null
@@ -1,39 +0,0 @@
-elementtree v0.1.6 (in development)
-
-* Add support for CData elements. (#14)
-  [hermannpencole]
-
-elementtree v0.1.5 - 2012-11-14
-
-* Fix a bug in the find() and findtext() method which could manifest itself
-  under some conditions.
-  [metagriffin]
-
-elementtree v0.1.4 - 2012-10-15
-
-* Allow user to use namespaced attributes when using find* functions.
-  [Andrew Lunny]
-
-elementtree v0.1.3 - 2012-09-21
-
-* Improve the output of text content in the tags (strip unnecessary line break
-  characters).
-
-[Darryl Pogue]
-
-elementtree v0.1.2 - 2012-09-04
-
- * Allow user to pass 'indent' option to ElementTree.write method. If this
-   option is specified (e.g. {'indent': 4}). XML will be pretty printed.
-   [Darryl Pogue, Tomaz Muraus]
-
- * Bump sax dependency version.
-
-elementtree v0.1.1 - 2011-09-23
-
- * Improve special character escaping.
-   [Ryan Phillips]
-
-elementtree v0.1.0 - 2011-09-05
-
- * Initial release.
diff --git a/node_modules/cordova-common/node_modules/elementtree/LICENSE.txt b/node_modules/cordova-common/node_modules/elementtree/LICENSE.txt
deleted file mode 100644
index 6b0b127..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/node_modules/cordova-common/node_modules/elementtree/Makefile b/node_modules/cordova-common/node_modules/elementtree/Makefile
deleted file mode 100644
index ab7c4e0..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-TESTS := \
-	tests/test-simple.js
-
-
-
-PATH := ./node_modules/.bin:$(PATH)
-
-WHISKEY := $(shell bash -c 'PATH=$(PATH) type -p whiskey')
-
-default: test
-
-test:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --scope-leaks --sequential --real-time --tests "${TESTS}"
-
-tap:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --test-reporter tap --sequential --real-time --tests "${TESTS}"
-
-coverage:
-	NODE_PATH=`pwd`/lib/ ${WHISKEY} --sequential --coverage  --coverage-reporter html --coverage-dir coverage_html --tests "${TESTS}"
-
-.PHONY: default test coverage tap scope
diff --git a/node_modules/cordova-common/node_modules/elementtree/NOTICE b/node_modules/cordova-common/node_modules/elementtree/NOTICE
deleted file mode 100644
index 28ad70a..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/NOTICE
+++ /dev/null
@@ -1,5 +0,0 @@
-node-elementtree
-Copyright (c) 2011, Rackspace, Inc.
-
-The ElementTree toolkit is Copyright (c) 1999-2007 by Fredrik Lundh
-
diff --git a/node_modules/cordova-common/node_modules/elementtree/README.md b/node_modules/cordova-common/node_modules/elementtree/README.md
deleted file mode 100644
index 738420c..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/README.md
+++ /dev/null
@@ -1,141 +0,0 @@
-node-elementtree
-====================
-
-node-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.
-
-Installation
-====================
-
-    $ npm install elementtree
-    
-Using the library
-====================
-
-For the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).
-
-Supported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).
-
-Example 1 – Creating An XML Document
-====================
-
-This example shows how to build a valid XML document that can be published to
-Atom Hopper. Atom Hopper is used internally as a bridge from products all the
-way to collecting revenue, called “Usage.”  MaaS and other products send similar
-events to it every time user performs an action on a resource
-(e.g. creates,updates or deletes). Below is an example of leveraging the API
-to create a new XML document.
-
-```javascript
-var et = require('elementtree');
-var XML = et.XML;
-var ElementTree = et.ElementTree;
-var element = et.Element;
-var subElement = et.SubElement;
-
-var date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,
-checks, resourceId, category, startTime, resourceName, etree, xml;
-
-date = new Date();
-
-root = element('entry');
-root.set('xmlns', 'http://www.w3.org/2005/Atom');
-
-tenantId = subElement(root, 'TenantId');
-tenantId.text = '12345';
-
-serviceName = subElement(root, 'ServiceName');
-serviceName.text = 'MaaS';
-
-resourceId = subElement(root, 'ResourceID');
-resourceId.text = 'enAAAA';
-
-usageId = subElement(root, 'UsageID');
-usageId.text = '550e8400-e29b-41d4-a716-446655440000';
-
-eventType = subElement(root, 'EventType');
-eventType.text = 'create';
-
-category = subElement(root, 'category');
-category.set('term', 'monitoring.entity.create');
-
-dataCenter = subElement(root, 'DataCenter');
-dataCenter.text = 'global';
-
-region = subElement(root, 'Region');
-region.text = 'global';
-
-startTime = subElement(root, 'StartTime');
-startTime.text = date;
-
-resourceName = subElement(root, 'ResourceName');
-resourceName.text = 'entity';
-
-etree = new ElementTree(root);
-xml = etree.write({'xml_declaration': false});
-console.log(xml);
-```
-
-As you can see, both et.Element and et.SubElement are factory methods which
-return a new instance of Element and SubElement class, respectively.
-When you create a new element (tag) you can use set method to set an attribute.
-To set the tag value, assign a value to the .text attribute.
-
-This example would output a document that looks like this:
-
-```xml
-<entry xmlns="http://www.w3.org/2005/Atom">
-  <TenantId>12345</TenantId>
-  <ServiceName>MaaS</ServiceName>
-  <ResourceID>enAAAA</ResourceID>
-  <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>
-  <EventType>create</EventType>
-  <category term="monitoring.entity.create"/>
-  <DataCenter>global</DataCenter>
-  <Region>global</Region>
-  <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>
-  <ResourceName>entity</ResourceName>
-</entry>
-```
-
-Example 2 – Parsing An XML Document
-====================
-
-This example shows how to parse an XML document and use simple XPath selectors.
-For demonstration purposes, we will use the XML document located at
-https://gist.github.com/2554343.
-
-Behind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,
-but the library has a concept of “parsers,” which means it’s pretty simple to
-add support for a different parser.
-
-```javascript
-var fs = require('fs');
-
-var et = require('elementtree');
-
-var XML = et.XML;
-var ElementTree = et.ElementTree;
-var element = et.Element;
-var subElement = et.SubElement;
-
-var data, etree;
-
-data = fs.readFileSync('document.xml').toString();
-etree = et.parse(data);
-
-console.log(etree.findall('./entry/TenantId').length); // 2
-console.log(etree.findtext('./entry/ServiceName')); // MaaS
-console.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create
-console.log(etree.findall('*/category/[@term="monitoring.entity.update"]').length); // 1
-```
-
-Build status
-====================
-
-[![Build Status](https://secure.travis-ci.org/racker/node-elementtree.png)](http://travis-ci.org/racker/node-elementtree)
-
-
-License
-====================
-
-node-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/constants.js b/node_modules/cordova-common/node_modules/elementtree/lib/constants.js
deleted file mode 100644
index b057faf..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/constants.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var DEFAULT_PARSER = 'sax';
-
-exports.DEFAULT_PARSER = DEFAULT_PARSER;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/elementpath.js b/node_modules/cordova-common/node_modules/elementtree/lib/elementpath.js
deleted file mode 100644
index 2e93f47..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/elementpath.js
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var sprintf = require('./sprintf').sprintf;
-
-var utils = require('./utils');
-var SyntaxError = require('./errors').SyntaxError;
-
-var _cache = {};
-
-var RE = new RegExp(
-  "(" +
-  "'[^']*'|\"[^\"]*\"|" +
-  "::|" +
-  "//?|" +
-  "\\.\\.|" +
-  "\\(\\)|" +
-  "[/.*:\\[\\]\\(\\)@=])|" +
-  "((?:\\{[^}]+\\})?[^/\\[\\]\\(\\)@=\\s]+)|" +
-  "\\s+", 'g'
-);
-
-var xpath_tokenizer = utils.findall.bind(null, RE);
-
-function prepare_tag(next, token) {
-  var tag = token[0];
-
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem._children.forEach(function(e) {
-        if (e.tag === tag) {
-          rv.push(e);
-        }
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_star(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem._children.forEach(function(e) {
-        rv.push(e);
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_dot(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      rv.push(elem);
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_iter(next, token) {
-  var tag;
-  token = next();
-
-  if (token[1] === '*') {
-    tag = '*';
-  }
-  else if (!token[1]) {
-    tag = token[0] || '';
-  }
-  else {
-    throw new SyntaxError(token);
-  }
-
-  function select(context, result) {
-    var i, len, elem, rv = [];
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-      elem.iter(tag, function(e) {
-        if (e !== elem) {
-          rv.push(e);
-        }
-      });
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-function prepare_dot_dot(next, token) {
-  function select(context, result) {
-    var i, len, elem, rv = [], parent_map = context.parent_map;
-
-    if (!parent_map) {
-      context.parent_map = parent_map = {};
-
-      context.root.iter(null, function(p) {
-        p._children.forEach(function(e) {
-          parent_map[e] = p;
-        });
-      });
-    }
-
-    for (i = 0, len = result.length; i < len; i++) {
-      elem = result[i];
-
-      if (parent_map.hasOwnProperty(elem)) {
-        rv.push(parent_map[elem]);
-      }
-    }
-
-    return rv;
-  }
-
-  return select;
-}
-
-
-function prepare_predicate(next, token) {
-  var tag, key, value, select;
-  token = next();
-
-  if (token[1] === '@') {
-    // attribute
-    token = next();
-
-    if (token[1]) {
-      throw new SyntaxError(token, 'Invalid attribute predicate');
-    }
-
-    key = token[0];
-    token = next();
-
-    if (token[1] === ']') {
-      select = function(context, result) {
-        var i, len, elem, rv = [];
-
-        for (i = 0, len = result.length; i < len; i++) {
-          elem = result[i];
-
-          if (elem.get(key)) {
-            rv.push(elem);
-          }
-        }
-
-        return rv;
-      };
-    }
-    else if (token[1] === '=') {
-      value = next()[1];
-
-      if (value[0] === '"' || value[value.length - 1] === '\'') {
-        value = value.slice(1, value.length - 1);
-      }
-      else {
-        throw new SyntaxError(token, 'Ivalid comparison target');
-      }
-
-      token = next();
-      select = function(context, result) {
-        var i, len, elem, rv = [];
-
-        for (i = 0, len = result.length; i < len; i++) {
-          elem = result[i];
-
-          if (elem.get(key) === value) {
-            rv.push(elem);
-          }
-        }
-
-        return rv;
-      };
-    }
-
-    if (token[1] !== ']') {
-      throw new SyntaxError(token, 'Invalid attribute predicate');
-    }
-  }
-  else if (!token[1]) {
-    tag = token[0] || '';
-    token = next();
-
-    if (token[1] !== ']') {
-      throw new SyntaxError(token, 'Invalid node predicate');
-    }
-
-    select = function(context, result) {
-      var i, len, elem, rv = [];
-
-      for (i = 0, len = result.length; i < len; i++) {
-        elem = result[i];
-
-        if (elem.find(tag)) {
-          rv.push(elem);
-        }
-      }
-
-      return rv;
-    };
-  }
-  else {
-    throw new SyntaxError(null, 'Invalid predicate');
-  }
-
-  return select;
-}
-
-
-
-var ops = {
-  "": prepare_tag,
-  "*": prepare_star,
-  ".": prepare_dot,
-  "..": prepare_dot_dot,
-  "//": prepare_iter,
-  "[": prepare_predicate,
-};
-
-function _SelectorContext(root) {
-  this.parent_map = null;
-  this.root = root;
-}
-
-function findall(elem, path) {
-  var selector, result, i, len, token, value, select, context;
-
-  if (_cache.hasOwnProperty(path)) {
-    selector = _cache[path];
-  }
-  else {
-    // TODO: Use smarter cache purging approach
-    if (Object.keys(_cache).length > 100) {
-      _cache = {};
-    }
-
-    if (path.charAt(0) === '/') {
-      throw new SyntaxError(null, 'Cannot use absolute path on element');
-    }
-
-    result = xpath_tokenizer(path);
-    selector = [];
-
-    function getToken() {
-      return result.shift();
-    }
-
-    token = getToken();
-    while (true) {
-      var c = token[1] || '';
-      value = ops[c](getToken, token);
-
-      if (!value) {
-        throw new SyntaxError(null, sprintf('Invalid path: %s', path));
-      }
-
-      selector.push(value);
-      token = getToken();
-
-      if (!token) {
-        break;
-      }
-      else if (token[1] === '/') {
-        token = getToken();
-      }
-
-      if (!token) {
-        break;
-      }
-    }
-
-    _cache[path] = selector;
-  }
-
-  // Execute slector pattern
-  result = [elem];
-  context = new _SelectorContext(elem);
-
-  for (i = 0, len = selector.length; i < len; i++) {
-    select = selector[i];
-    result = select(context, result);
-  }
-
-  return result || [];
-}
-
-function find(element, path) {
-  var resultElements = findall(element, path);
-
-  if (resultElements && resultElements.length > 0) {
-    return resultElements[0];
-  }
-
-  return null;
-}
-
-function findtext(element, path, defvalue) {
-  var resultElements = findall(element, path);
-
-  if (resultElements && resultElements.length > 0) {
-    return resultElements[0].text;
-  }
-
-  return defvalue;
-}
-
-
-exports.find = find;
-exports.findall = findall;
-exports.findtext = findtext;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/elementtree.js b/node_modules/cordova-common/node_modules/elementtree/lib/elementtree.js
deleted file mode 100644
index 61d9276..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/elementtree.js
+++ /dev/null
@@ -1,611 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var sprintf = require('./sprintf').sprintf;
-
-var utils = require('./utils');
-var ElementPath = require('./elementpath');
-var TreeBuilder = require('./treebuilder').TreeBuilder;
-var get_parser = require('./parser').get_parser;
-var constants = require('./constants');
-
-var element_ids = 0;
-
-function Element(tag, attrib)
-{
-  this._id = element_ids++;
-  this.tag = tag;
-  this.attrib = {};
-  this.text = null;
-  this.tail = null;
-  this._children = [];
-
-  if (attrib) {
-    this.attrib = utils.merge(this.attrib, attrib);
-  }
-}
-
-Element.prototype.toString = function()
-{
-  return sprintf("<Element %s at %s>", this.tag, this._id);
-};
-
-Element.prototype.makeelement = function(tag, attrib)
-{
-  return new Element(tag, attrib);
-};
-
-Element.prototype.len = function()
-{
-  return this._children.length;
-};
-
-Element.prototype.getItem = function(index)
-{
-  return this._children[index];
-};
-
-Element.prototype.setItem = function(index, element)
-{
-  this._children[index] = element;
-};
-
-Element.prototype.delItem = function(index)
-{
-  this._children.splice(index, 1);
-};
-
-Element.prototype.getSlice = function(start, stop)
-{
-  return this._children.slice(start, stop);
-};
-
-Element.prototype.setSlice = function(start, stop, elements)
-{
-  var i;
-  var k = 0;
-  for (i = start; i < stop; i++, k++) {
-    this._children[i] = elements[k];
-  }
-};
-
-Element.prototype.delSlice = function(start, stop)
-{
-  this._children.splice(start, stop - start);
-};
-
-Element.prototype.append = function(element)
-{
-  this._children.push(element);
-};
-
-Element.prototype.extend = function(elements)
-{
-  this._children.concat(elements);
-};
-
-Element.prototype.insert = function(index, element)
-{
-  this._children[index] = element;
-};
-
-Element.prototype.remove = function(element)
-{
-  this._children = this._children.filter(function(e) {
-    /* TODO: is this the right way to do this? */
-    if (e._id === element._id) {
-      return false;
-    }
-    return true;
-  });
-};
-
-Element.prototype.getchildren = function() {
-  return this._children;
-};
-
-Element.prototype.find = function(path)
-{
-  return ElementPath.find(this, path);
-};
-
-Element.prototype.findtext = function(path, defvalue)
-{
-  return ElementPath.findtext(this, path, defvalue);
-};
-
-Element.prototype.findall = function(path, defvalue)
-{
-  return ElementPath.findall(this, path, defvalue);
-};
-
-Element.prototype.clear = function()
-{
-  this.attrib = {};
-  this._children = [];
-  this.text = null;
-  this.tail = null;
-};
-
-Element.prototype.get = function(key, defvalue)
-{
-  if (this.attrib[key] !== undefined) {
-    return this.attrib[key];
-  }
-  else {
-    return defvalue;
-  }
-};
-
-Element.prototype.set = function(key, value)
-{
-  this.attrib[key] = value;
-};
-
-Element.prototype.keys = function()
-{
-  return Object.keys(this.attrib);
-};
-
-Element.prototype.items = function()
-{
-  return utils.items(this.attrib);
-};
-
-/*
- * In python this uses a generator, but in v8 we don't have em,
- * so we use a callback instead.
- **/
-Element.prototype.iter = function(tag, callback)
-{
-  var self = this;
-  var i, child;
-
-  if (tag === "*") {
-    tag = null;
-  }
-
-  if (tag === null || this.tag === tag) {
-    callback(self);
-  }
-
-  for (i = 0; i < this._children.length; i++) {
-    child = this._children[i];
-    child.iter(tag, function(e) {
-      callback(e);
-    });
-  }
-};
-
-Element.prototype.itertext = function(callback)
-{
-  this.iter(null, function(e) {
-    if (e.text) {
-      callback(e.text);
-    }
-
-    if (e.tail) {
-      callback(e.tail);
-    }
-  });
-};
-
-
-function SubElement(parent, tag, attrib) {
-  var element = parent.makeelement(tag, attrib);
-  parent.append(element);
-  return element;
-}
-
-function Comment(text) {
-  var element = new Element(Comment);
-  if (text) {
-    element.text = text;
-  }
-  return element;
-}
-
-function CData(text) {
-  var element = new Element(CData);
-  if (text) {
-    element.text = text;
-  }
-  return element;
-}
-
-function ProcessingInstruction(target, text)
-{
-  var element = new Element(ProcessingInstruction);
-  element.text = target;
-  if (text) {
-    element.text = element.text + " " + text;
-  }
-  return element;
-}
-
-function QName(text_or_uri, tag)
-{
-  if (tag) {
-    text_or_uri = sprintf("{%s}%s", text_or_uri, tag);
-  }
-  this.text = text_or_uri;
-}
-
-QName.prototype.toString = function() {
-  return this.text;
-};
-
-function ElementTree(element)
-{
-  this._root = element;
-}
-
-ElementTree.prototype.getroot = function() {
-  return this._root;
-};
-
-ElementTree.prototype._setroot = function(element) {
-  this._root = element;
-};
-
-ElementTree.prototype.parse = function(source, parser) {
-  if (!parser) {
-    parser = get_parser(constants.DEFAULT_PARSER);
-    parser = new parser.XMLParser(new TreeBuilder());
-  }
-
-  parser.feed(source);
-  this._root = parser.close();
-  return this._root;
-};
-
-ElementTree.prototype.iter = function(tag, callback) {
-  this._root.iter(tag, callback);
-};
-
-ElementTree.prototype.find = function(path) {
-  return this._root.find(path);
-};
-
-ElementTree.prototype.findtext = function(path, defvalue) {
-  return this._root.findtext(path, defvalue);
-};
-
-ElementTree.prototype.findall = function(path) {
-  return this._root.findall(path);
-};
-
-/**
- * Unlike ElementTree, we don't write to a file, we return you a string.
- */
-ElementTree.prototype.write = function(options) {
-  var sb = [];
-  options = utils.merge({
-    encoding: 'utf-8',
-    xml_declaration: null,
-    default_namespace: null,
-    method: 'xml'}, options);
-
-  if (options.xml_declaration !== false) {
-    sb.push("<?xml version='1.0' encoding='"+options.encoding +"'?>\n");
-  }
-
-  if (options.method === "text") {
-    _serialize_text(sb, self._root, encoding);
-  }
-  else {
-    var qnames, namespaces, indent, indent_string;
-    var x = _namespaces(this._root, options.encoding, options.default_namespace);
-    qnames = x[0];
-    namespaces = x[1];
-
-    if (options.hasOwnProperty('indent')) {
-      indent = 0;
-      indent_string = new Array(options.indent + 1).join(' ');
-    }
-    else {
-      indent = false;
-    }
-
-    if (options.method === "xml") {
-      _serialize_xml(function(data) {
-        sb.push(data);
-      }, this._root, options.encoding, qnames, namespaces, indent, indent_string);
-    }
-    else {
-      /* TODO: html */
-      throw new Error("unknown serialization method "+ options.method);
-    }
-  }
-
-  return sb.join("");
-};
-
-var _namespace_map = {
-    /* "well-known" namespace prefixes */
-    "http://www.w3.org/XML/1998/namespace": "xml",
-    "http://www.w3.org/1999/xhtml": "html",
-    "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
-    "http://schemas.xmlsoap.org/wsdl/": "wsdl",
-    /* xml schema */
-    "http://www.w3.org/2001/XMLSchema": "xs",
-    "http://www.w3.org/2001/XMLSchema-instance": "xsi",
-    /* dublic core */
-    "http://purl.org/dc/elements/1.1/": "dc",
-};
-
-function register_namespace(prefix, uri) {
-  if (/ns\d+$/.test(prefix)) {
-    throw new Error('Prefix format reserved for internal use');
-  }
-
-  if (_namespace_map.hasOwnProperty(uri) && _namespace_map[uri] === prefix) {
-    delete _namespace_map[uri];
-  }
-
-  _namespace_map[uri] = prefix;
-}
-
-
-function _escape(text, encoding, isAttribute, isText) {
-  if (text) {
-    text = text.toString();
-    text = text.replace(/&/g, '&amp;');
-    text = text.replace(/</g, '&lt;');
-    text = text.replace(/>/g, '&gt;');
-    if (!isText) {
-        text = text.replace(/\n/g, '&#xA;');
-        text = text.replace(/\r/g, '&#xD;');
-    }
-    if (isAttribute) {
-      text = text.replace(/"/g, '&quot;');
-    }
-  }
-  return text;
-}
-
-/* TODO: benchmark single regex */
-function _escape_attrib(text, encoding) {
-  return _escape(text, encoding, true);
-}
-
-function _escape_cdata(text, encoding) {
-  return _escape(text, encoding, false);
-}
-
-function _escape_text(text, encoding) {
-  return _escape(text, encoding, false, true);
-}
-
-function _namespaces(elem, encoding, default_namespace) {
-  var qnames = {};
-  var namespaces = {};
-
-  if (default_namespace) {
-    namespaces[default_namespace] = "";
-  }
-
-  function encode(text) {
-    return text;
-  }
-
-  function add_qname(qname) {
-    if (qname[0] === "{") {
-      var tmp = qname.substring(1).split("}", 2);
-      var uri = tmp[0];
-      var tag = tmp[1];
-      var prefix = namespaces[uri];
-
-      if (prefix === undefined) {
-        prefix = _namespace_map[uri];
-        if (prefix === undefined) {
-          prefix = "ns" + Object.keys(namespaces).length;
-        }
-        if (prefix !== "xml") {
-          namespaces[uri] = prefix;
-        }
-      }
-
-      if (prefix) {
-        qnames[qname] = sprintf("%s:%s", prefix, tag);
-      }
-      else {
-        qnames[qname] = tag;
-      }
-    }
-    else {
-      if (default_namespace) {
-        throw new Error('cannot use non-qualified names with default_namespace option');
-      }
-
-      qnames[qname] = qname;
-    }
-  }
-
-
-  elem.iter(null, function(e) {
-    var i;
-    var tag = e.tag;
-    var text = e.text;
-    var items = e.items();
-
-    if (tag instanceof QName && qnames[tag.text] === undefined) {
-      add_qname(tag.text);
-    }
-    else if (typeof(tag) === "string") {
-      add_qname(tag);
-    }
-    else if (tag !== null && tag !== Comment && tag !== CData && tag !== ProcessingInstruction) {
-      throw new Error('Invalid tag type for serialization: '+ tag);
-    }
-
-    if (text instanceof QName && qnames[text.text] === undefined) {
-      add_qname(text.text);
-    }
-
-    items.forEach(function(item) {
-      var key = item[0],
-          value = item[1];
-      if (key instanceof QName) {
-        key = key.text;
-      }
-
-      if (qnames[key] === undefined) {
-        add_qname(key);
-      }
-
-      if (value instanceof QName && qnames[value.text] === undefined) {
-        add_qname(value.text);
-      }
-    });
-  });
-  return [qnames, namespaces];
-}
-
-function _serialize_xml(write, elem, encoding, qnames, namespaces, indent, indent_string) {
-  var tag = elem.tag;
-  var text = elem.text;
-  var items;
-  var i;
-
-  var newlines = indent || (indent === 0);
-  write(Array(indent + 1).join(indent_string));
-
-  if (tag === Comment) {
-    write(sprintf("<!--%s-->", _escape_cdata(text, encoding)));
-  }
-  else if (tag === ProcessingInstruction) {
-    write(sprintf("<?%s?>", _escape_cdata(text, encoding)));
-  }
-  else if (tag === CData) {
-    text = text || '';
-    write(sprintf("<![CDATA[%s]]>", text));
-  }
-  else {
-    tag = qnames[tag];
-    if (tag === undefined) {
-      if (text) {
-        write(_escape_text(text, encoding));
-      }
-      elem.iter(function(e) {
-        _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string);
-      });
-    }
-    else {
-      write("<" + tag);
-      items = elem.items();
-
-      if (items || namespaces) {
-        items.sort(); // lexical order
-
-        items.forEach(function(item) {
-          var k = item[0],
-              v = item[1];
-
-            if (k instanceof QName) {
-              k = k.text;
-            }
-
-            if (v instanceof QName) {
-              v = qnames[v.text];
-            }
-            else {
-              v = _escape_attrib(v, encoding);
-            }
-            write(sprintf(" %s=\"%s\"", qnames[k], v));
-        });
-
-        if (namespaces) {
-          items = utils.items(namespaces);
-          items.sort(function(a, b) { return a[1] < b[1]; });
-
-          items.forEach(function(item) {
-            var k = item[1],
-                v = item[0];
-
-            if (k) {
-              k = ':' + k;
-            }
-
-            write(sprintf(" xmlns%s=\"%s\"", k, _escape_attrib(v, encoding)));
-          });
-        }
-      }
-
-      if (text || elem.len()) {
-        if (text && text.toString().match(/^\s*$/)) {
-            text = null;
-        }
-
-        write(">");
-        if (!text && newlines) {
-          write("\n");
-        }
-
-        if (text) {
-          write(_escape_text(text, encoding));
-        }
-        elem._children.forEach(function(e) {
-          _serialize_xml(write, e, encoding, qnames, null, newlines ? indent + 1 : false, indent_string);
-        });
-
-        if (!text && indent) {
-          write(Array(indent + 1).join(indent_string));
-        }
-        write("</" + tag + ">");
-      }
-      else {
-        write(" />");
-      }
-    }
-  }
-
-  if (newlines) {
-    write("\n");
-  }
-}
-
-function parse(source, parser) {
-  var tree = new ElementTree();
-  tree.parse(source, parser);
-  return tree;
-}
-
-function tostring(element, options) {
-  return new ElementTree(element).write(options);
-}
-
-exports.PI = ProcessingInstruction;
-exports.Comment = Comment;
-exports.CData = CData;
-exports.ProcessingInstruction = ProcessingInstruction;
-exports.SubElement = SubElement;
-exports.QName = QName;
-exports.ElementTree = ElementTree;
-exports.ElementPath = ElementPath;
-exports.Element = function(tag, attrib) {
-  return new Element(tag, attrib);
-};
-
-exports.XML = function(data) {
-  var et = new ElementTree();
-  return et.parse(data);
-};
-
-exports.parse = parse;
-exports.register_namespace = register_namespace;
-exports.tostring = tostring;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/errors.js b/node_modules/cordova-common/node_modules/elementtree/lib/errors.js
deleted file mode 100644
index e8742be..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/errors.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var util = require('util');
-
-var sprintf = require('./sprintf').sprintf;
-
-function SyntaxError(token, msg) {
-  msg = msg || sprintf('Syntax Error at token %s', token.toString());
-  this.token = token;
-  this.message = msg;
-  Error.call(this, msg);
-}
-
-util.inherits(SyntaxError, Error);
-
-exports.SyntaxError = SyntaxError;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/parser.js b/node_modules/cordova-common/node_modules/elementtree/lib/parser.js
deleted file mode 100644
index 7307ee4..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/parser.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* TODO: support node-expat C++ module optionally */
-
-var util = require('util');
-var parsers = require('./parsers/index');
-
-function get_parser(name) {
-  if (name === 'sax') {
-    return parsers.sax;
-  }
-  else {
-    throw new Error('Invalid parser: ' + name);
-  }
-}
-
-
-exports.get_parser = get_parser;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/parsers/index.js b/node_modules/cordova-common/node_modules/elementtree/lib/parsers/index.js
deleted file mode 100644
index 5eac5c8..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/parsers/index.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.sax = require('./sax');
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/parsers/sax.js b/node_modules/cordova-common/node_modules/elementtree/lib/parsers/sax.js
deleted file mode 100644
index 69b0a59..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/parsers/sax.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var util = require('util');
-
-var sax = require('sax');
-
-var TreeBuilder = require('./../treebuilder').TreeBuilder;
-
-function XMLParser(target) {
-  this.parser = sax.parser(true);
-
-  this.target = (target) ? target : new TreeBuilder();
-
-  this.parser.onopentag = this._handleOpenTag.bind(this);
-  this.parser.ontext = this._handleText.bind(this);
-  this.parser.oncdata = this._handleCdata.bind(this);
-  this.parser.ondoctype = this._handleDoctype.bind(this);
-  this.parser.oncomment = this._handleComment.bind(this);
-  this.parser.onclosetag = this._handleCloseTag.bind(this);
-  this.parser.onerror = this._handleError.bind(this);
-}
-
-XMLParser.prototype._handleOpenTag = function(tag) {
-  this.target.start(tag.name, tag.attributes);
-};
-
-XMLParser.prototype._handleText = function(text) {
-  this.target.data(text);
-};
-
-XMLParser.prototype._handleCdata = function(text) {
-  this.target.data(text);
-};
-
-XMLParser.prototype._handleDoctype = function(text) {
-};
-
-XMLParser.prototype._handleComment = function(comment) {
-};
-
-XMLParser.prototype._handleCloseTag = function(tag) {
-  this.target.end(tag);
-};
-
-XMLParser.prototype._handleError = function(err) {
-  throw err;
-};
-
-XMLParser.prototype.feed = function(chunk) {
-  this.parser.write(chunk);
-};
-
-XMLParser.prototype.close = function() {
-  this.parser.close();
-  return this.target.close();
-};
-
-exports.XMLParser = XMLParser;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/sprintf.js b/node_modules/cordova-common/node_modules/elementtree/lib/sprintf.js
deleted file mode 100644
index f802c1b..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/sprintf.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var cache = {};
-
-
-// Do any others need escaping?
-var TO_ESCAPE = {
-  '\'': '\\\'',
-  '\n': '\\n'
-};
-
-
-function populate(formatter) {
-  var i, type,
-      key = formatter,
-      prev = 0,
-      arg = 1,
-      builder = 'return \'';
-
-  for (i = 0; i < formatter.length; i++) {
-    if (formatter[i] === '%') {
-      type = formatter[i + 1];
-
-      switch (type) {
-        case 's':
-          builder += formatter.slice(prev, i) + '\' + arguments[' + arg + '] + \'';
-          prev = i + 2;
-          arg++;
-          break;
-        case 'j':
-          builder += formatter.slice(prev, i) + '\' + JSON.stringify(arguments[' + arg + ']) + \'';
-          prev = i + 2;
-          arg++;
-          break;
-        case '%':
-          builder += formatter.slice(prev, i + 1);
-          prev = i + 2;
-          i++;
-          break;
-      }
-
-
-    } else if (TO_ESCAPE[formatter[i]]) {
-      builder += formatter.slice(prev, i) + TO_ESCAPE[formatter[i]];
-      prev = i + 1;
-    }
-  }
-
-  builder += formatter.slice(prev) + '\';';
-  cache[key] = new Function(builder);
-}
-
-
-/**
- * A fast version of sprintf(), which currently only supports the %s and %j.
- * This caches a formatting function for each format string that is used, so
- * you should only use this sprintf() will be called many times with a single
- * format string and a limited number of format strings will ever be used (in
- * general this means that format strings should be string literals).
- *
- * @param {String} formatter A format string.
- * @param {...String} var_args Values that will be formatted by %s and %j.
- * @return {String} The formatted output.
- */
-exports.sprintf = function(formatter, var_args) {
-  if (!cache[formatter]) {
-    populate(formatter);
-  }
-
-  return cache[formatter].apply(null, arguments);
-};
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/treebuilder.js b/node_modules/cordova-common/node_modules/elementtree/lib/treebuilder.js
deleted file mode 100644
index 393a98f..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/treebuilder.js
+++ /dev/null
@@ -1,60 +0,0 @@
-function TreeBuilder(element_factory) {
-  this._data = [];
-  this._elem = [];
-  this._last = null;
-  this._tail = null;
-  if (!element_factory) {
-    /* evil circular dep */
-    element_factory = require('./elementtree').Element;
-  }
-  this._factory = element_factory;
-}
-
-TreeBuilder.prototype.close = function() {
-  return this._last;
-};
-
-TreeBuilder.prototype._flush = function() {
-  if (this._data) {
-    if (this._last !== null) {
-      var text = this._data.join("");
-      if (this._tail) {
-        this._last.tail = text;
-      }
-      else {
-        this._last.text = text;
-      }
-    }
-    this._data = [];
-  }
-};
-
-TreeBuilder.prototype.data = function(data) {
-  this._data.push(data);
-};
-
-TreeBuilder.prototype.start = function(tag, attrs) {
-  this._flush();
-  var elem = this._factory(tag, attrs);
-  this._last = elem;
-
-  if (this._elem.length) {
-    this._elem[this._elem.length - 1].append(elem);
-  }
-
-  this._elem.push(elem);
-
-  this._tail = null;
-};
-
-TreeBuilder.prototype.end = function(tag) {
-  this._flush();
-  this._last = this._elem.pop();
-  if (this._last.tag !== tag) {
-    throw new Error("end tag mismatch");
-  }
-  this._tail = 1;
-  return this._last;
-};
-
-exports.TreeBuilder = TreeBuilder;
diff --git a/node_modules/cordova-common/node_modules/elementtree/lib/utils.js b/node_modules/cordova-common/node_modules/elementtree/lib/utils.js
deleted file mode 100644
index b08a670..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/lib/utils.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/**
- * @param {Object} hash.
- * @param {Array} ignored.
- */
-function items(hash, ignored) {
-  ignored = ignored || null;
-  var k, rv = [];
-
-  function is_ignored(key) {
-    if (!ignored || ignored.length === 0) {
-      return false;
-    }
-
-    return ignored.indexOf(key);
-  }
-
-  for (k in hash) {
-    if (hash.hasOwnProperty(k) && !(is_ignored(ignored))) {
-      rv.push([k, hash[k]]);
-    }
-  }
-
-  return rv;
-}
-
-
-function findall(re, str) {
-  var match, matches = [];
-
-  while ((match = re.exec(str))) {
-      matches.push(match);
-  }
-
-  return matches;
-}
-
-function merge(a, b) {
-  var c = {}, attrname;
-
-  for (attrname in a) {
-    if (a.hasOwnProperty(attrname)) {
-      c[attrname] = a[attrname];
-    }
-  }
-  for (attrname in b) {
-    if (b.hasOwnProperty(attrname)) {
-      c[attrname] = b[attrname];
-    }
-  }
-  return c;
-}
-
-exports.items = items;
-exports.findall = findall;
-exports.merge = merge;
diff --git a/node_modules/cordova-common/node_modules/elementtree/package.json b/node_modules/cordova-common/node_modules/elementtree/package.json
deleted file mode 100644
index 244b02f..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  "_args": [
-    [
-      "elementtree@0.1.6",
-      "C:\\Projects\\Cordova\\cordova-windows"
-    ]
-  ],
-  "_from": "elementtree@0.1.6",
-  "_id": "elementtree@0.1.6",
-  "_inBundle": false,
-  "_integrity": "sha1-KsTEbqMFFsjEy9teOsdBjlkt4gw=",
-  "_location": "/cordova-common/elementtree",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "elementtree@0.1.6",
-    "name": "elementtree",
-    "escapedName": "elementtree",
-    "rawSpec": "0.1.6",
-    "saveSpec": null,
-    "fetchSpec": "0.1.6"
-  },
-  "_requiredBy": [
-    "/cordova-common"
-  ],
-  "_resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz",
-  "_spec": "0.1.6",
-  "_where": "C:\\Projects\\Cordova\\cordova-windows",
-  "author": {
-    "name": "Rackspace US, Inc."
-  },
-  "bugs": {
-    "url": "https://github.com/racker/node-elementtree/issues"
-  },
-  "contributors": [
-    {
-      "name": "Paul Querna",
-      "email": "paul.querna@rackspace.com"
-    },
-    {
-      "name": "Tomaz Muraus",
-      "email": "tomaz.muraus@rackspace.com"
-    }
-  ],
-  "dependencies": {
-    "sax": "0.3.5"
-  },
-  "description": "XML Serialization and Parsing module based on Python's ElementTree.",
-  "devDependencies": {
-    "whiskey": "0.8.x"
-  },
-  "directories": {
-    "lib": "lib"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
-  },
-  "homepage": "https://github.com/racker/node-elementtree",
-  "keywords": [
-    "xml",
-    "sax",
-    "parser",
-    "seralization",
-    "elementtree"
-  ],
-  "licenses": [
-    {
-      "type": "Apache",
-      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
-    }
-  ],
-  "main": "lib/elementtree.js",
-  "name": "elementtree",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/racker/node-elementtree.git"
-  },
-  "scripts": {
-    "test": "make test"
-  },
-  "version": "0.1.6"
-}
diff --git a/node_modules/cordova-common/node_modules/elementtree/tests/data/xml1.xml b/node_modules/cordova-common/node_modules/elementtree/tests/data/xml1.xml
deleted file mode 100644
index 72c33ae..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/tests/data/xml1.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<container name="test_container_1" xmlns:android="http://schemas.android.com/apk/res/android">
-  <object>dd
-    <name>test_object_1</name>
-    <hash>4281c348eaf83e70ddce0e07221c3d28</hash>
-    <bytes android:type="cool">14</bytes>
-    <content_type>application/octetstream</content_type>
-    <last_modified>2009-02-03T05:26:32.612278</last_modified>
-  </object>
-  <object>
-    <name>test_object_2</name>
-    <hash>b039efe731ad111bc1b0ef221c3849d0</hash>
-    <bytes android:type="lame">64</bytes>
-    <content_type>application/octetstream</content_type>
-    <last_modified>2009-02-03T05:26:32.612278</last_modified>
-  </object>
-</container>
diff --git a/node_modules/cordova-common/node_modules/elementtree/tests/data/xml2.xml b/node_modules/cordova-common/node_modules/elementtree/tests/data/xml2.xml
deleted file mode 100644
index 5f94bbd..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/tests/data/xml2.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<object>
-    <title>
-        Hello World
-    </title>
-    <children>
-        <object id="obj1" />
-        <object id="obj2" />
-        <object id="obj3" />
-    </children>
-    <text><![CDATA[
-        Test & Test & Test
-    ]]></text>
-</object>
diff --git a/node_modules/cordova-common/node_modules/elementtree/tests/test-simple.js b/node_modules/cordova-common/node_modules/elementtree/tests/test-simple.js
deleted file mode 100644
index 1fc04b8..0000000
--- a/node_modules/cordova-common/node_modules/elementtree/tests/test-simple.js
+++ /dev/null
@@ -1,339 +0,0 @@
-/**
- *  Copyright 2011 Rackspace
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-var fs = require('fs');
-var path = require('path');
-
-var sprintf = require('./../lib/sprintf').sprintf;
-var et = require('elementtree');
-var XML = et.XML;
-var ElementTree = et.ElementTree;
-var Element = et.Element;
-var SubElement = et.SubElement;
-var SyntaxError = require('./../lib/errors').SyntaxError;
-
-function readFile(name) {
-  return fs.readFileSync(path.join(__dirname, '/data/', name), 'utf8');
-}
-
-exports['test_simplest'] = function(test, assert) {
-  /* Ported from <https://github.com/lxml/lxml/blob/master/src/lxml/tests/test_elementtree.py> */
-  var Element = et.Element;
-  var root = Element('root');
-  root.append(Element('one'));
-  root.append(Element('two'));
-  root.append(Element('three'));
-  assert.equal(3, root.len());
-  assert.equal('one', root.getItem(0).tag);
-  assert.equal('two', root.getItem(1).tag);
-  assert.equal('three', root.getItem(2).tag);
-  test.finish();
-};
-
-
-exports['test_attribute_values'] = function(test, assert) {
-  var XML = et.XML;
-  var root = XML('<doc alpha="Alpha" beta="Beta" gamma="Gamma"/>');
-  assert.equal('Alpha', root.attrib['alpha']);
-  assert.equal('Beta', root.attrib['beta']);
-  assert.equal('Gamma', root.attrib['gamma']);
-  test.finish();
-};
-
-
-exports['test_findall'] = function(test, assert) {
-  var XML = et.XML;
-  var root = XML('<a><b><c/></b><b/><c><b/></c></a>');
-
-  assert.equal(root.findall("c").length, 1);
-  assert.equal(root.findall(".//c").length, 2);
-  assert.equal(root.findall(".//b").length, 3);
-  assert.equal(root.findall(".//b")[0]._children.length, 1);
-  assert.equal(root.findall(".//b")[1]._children.length, 0);
-  assert.equal(root.findall(".//b")[2]._children.length, 0);
-  assert.deepEqual(root.findall('.//b')[0], root.getchildren()[0]);
-
-  test.finish();
-};
-
-exports['test_find'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  var c = SubElement(a, 'c');
-
-  assert.deepEqual(a.find('./b/..'), a);
-  test.finish();
-};
-
-exports['test_elementtree_find_qname'] = function(test, assert) {
-  var tree = new et.ElementTree(XML('<a><b><c/></b><b/><c><b/></c></a>'));
-  assert.deepEqual(tree.find(new et.QName('c')), tree.getroot()._children[2]);
-  test.finish();
-};
-
-exports['test_attrib_ns_clear'] = function(test, assert) {
-  var attribNS = '{http://foo/bar}x';
-
-  var par = Element('par');
-  par.set(attribNS, 'a');
-  var child = SubElement(par, 'child');
-  child.set(attribNS, 'b');
-
-  assert.equal('a', par.get(attribNS));
-  assert.equal('b', child.get(attribNS));
-
-  par.clear();
-  assert.equal(null, par.get(attribNS));
-  assert.equal('b', child.get(attribNS));
-  test.finish();
-};
-
-exports['test_create_tree_and_parse_simple'] = function(test, assert) {
-  var i = 0;
-  var e = new Element('bar', {});
-  var expected = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar><blah a="11" /><blah a="12" /><gag a="13" b="abc">ponies</gag></bar>';
-
-  SubElement(e, "blah", {a: 11});
-  SubElement(e, "blah", {a: 12});
-  var se = et.SubElement(e, "gag", {a: '13', b: 'abc'});
-  se.text = 'ponies';
-
-  se.itertext(function(text) {
-    assert.equal(text, 'ponies');
-    i++;
-  });
-
-  assert.equal(i, 1);
-  var etree = new ElementTree(e);
-  var xml = etree.write();
-  assert.equal(xml, expected);
-  test.finish();
-};
-
-exports['test_write_with_options'] = function(test, assert) {
-  var i = 0;
-  var e = new Element('bar', {});
-  var expected1 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar>\n' +
-    '    <blah a="11">\n' +
-    '        <baz d="11">test</baz>\n' +
-    '    </blah>\n' +
-    '    <blah a="12" />\n' +
-    '    <gag a="13" b="abc">ponies</gag>\n' +
-    '</bar>\n';
-    var expected2 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<bar>\n' +
-    '  <blah a="11">\n' +
-    '    <baz d="11">test</baz>\n' +
-    '  </blah>\n' +
-    '  <blah a="12" />\n' +
-    '  <gag a="13" b="abc">ponies</gag>\n' +
-    '</bar>\n';
-
-    var expected3 = "<?xml version='1.0' encoding='utf-8'?>\n" +
-    '<object>\n' +
-    '    <title>\n' +
-    '        Hello World\n' +
-    '    </title>\n' +
-    '    <children>\n' +
-    '        <object id="obj1" />\n' +
-    '        <object id="obj2" />\n' +
-    '        <object id="obj3" />\n' +
-    '    </children>\n' +
-    '    <text>\n' +
-    '        Test &amp; Test &amp; Test\n' +
-    '    </text>\n' +
-    '</object>\n';
-
-  var se1 = SubElement(e, "blah", {a: 11});
-  var se2 = SubElement(se1, "baz", {d: 11});
-  se2.text = 'test';
-  SubElement(e, "blah", {a: 12});
-  var se = et.SubElement(e, "gag", {a: '13', b: 'abc'});
-  se.text = 'ponies';
-
-  se.itertext(function(text) {
-    assert.equal(text, 'ponies');
-    i++;
-  });
-
-  assert.equal(i, 1);
-  var etree = new ElementTree(e);
-  var xml1 = etree.write({'indent': 4});
-  var xml2 = etree.write({'indent': 2});
-  assert.equal(xml1, expected1);
-  assert.equal(xml2, expected2);
-
-  var file = readFile('xml2.xml');
-  var etree2 = et.parse(file);
-  var xml3 = etree2.write({'indent': 4});
-  assert.equal(xml3, expected3);
-  test.finish();
-};
-
-exports['test_parse_and_find_2'] = function(test, assert) {
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  assert.equal(etree.findall('./object').length, 2);
-  assert.equal(etree.findall('[@name]').length, 1);
-  assert.equal(etree.findall('[@name="test_container_1"]').length, 1);
-  assert.equal(etree.findall('[@name=\'test_container_1\']').length, 1);
-  assert.equal(etree.findall('./object')[0].findtext('name'), 'test_object_1');
-  assert.equal(etree.findtext('./object/name'), 'test_object_1');
-  assert.equal(etree.findall('.//bytes').length, 2);
-  assert.equal(etree.findall('*/bytes').length, 2);
-  assert.equal(etree.findall('*/foobar').length, 0);
-
-  test.finish();
-};
-
-exports['test_namespaced_attribute'] = function(test, assert) {
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  assert.equal(etree.findall('*/bytes[@android:type="cool"]').length, 1);
-
-  test.finish();
-}
-
-exports['test_syntax_errors'] = function(test, assert) {
-  var expressions = [ './/@bar', '[@bar', '[@foo=bar]', '[@', '/bar' ];
-  var errCount = 0;
-  var data = readFile('xml1.xml');
-  var etree = et.parse(data);
-
-  expressions.forEach(function(expression) {
-    try {
-      etree.findall(expression);
-    }
-    catch (err) {
-      errCount++;
-    }
-  });
-
-  assert.equal(errCount, expressions.length);
-  test.finish();
-};
-
-exports['test_register_namespace'] = function(test, assert){
-  var prefix = 'TESTPREFIX';
-  var namespace = 'http://seriously.unknown/namespace/URI';
-  var errCount = 0;
-
-  var etree = Element(sprintf('{%s}test', namespace));
-  assert.equal(et.tostring(etree, { 'xml_declaration': false}),
-               sprintf('<ns0:test xmlns:ns0="%s" />', namespace));
-
-  et.register_namespace(prefix, namespace);
-  var etree = Element(sprintf('{%s}test', namespace));
-  assert.equal(et.tostring(etree, { 'xml_declaration': false}),
-               sprintf('<%s:test xmlns:%s="%s" />', prefix, prefix, namespace));
-
-  try {
-    et.register_namespace('ns25', namespace);
-  }
-  catch (err) {
-    errCount++;
-  }
-
-  assert.equal(errCount, 1, 'Reserved prefix used, but exception was not thrown');
-  test.finish();
-};
-
-exports['test_tostring'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  var c = SubElement(a, 'c');
-  c.text = 543;
-
-  assert.equal(et.tostring(a, { 'xml_declaration': false }), '<a><b /><c>543</c></a>');
-  assert.equal(et.tostring(c, { 'xml_declaration': false }), '<c>543</c>');
-  test.finish();
-};
-
-exports['test_escape'] = function(test, assert) {
-  var a = Element('a');
-  var b = SubElement(a, 'b');
-  b.text = '&&&&<>"\n\r';
-
-  assert.equal(et.tostring(a, { 'xml_declaration': false }), '<a><b>&amp;&amp;&amp;&amp;&lt;&gt;\"\n\r</b></a>');
-  test.finish();
-};
-
-exports['test_find_null'] = function(test, assert) {
-  var root = Element('root');
-  var node = SubElement(root, 'node');
-  var leaf  = SubElement(node, 'leaf');
-  leaf.text = 'ipsum';
-
-  assert.equal(root.find('node/leaf'), leaf);
-  assert.equal(root.find('no-such-node/leaf'), null);
-  test.finish();
-};
-
-exports['test_findtext_null'] = function(test, assert) {
-  var root = Element('root');
-  var node = SubElement(root, 'node');
-  var leaf  = SubElement(node, 'leaf');
-  leaf.text = 'ipsum';
-
-  assert.equal(root.findtext('node/leaf'), 'ipsum');
-  assert.equal(root.findtext('no-such-node/leaf'), null);
-  test.finish();
-};
-
-exports['test_remove'] = function(test, assert) {
-  var root = Element('root');
-  var node1 = SubElement(root, 'node1');
-  var node2 = SubElement(root, 'node2');
-  var node3 = SubElement(root, 'node3');
-
-  assert.equal(root.len(), 3);
-
-  root.remove(node2);
-
-  assert.equal(root.len(), 2);
-  assert.equal(root.getItem(0).tag, 'node1')
-  assert.equal(root.getItem(1).tag, 'node3')
-
-  test.finish();
-};
-
-exports['test_cdata_write'] = function(test, assert) {
-  var root, etree, xml, values, value, i;
-
-  values = [
-    'if(0>1) then true;',
-    '<test1>ponies hello</test1>',
-    ''
-  ];
-
-  for (i = 0; i < values.length; i++) {
-    value = values[i];
-
-    root = Element('root');
-    root.append(et.CData(value));
-    etree = new ElementTree(root);
-    xml = etree.write({'xml_declaration': false});
-
-    assert.equal(xml, sprintf('<root><![CDATA[%s]]></root>', value));
-  }
-
-  test.finish();
-};
diff --git a/node_modules/cordova-common/node_modules/shelljs/CHANGELOG.md b/node_modules/cordova-common/node_modules/shelljs/CHANGELOG.md
new file mode 100644
index 0000000..a6f6270
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/CHANGELOG.md
@@ -0,0 +1,894 @@
+# Change Log
+
+## [Unreleased](https://github.com/shelljs/shelljs/tree/HEAD)
+
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.8.1...HEAD)
+
+**Closed issues:**
+
+- High severity vulnerability in shelljs 0.8.1 [\#842](https://github.com/shelljs/shelljs/issues/842)
+- Add test for ls\(\) on a symlink to a directory [\#795](https://github.com/shelljs/shelljs/issues/795)
+- Harden shell.exec by writing the child process in a source file [\#782](https://github.com/shelljs/shelljs/issues/782)
+- shell.exec\(\) doesn't respond correctly to config.fatal = true [\#735](https://github.com/shelljs/shelljs/issues/735)
+- Merge 'exec: internal error' with ShellJSInternalError [\#734](https://github.com/shelljs/shelljs/issues/734)
+- exec returning null from command [\#724](https://github.com/shelljs/shelljs/issues/724)
+- Only Get Stderr from Exec [\#371](https://github.com/shelljs/shelljs/issues/371)
+- Execute child.stdout.on before child.on\("exit"\)  [\#224](https://github.com/shelljs/shelljs/issues/224)
+
+**Merged pull requests:**
+
+- Workaround codecov bug of miscalculation of coverage \(\#795\) [\#838](https://github.com/shelljs/shelljs/pull/838) ([dwi2](https://github.com/dwi2))
+- Update doc comments and regenerate README.md. [\#825](https://github.com/shelljs/shelljs/pull/825) ([Zearin](https://github.com/Zearin))
+- chore: update contributing guidelines [\#817](https://github.com/shelljs/shelljs/pull/817) ([nfischer](https://github.com/nfischer))
+- chore\(lint\): don't allow excess trailing newlines [\#816](https://github.com/shelljs/shelljs/pull/816) ([nfischer](https://github.com/nfischer))
+- Remove separate "internal error" from exec [\#802](https://github.com/shelljs/shelljs/pull/802) ([freitagbr](https://github.com/freitagbr))
+
+## [v0.8.1](https://github.com/shelljs/shelljs/tree/v0.8.1) (2018-01-20)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.8.0...v0.8.1)
+
+**Closed issues:**
+
+- Exec failing with internal error when piping large output [\#818](https://github.com/shelljs/shelljs/issues/818)
+- using sed to replace just the first occurrence of a string [\#813](https://github.com/shelljs/shelljs/issues/813)
+
+**Merged pull requests:**
+
+- Revert "refactor\(exec\): remove paramsFile \(\#807\)" [\#819](https://github.com/shelljs/shelljs/pull/819) ([nfischer](https://github.com/nfischer))
+
+## [v0.8.0](https://github.com/shelljs/shelljs/tree/v0.8.0) (2018-01-12)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.8...v0.8.0)
+
+**Closed issues:**
+
+- Snyk vulnerability DB reporting command injection vulnerability in ShellJS [\#810](https://github.com/shelljs/shelljs/issues/810)
+- chore: upgrade nyc [\#803](https://github.com/shelljs/shelljs/issues/803)
+- Update CI to use Node v9 [\#799](https://github.com/shelljs/shelljs/issues/799)
+- Link to FAQ wiki section in our issue template [\#787](https://github.com/shelljs/shelljs/issues/787)
+- Is it possible to get a js library\(file\) for ShellJS [\#776](https://github.com/shelljs/shelljs/issues/776)
+- 48, [\#774](https://github.com/shelljs/shelljs/issues/774)
+- 47 [\#773](https://github.com/shelljs/shelljs/issues/773)
+- Exec function calls JSON.stringify on command [\#772](https://github.com/shelljs/shelljs/issues/772)
+- getting different result from terminal and with shelljs  [\#769](https://github.com/shelljs/shelljs/issues/769)
+- test\(\) does not support -w and -x options [\#768](https://github.com/shelljs/shelljs/issues/768)
+- Snyk "high severity" issue [\#766](https://github.com/shelljs/shelljs/issues/766)
+- Snyk "high security [\#765](https://github.com/shelljs/shelljs/issues/765)
+- ShellJS doesn't respect NPM Registry being set outside of it [\#761](https://github.com/shelljs/shelljs/issues/761)
+- Run second shell script [\#756](https://github.com/shelljs/shelljs/issues/756)
+- shelljs seems NOT compatible with nexe under CentOS 6.5 [\#754](https://github.com/shelljs/shelljs/issues/754)
+- Feature request: pushd/popd -q option [\#753](https://github.com/shelljs/shelljs/issues/753)
+- cat doesn't support '-n' option [\#750](https://github.com/shelljs/shelljs/issues/750)
+- shelljs run xcodebuild error [\#749](https://github.com/shelljs/shelljs/issues/749)
+- Add wrappers around fs.statSync and fs.lstatSync [\#745](https://github.com/shelljs/shelljs/issues/745)
+- Improve coverage for exec\(\) [\#742](https://github.com/shelljs/shelljs/issues/742)
+- Improve coverage for head\(\) [\#741](https://github.com/shelljs/shelljs/issues/741)
+- shelljs is no longer used in PDF.js [\#737](https://github.com/shelljs/shelljs/issues/737)
+- ls doesn't follow links to directories [\#733](https://github.com/shelljs/shelljs/issues/733)
+- Add test for `ls regular-file.txt` [\#732](https://github.com/shelljs/shelljs/issues/732)
+- Clean up common tests [\#714](https://github.com/shelljs/shelljs/issues/714)
+- Cant get encoding buffer to work on exec [\#675](https://github.com/shelljs/shelljs/issues/675)
+- Set up Codecov for the project [\#671](https://github.com/shelljs/shelljs/issues/671)
+- ShellJS: internal error Error: EBUSY: resource busy or locked, lstat 'C:\pagefile.sys' [\#514](https://github.com/shelljs/shelljs/issues/514)
+- Feature request: provide a way to skip option parsing [\#778](https://github.com/shelljs/shelljs/issues/778)
+- Switch to os.homedir\(\) when we move to v4+ [\#683](https://github.com/shelljs/shelljs/issues/683)
+- Drop support for v0.12 [\#647](https://github.com/shelljs/shelljs/issues/647)
+- feature: echo -n [\#559](https://github.com/shelljs/shelljs/issues/559)
+- Don't kill the node process upon unexpected error [\#483](https://github.com/shelljs/shelljs/issues/483)
+- Echo doesn't return value ending in a trailing newline [\#476](https://github.com/shelljs/shelljs/issues/476)
+- Synchronous exec stalls permenantly when there is an error/w the shell [\#7](https://github.com/shelljs/shelljs/issues/7)
+
+**Merged pull requests:**
+
+- docs: announce plugin API [\#812](https://github.com/shelljs/shelljs/pull/812) ([nfischer](https://github.com/nfischer))
+- chore: update CI to Node v9 [\#811](https://github.com/shelljs/shelljs/pull/811) ([nfischer](https://github.com/nfischer))
+- refactor\(exec\): remove paramsFile [\#807](https://github.com/shelljs/shelljs/pull/807) ([nfischer](https://github.com/nfischer))
+- chore: update nyc dependency [\#805](https://github.com/shelljs/shelljs/pull/805) ([nfischer](https://github.com/nfischer))
+- refactor: harden plugins against unknown options [\#804](https://github.com/shelljs/shelljs/pull/804) ([nfischer](https://github.com/nfischer))
+- chore\(eslint\): use words instead of numbers [\#797](https://github.com/shelljs/shelljs/pull/797) ([nfischer](https://github.com/nfischer))
+- Add note to issue template about FAQ [\#794](https://github.com/shelljs/shelljs/pull/794) ([freitagbr](https://github.com/freitagbr))
+- Remove codeFile parameter [\#791](https://github.com/shelljs/shelljs/pull/791) ([nfischer](https://github.com/nfischer))
+- Use execFileSync to launch child process [\#790](https://github.com/shelljs/shelljs/pull/790) ([nfischer](https://github.com/nfischer))
+- refactor\(exec\): move child process to source file [\#786](https://github.com/shelljs/shelljs/pull/786) ([nfischer](https://github.com/nfischer))
+- Remove unnecessary shell.error checks from common tests [\#785](https://github.com/shelljs/shelljs/pull/785) ([freitagbr](https://github.com/freitagbr))
+- Add a test for ls for a single file [\#784](https://github.com/shelljs/shelljs/pull/784) ([freitagbr](https://github.com/freitagbr))
+- Wrap fs.statSync and fs.lstatSync [\#783](https://github.com/shelljs/shelljs/pull/783) ([freitagbr](https://github.com/freitagbr))
+- chore: set AVA options [\#780](https://github.com/shelljs/shelljs/pull/780) ([nfischer](https://github.com/nfischer))
+- chore: clean up refs to unsupported node versions [\#779](https://github.com/shelljs/shelljs/pull/779) ([nfischer](https://github.com/nfischer))
+- Added `-q` \(quiet\) option to `push`, `popd`, `dirs` functions. [\#777](https://github.com/shelljs/shelljs/pull/777) ([alexreg](https://github.com/alexreg))
+- feat\(cat\): number output lines \(\#750\) [\#775](https://github.com/shelljs/shelljs/pull/775) ([gcca](https://github.com/gcca))
+- refactor\(test\): update AVA and refactor tests [\#760](https://github.com/shelljs/shelljs/pull/760) ([nfischer](https://github.com/nfischer))
+- chore: add skipOnWin and skipOnUnix test helpers [\#746](https://github.com/shelljs/shelljs/pull/746) ([nfischer](https://github.com/nfischer))
+- test\(exec\): add tests for coverage [\#744](https://github.com/shelljs/shelljs/pull/744) ([nfischer](https://github.com/nfischer))
+- test\(head\): improve coverage [\#743](https://github.com/shelljs/shelljs/pull/743) ([nfischer](https://github.com/nfischer))
+- Remove PDF.js mention from README.md [\#738](https://github.com/shelljs/shelljs/pull/738) ([voy](https://github.com/voy))
+- Provide an API to pass parameters which resemble options [\#792](https://github.com/shelljs/shelljs/pull/792) ([nfischer](https://github.com/nfischer))
+- Fix ls not following links to directories by default [\#764](https://github.com/shelljs/shelljs/pull/764) ([freitagbr](https://github.com/freitagbr))
+- Add "encoding" option to exec [\#763](https://github.com/shelljs/shelljs/pull/763) ([freitagbr](https://github.com/freitagbr))
+- Merge dev into master [\#731](https://github.com/shelljs/shelljs/pull/731) ([freitagbr](https://github.com/freitagbr))
+- Deprecate common.getUserHome, advise using os.homedir instead [\#725](https://github.com/shelljs/shelljs/pull/725) ([freitagbr](https://github.com/freitagbr))
+- Echo test mocks [\#708](https://github.com/shelljs/shelljs/pull/708) ([freitagbr](https://github.com/freitagbr))
+- Safely exit by throwing an error [\#546](https://github.com/shelljs/shelljs/pull/546) ([freitagbr](https://github.com/freitagbr))
+- chore\(make\): depreciate shelljs/make [\#431](https://github.com/shelljs/shelljs/pull/431) ([ariporad](https://github.com/ariporad))
+
+## [v0.7.8](https://github.com/shelljs/shelljs/tree/v0.7.8) (2017-06-07)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.7...v0.7.8)
+
+**Closed issues:**
+
+- Add node v8 to CI [\#729](https://github.com/shelljs/shelljs/issues/729)
+- Exec not working in Electron ! [\#726](https://github.com/shelljs/shelljs/issues/726)
+- is rechoir used anywhere? [\#723](https://github.com/shelljs/shelljs/issues/723)
+- ShellJS: internal error on shelljs.mkdir\('myFile/myDir'\) [\#720](https://github.com/shelljs/shelljs/issues/720)
+- Can't make sed perform global replace [\#719](https://github.com/shelljs/shelljs/issues/719)
+- grep: option not recognized: l [\#717](https://github.com/shelljs/shelljs/issues/717)
+- Problems getting code, stdout, stderr [\#715](https://github.com/shelljs/shelljs/issues/715)
+- Copying hidden files fails on Windows 10 [\#711](https://github.com/shelljs/shelljs/issues/711)
+- How am I suppose to handle errors with ShellJS? [\#707](https://github.com/shelljs/shelljs/issues/707)
+- use cp\('-r', './src', './dist'\) bug [\#705](https://github.com/shelljs/shelljs/issues/705)
+- Way to ignore files in globs. [\#699](https://github.com/shelljs/shelljs/issues/699)
+- Buffer constructor is deprecated [\#694](https://github.com/shelljs/shelljs/issues/694)
+- source command not working via exec method. [\#693](https://github.com/shelljs/shelljs/issues/693)
+- Would you be interested in a PR for `open`? [\#692](https://github.com/shelljs/shelljs/issues/692)
+- Get rid of common.platform in favor of process.platform [\#670](https://github.com/shelljs/shelljs/issues/670)
+- Passing empty string to cp throws internal error [\#664](https://github.com/shelljs/shelljs/issues/664)
+- Why does sed split files into an array, call replace on each line and rejoin? [\#645](https://github.com/shelljs/shelljs/issues/645)
+- feat: cp & mv should not overwrite recently created files [\#631](https://github.com/shelljs/shelljs/issues/631)
+- Echo tests unnecessarily run tests in own process [\#622](https://github.com/shelljs/shelljs/issues/622)
+- rm -rf on a symbolic link to a dir deletes its contents [\#587](https://github.com/shelljs/shelljs/issues/587)
+- "Cannot extract package" with node-webkit [\#181](https://github.com/shelljs/shelljs/issues/181)
+- EBADF, bad file descriptor [\#180](https://github.com/shelljs/shelljs/issues/180)
+
+**Merged pull requests:**
+
+- Add node 8 to CI [\#730](https://github.com/shelljs/shelljs/pull/730) ([freitagbr](https://github.com/freitagbr))
+- fix\(mkdir\): improve error handling around files [\#721](https://github.com/shelljs/shelljs/pull/721) ([nfischer](https://github.com/nfischer))
+- Properly handle directories as arguments [\#713](https://github.com/shelljs/shelljs/pull/713) ([nfischer](https://github.com/nfischer))
+- Add common.buffer [\#710](https://github.com/shelljs/shelljs/pull/710) ([freitagbr](https://github.com/freitagbr))
+- Fix common.expand error [\#709](https://github.com/shelljs/shelljs/pull/709) ([freitagbr](https://github.com/freitagbr))
+- refactor: remove unnecessary common.js imports [\#703](https://github.com/shelljs/shelljs/pull/703) ([nfischer](https://github.com/nfischer))
+- Fix \#631 throw error when overwriting recently created file [\#702](https://github.com/shelljs/shelljs/pull/702) ([uttpal](https://github.com/uttpal))
+- Small clarification of verbose flag [\#691](https://github.com/shelljs/shelljs/pull/691) ([zommerfelds](https://github.com/zommerfelds))
+- fix\(grep, sed, sort, uniq\): Split only on newline characters [\#690](https://github.com/shelljs/shelljs/pull/690) ([freitagbr](https://github.com/freitagbr))
+- Refactor: Use process.platform across codebase [\#689](https://github.com/shelljs/shelljs/pull/689) ([freitagbr](https://github.com/freitagbr))
+- Remove contents of symlink to dir with rm -rf [\#688](https://github.com/shelljs/shelljs/pull/688) ([freitagbr](https://github.com/freitagbr))
+- Echo stdout [\#677](https://github.com/shelljs/shelljs/pull/677) ([nfischer](https://github.com/nfischer))
+
+## [v0.7.7](https://github.com/shelljs/shelljs/tree/v0.7.7) (2017-03-09)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.6...v0.7.7)
+
+**Closed issues:**
+
+- Error output should be consistent across all platforms. [\#681](https://github.com/shelljs/shelljs/issues/681)
+- \*CRITICAL data loss\* shell.cp\(\) Content of file is erased when trying to copy it to the folder it already belongs to [\#678](https://github.com/shelljs/shelljs/issues/678)
+- Use with webpack broken in 0.7.6 [\#667](https://github.com/shelljs/shelljs/issues/667)
+- Difference between bash ls -R and ShellJS ls -R with symlinks [\#666](https://github.com/shelljs/shelljs/issues/666)
+- Refactor which\(\) \(too many repeated code blocks\) [\#656](https://github.com/shelljs/shelljs/issues/656)
+- find\(\) raises error when unable to find any files matching, expected to return empty array. [\#653](https://github.com/shelljs/shelljs/issues/653)
+- Reformat the markdown in RELEASE.md [\#642](https://github.com/shelljs/shelljs/issues/642)
+- rm -rf doesn't work if the directory contains an asar archive in Electron [\#618](https://github.com/shelljs/shelljs/issues/618)
+- Add support for other file types in rm [\#617](https://github.com/shelljs/shelljs/issues/617)
+- Feature request: ls -L option [\#563](https://github.com/shelljs/shelljs/issues/563)
+- How to send SIGINT signal to child process launched with exec [\#518](https://github.com/shelljs/shelljs/issues/518)
+- exec doesnt seem to be working [\#480](https://github.com/shelljs/shelljs/issues/480)
+- feature request: option to add node\_modules to the path for shelljs scripts [\#469](https://github.com/shelljs/shelljs/issues/469)
+- high cpu usage during synchronous exec [\#167](https://github.com/shelljs/shelljs/issues/167)
+
+**Merged pull requests:**
+
+- Add support for removing fifos [\#687](https://github.com/shelljs/shelljs/pull/687) ([freitagbr](https://github.com/freitagbr))
+- chore: add codecov script to appveyor CI [\#686](https://github.com/shelljs/shelljs/pull/686) ([nfischer](https://github.com/nfischer))
+- Refactor tests to improve readability [\#685](https://github.com/shelljs/shelljs/pull/685) ([nfischer](https://github.com/nfischer))
+- fix: convert error output to be consistent cross-platform [\#684](https://github.com/shelljs/shelljs/pull/684) ([nfischer](https://github.com/nfischer))
+- chore: add codecov [\#682](https://github.com/shelljs/shelljs/pull/682) ([nfischer](https://github.com/nfischer))
+- Fix cp overwriting identical files [\#679](https://github.com/shelljs/shelljs/pull/679) ([freitagbr](https://github.com/freitagbr))
+- Modified glob pattern. Fixes \#666 [\#676](https://github.com/shelljs/shelljs/pull/676) ([frandiox](https://github.com/frandiox))
+- refactor\(parseOptions\): better handle errors [\#674](https://github.com/shelljs/shelljs/pull/674) ([nfischer](https://github.com/nfischer))
+- test: add misc. tests to improve coverage [\#673](https://github.com/shelljs/shelljs/pull/673) ([nfischer](https://github.com/nfischer))
+- test: don't count hard-to-test lines for coverage [\#672](https://github.com/shelljs/shelljs/pull/672) ([nfischer](https://github.com/nfischer))
+- fix: switch commands.json -\> commands.js [\#668](https://github.com/shelljs/shelljs/pull/668) ([nfischer](https://github.com/nfischer))
+- ls -L \(follow symlinks\) [\#665](https://github.com/shelljs/shelljs/pull/665) ([frandiox](https://github.com/frandiox))
+- docs\(chmod\): document `options` argument [\#663](https://github.com/shelljs/shelljs/pull/663) ([gkalpak](https://github.com/gkalpak))
+- docs: clean up RELEASE.md [\#662](https://github.com/shelljs/shelljs/pull/662) ([nfischer](https://github.com/nfischer))
+- docs: miscellaneous README changes [\#661](https://github.com/shelljs/shelljs/pull/661) ([nfischer](https://github.com/nfischer))
+- Fix typo in README [\#660](https://github.com/shelljs/shelljs/pull/660) ([faheel](https://github.com/faheel))
+- refactor: reduce repeated code in which\(\) [\#659](https://github.com/shelljs/shelljs/pull/659) ([nfischer](https://github.com/nfischer))
+- feature: add -a option for which command [\#655](https://github.com/shelljs/shelljs/pull/655) ([termosa](https://github.com/termosa))
+- Fix find ENOENT [\#654](https://github.com/shelljs/shelljs/pull/654) ([freitagbr](https://github.com/freitagbr))
+- Safely exit by throwing an error [\#649](https://github.com/shelljs/shelljs/pull/649) ([freitagbr](https://github.com/freitagbr))
+- Chore drop 0.12 [\#648](https://github.com/shelljs/shelljs/pull/648) ([nfischer](https://github.com/nfischer))
+- chore\(lint\): Enforce a trailing comma for multi-line [\#646](https://github.com/shelljs/shelljs/pull/646) ([nfischer](https://github.com/nfischer))
+- docs\(release\): use bulleted list [\#643](https://github.com/shelljs/shelljs/pull/643) ([freitagbr](https://github.com/freitagbr))
+
+## [v0.7.6](https://github.com/shelljs/shelljs/tree/v0.7.6) (2017-01-08)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.5...v0.7.6)
+
+**Closed issues:**
+
+- unable to execute ionic command with shell js  [\#640](https://github.com/shelljs/shelljs/issues/640)
+- How to increase ShellJS buffer size? [\#639](https://github.com/shelljs/shelljs/issues/639)
+- mkdir fails with non-normalized path [\#634](https://github.com/shelljs/shelljs/issues/634)
+- Move execPath into common [\#633](https://github.com/shelljs/shelljs/issues/633)
+- QUESTION: Feedback while an operation is running? [\#629](https://github.com/shelljs/shelljs/issues/629)
+- Test setup/cleanup is broken [\#621](https://github.com/shelljs/shelljs/issues/621)
+- Ignore temp directories when running lint [\#620](https://github.com/shelljs/shelljs/issues/620)
+- parseOptions should throw an error if the option string doesn't start with '-' [\#614](https://github.com/shelljs/shelljs/issues/614)
+- chore: LGTM.co is gone [\#595](https://github.com/shelljs/shelljs/issues/595)
+- refactor: objectAssign should refer to Object.assign if it exists, or the internal polyfill otherwise [\#592](https://github.com/shelljs/shelljs/issues/592)
+- parseOptions: allow a way to keep errors silent \(exception only\) [\#591](https://github.com/shelljs/shelljs/issues/591)
+- \[Question\] commands with multiple options / arguments? [\#589](https://github.com/shelljs/shelljs/issues/589)
+- feature: GNU Parallel  [\#585](https://github.com/shelljs/shelljs/issues/585)
+- write to file [\#568](https://github.com/shelljs/shelljs/issues/568)
+- Cannot figure out how to disable globbing for rm [\#567](https://github.com/shelljs/shelljs/issues/567)
+- Switch to the ava test framework [\#560](https://github.com/shelljs/shelljs/issues/560)
+- Option not recognized [\#556](https://github.com/shelljs/shelljs/issues/556)
+- chore: add @freitagbr to LGTM maintainers [\#552](https://github.com/shelljs/shelljs/issues/552)
+- chore: set up dev branch [\#548](https://github.com/shelljs/shelljs/issues/548)
+- bug: cp\(\) doesn't always copy everything [\#547](https://github.com/shelljs/shelljs/issues/547)
+- User-friendly lint command [\#544](https://github.com/shelljs/shelljs/issues/544)
+- Lint warning [\#542](https://github.com/shelljs/shelljs/issues/542)
+- chore: add nodejs v7 to CI [\#537](https://github.com/shelljs/shelljs/issues/537)
+- error.code is not always available [\#536](https://github.com/shelljs/shelljs/issues/536)
+- Add shx as a dependency for testing [\#525](https://github.com/shelljs/shelljs/issues/525)
+- Feature request: allow `common.error\(\)` to optionally not insert a prefix and optionally not print to console [\#523](https://github.com/shelljs/shelljs/issues/523)
+- Feature request: Add "shelljs.unlink" [\#519](https://github.com/shelljs/shelljs/issues/519)
+- Sed should allow a replacement string to contain `\1` for match groups [\#507](https://github.com/shelljs/shelljs/issues/507)
+- Usage with neodoc [\#445](https://github.com/shelljs/shelljs/issues/445)
+- \[ Feature idea \] synchronous sleep command [\#441](https://github.com/shelljs/shelljs/issues/441)
+- Improve test coverage [\#347](https://github.com/shelljs/shelljs/issues/347)
+- Add a way to prevent shell-expansion on commands \(this issue is not for exec\) [\#345](https://github.com/shelljs/shelljs/issues/345)
+- Chown [\#183](https://github.com/shelljs/shelljs/issues/183)
+- spawn EMFILE [\#81](https://github.com/shelljs/shelljs/issues/81)
+- Rewrite exec using execsync-ng \(which uses node-ffi\) [\#66](https://github.com/shelljs/shelljs/issues/66)
+- `exec` gets stuck on my Debian box [\#51](https://github.com/shelljs/shelljs/issues/51)
+- 100% cpu usage when a nodejs script goes side ways executing a command. [\#5](https://github.com/shelljs/shelljs/issues/5)
+
+**Merged pull requests:**
+
+- refactor: add config.reset\(\) and .resetForTesting\(\) [\#641](https://github.com/shelljs/shelljs/pull/641) ([nfischer](https://github.com/nfischer))
+- chore: set up test coverage [\#638](https://github.com/shelljs/shelljs/pull/638) ([nfischer](https://github.com/nfischer))
+- refactor: create common.execPath [\#636](https://github.com/shelljs/shelljs/pull/636) ([nfischer](https://github.com/nfischer))
+- fix: allow non-normalized paths as input to mkdir [\#635](https://github.com/shelljs/shelljs/pull/635) ([nfischer](https://github.com/nfischer))
+- Finalize moving to ava [\#630](https://github.com/shelljs/shelljs/pull/630) ([freitagbr](https://github.com/freitagbr))
+- test: refactor pushd tests to AVA [\#627](https://github.com/shelljs/shelljs/pull/627) ([nfischer](https://github.com/nfischer))
+- test: refactor popd tests to AVA [\#626](https://github.com/shelljs/shelljs/pull/626) ([nfischer](https://github.com/nfischer))
+- test: refactor shjs tests to AVA [\#625](https://github.com/shelljs/shelljs/pull/625) ([nfischer](https://github.com/nfischer))
+- test: remove tests for make \(deprecated\) [\#624](https://github.com/shelljs/shelljs/pull/624) ([nfischer](https://github.com/nfischer))
+- Ignore test temp directories during linting [\#623](https://github.com/shelljs/shelljs/pull/623) ([freitagbr](https://github.com/freitagbr))
+- refactor: list all commands in commands.json [\#616](https://github.com/shelljs/shelljs/pull/616) ([nfischer](https://github.com/nfischer))
+- Throw an error if the options string does not start with '-' [\#615](https://github.com/shelljs/shelljs/pull/615) ([freitagbr](https://github.com/freitagbr))
+- chore: switch to files attribute from npmignore [\#613](https://github.com/shelljs/shelljs/pull/613) ([nfischer](https://github.com/nfischer))
+- test: refactor 'test' command tests to AVA [\#612](https://github.com/shelljs/shelljs/pull/612) ([nfischer](https://github.com/nfischer))
+- test: refactor find tests to AVA [\#611](https://github.com/shelljs/shelljs/pull/611) ([nfischer](https://github.com/nfischer))
+- test: refactor ln tests to AVA [\#610](https://github.com/shelljs/shelljs/pull/610) ([nfischer](https://github.com/nfischer))
+- test: refactor ls to use AVA [\#609](https://github.com/shelljs/shelljs/pull/609) ([nfischer](https://github.com/nfischer))
+- test: refactor pipe tests to AVA [\#608](https://github.com/shelljs/shelljs/pull/608) ([nfischer](https://github.com/nfischer))
+- test: refactor sed tests to AVA [\#607](https://github.com/shelljs/shelljs/pull/607) ([nfischer](https://github.com/nfischer))
+- test: refactor grep tests to AVA [\#606](https://github.com/shelljs/shelljs/pull/606) ([nfischer](https://github.com/nfischer))
+- test: refactor global tests to AVA [\#605](https://github.com/shelljs/shelljs/pull/605) ([nfischer](https://github.com/nfischer))
+- test: refactor touch tests to AVA [\#604](https://github.com/shelljs/shelljs/pull/604) ([nfischer](https://github.com/nfischer))
+- test: refactor uniq tests to AVA [\#603](https://github.com/shelljs/shelljs/pull/603) ([nfischer](https://github.com/nfischer))
+- test: refactor sort tests to AVA [\#602](https://github.com/shelljs/shelljs/pull/602) ([nfischer](https://github.com/nfischer))
+- test: refactor tail tests to AVA [\#601](https://github.com/shelljs/shelljs/pull/601) ([nfischer](https://github.com/nfischer))
+- test: refactor head tests to AVA [\#600](https://github.com/shelljs/shelljs/pull/600) ([nfischer](https://github.com/nfischer))
+- test: refactor mkdir tests to AVA [\#599](https://github.com/shelljs/shelljs/pull/599) ([nfischer](https://github.com/nfischer))
+- Fix: rm behavior regarding symlinks [\#598](https://github.com/shelljs/shelljs/pull/598) ([freitagbr](https://github.com/freitagbr))
+- test: refactor mv tests to AVA [\#597](https://github.com/shelljs/shelljs/pull/597) ([nfischer](https://github.com/nfischer))
+- Remove files related to lgtm.co [\#596](https://github.com/shelljs/shelljs/pull/596) ([freitagbr](https://github.com/freitagbr))
+- Add ability to configure error from parseOptions [\#594](https://github.com/shelljs/shelljs/pull/594) ([freitagbr](https://github.com/freitagbr))
+- Use Object.assign if possible [\#593](https://github.com/shelljs/shelljs/pull/593) ([freitagbr](https://github.com/freitagbr))
+- Add "-n" option to echo [\#590](https://github.com/shelljs/shelljs/pull/590) ([freitagbr](https://github.com/freitagbr))
+- test: refactor rm tests to AVA [\#586](https://github.com/shelljs/shelljs/pull/586) ([nfischer](https://github.com/nfischer))
+- test: refactor pwd tests to AVA [\#582](https://github.com/shelljs/shelljs/pull/582) ([nfischer](https://github.com/nfischer))
+- test: refactor tempdir tests to AVA [\#581](https://github.com/shelljs/shelljs/pull/581) ([nfischer](https://github.com/nfischer))
+- test: refactor 'which' tests to AVA [\#580](https://github.com/shelljs/shelljs/pull/580) ([nfischer](https://github.com/nfischer))
+- test: refactor plugin tests to AVA [\#579](https://github.com/shelljs/shelljs/pull/579) ([nfischer](https://github.com/nfischer))
+- test: refactor toEnd tests to AVA [\#578](https://github.com/shelljs/shelljs/pull/578) ([nfischer](https://github.com/nfischer))
+- test: refactor to tests to AVA [\#577](https://github.com/shelljs/shelljs/pull/577) ([nfischer](https://github.com/nfischer))
+- test: refactor 'set' tests to AVA [\#576](https://github.com/shelljs/shelljs/pull/576) ([nfischer](https://github.com/nfischer))
+- test: refactor echo tests to AVA [\#575](https://github.com/shelljs/shelljs/pull/575) ([nfischer](https://github.com/nfischer))
+- test: refactor exec tests to AVA [\#574](https://github.com/shelljs/shelljs/pull/574) ([nfischer](https://github.com/nfischer))
+- test: refactor env tests to AVA [\#573](https://github.com/shelljs/shelljs/pull/573) ([nfischer](https://github.com/nfischer))
+- test: refactor dirs tests to AVA [\#572](https://github.com/shelljs/shelljs/pull/572) ([nfischer](https://github.com/nfischer))
+- test: refactor config tests to AVA [\#571](https://github.com/shelljs/shelljs/pull/571) ([nfischer](https://github.com/nfischer))
+- test: refactor common tests to AVA [\#570](https://github.com/shelljs/shelljs/pull/570) ([nfischer](https://github.com/nfischer))
+- test: refactor chmod tests to AVA [\#569](https://github.com/shelljs/shelljs/pull/569) ([nfischer](https://github.com/nfischer))
+- test: refactor cp tests to ava [\#565](https://github.com/shelljs/shelljs/pull/565) ([nfischer](https://github.com/nfischer))
+- test: refactor cat tests to ava [\#564](https://github.com/shelljs/shelljs/pull/564) ([nfischer](https://github.com/nfischer))
+- test: set up ava and move cd.js [\#561](https://github.com/shelljs/shelljs/pull/561) ([nfischer](https://github.com/nfischer))
+- Update sed documentation regarding capture groups [\#558](https://github.com/shelljs/shelljs/pull/558) ([freitagbr](https://github.com/freitagbr))
+- Add newline to output of echo [\#557](https://github.com/shelljs/shelljs/pull/557) ([freitagbr](https://github.com/freitagbr))
+- fix: handle code-less errors more carefully in exec [\#554](https://github.com/shelljs/shelljs/pull/554) ([nfischer](https://github.com/nfischer))
+- Add Brandon Freitag to maintainers/contributors [\#553](https://github.com/shelljs/shelljs/pull/553) ([freitagbr](https://github.com/freitagbr))
+- Get pipe tests running on Windows. [\#550](https://github.com/shelljs/shelljs/pull/550) ([binki](https://github.com/binki))
+- fix: maxdepth doesn't limit total number of copies [\#549](https://github.com/shelljs/shelljs/pull/549) ([nfischer](https://github.com/nfischer))
+- Fix lint warning [\#543](https://github.com/shelljs/shelljs/pull/543) ([freitagbr](https://github.com/freitagbr))
+- chore: remove v0.10 from Travis CI [\#540](https://github.com/shelljs/shelljs/pull/540) ([nfischer](https://github.com/nfischer))
+- chore: add Node v7 for CI [\#539](https://github.com/shelljs/shelljs/pull/539) ([nfischer](https://github.com/nfischer))
+
+## [v0.7.5](https://github.com/shelljs/shelljs/tree/v0.7.5) (2016-10-27)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.4...v0.7.5)
+
+**Closed issues:**
+
+- Project objectives: there is some higher goal to achieve? [\#533](https://github.com/shelljs/shelljs/issues/533)
+- fs.existsSync is un-deprecated [\#531](https://github.com/shelljs/shelljs/issues/531)
+- Inadvertent breaking change to shell.test\(\) [\#529](https://github.com/shelljs/shelljs/issues/529)
+- Add -u flag support for cp [\#526](https://github.com/shelljs/shelljs/issues/526)
+- API request: allow `plugin.error\(\)` to take an options parameter [\#522](https://github.com/shelljs/shelljs/issues/522)
+- FS Real Path error thrown when requiring shelljs [\#521](https://github.com/shelljs/shelljs/issues/521)
+- Question: passing code via pipe? [\#520](https://github.com/shelljs/shelljs/issues/520)
+- The performance in `cp` is different between `0.6.0` and `0.7.4` [\#517](https://github.com/shelljs/shelljs/issues/517)
+- ShellJS in Electron package don't find ffmpeg anymore [\#516](https://github.com/shelljs/shelljs/issues/516)
+- Exec issues with string option introduced in 0.7.4 [\#515](https://github.com/shelljs/shelljs/issues/515)
+- \[ Feature \] SSH command [\#435](https://github.com/shelljs/shelljs/issues/435)
+
+**Merged pull requests:**
+
+- feat: plugin.error\(\) takes an options parameter [\#535](https://github.com/shelljs/shelljs/pull/535) ([nfischer](https://github.com/nfischer))
+- Revert "refactor: replace fs.existsSync" fixes\(\#531\) [\#532](https://github.com/shelljs/shelljs/pull/532) ([gyandeeps](https://github.com/gyandeeps))
+- Fix: Remove default glob from shell.test \(fixes \#529\) [\#530](https://github.com/shelljs/shelljs/pull/530) ([gyandeeps](https://github.com/gyandeeps))
+- feat: cp -u option [\#527](https://github.com/shelljs/shelljs/pull/527) ([nfischer](https://github.com/nfischer))
+- chore: add downloads per month on README [\#513](https://github.com/shelljs/shelljs/pull/513) ([nfischer](https://github.com/nfischer))
+
+## [v0.7.4](https://github.com/shelljs/shelljs/tree/v0.7.4) (2016-08-26)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.3...v0.7.4)
+
+**Closed issues:**
+
+- fix: echo -e should not print "-e" [\#510](https://github.com/shelljs/shelljs/issues/510)
+- Wrong method signature in doc [\#498](https://github.com/shelljs/shelljs/issues/498)
+- readFromPipe should be a function with no arguments [\#485](https://github.com/shelljs/shelljs/issues/485)
+- TypeError: Cannot read property 'toString' of undefined [\#471](https://github.com/shelljs/shelljs/issues/471)
+
+**Merged pull requests:**
+
+- fix: echo supports -e option properly [\#511](https://github.com/shelljs/shelljs/pull/511) ([nfischer](https://github.com/nfischer))
+- refactor: replace fs.existsSync [\#509](https://github.com/shelljs/shelljs/pull/509) ([nfischer](https://github.com/nfischer))
+- refactor: readFromPipe\(\) requires no arguments [\#506](https://github.com/shelljs/shelljs/pull/506) ([nfischer](https://github.com/nfischer))
+- chore: switch to eslint [\#504](https://github.com/shelljs/shelljs/pull/504) ([nfischer](https://github.com/nfischer))
+- feat: add overWrite option for commands [\#503](https://github.com/shelljs/shelljs/pull/503) ([nfischer](https://github.com/nfischer))
+- chore: update issue template [\#502](https://github.com/shelljs/shelljs/pull/502) ([nfischer](https://github.com/nfischer))
+- fixed head/tail readme [\#499](https://github.com/shelljs/shelljs/pull/499) ([charlesread](https://github.com/charlesread))
+
+## [v0.7.3](https://github.com/shelljs/shelljs/tree/v0.7.3) (2016-07-27)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.2...v0.7.3)
+
+**Closed issues:**
+
+- expose execSync [\#494](https://github.com/shelljs/shelljs/issues/494)
+- Add a way to create commands that can receive from a pipe without being standalone commands [\#487](https://github.com/shelljs/shelljs/issues/487)
+- cp -r breaks when the directory contains a softlink [\#193](https://github.com/shelljs/shelljs/issues/193)
+- Redirect output to file fails [\#60](https://github.com/shelljs/shelljs/issues/60)
+- We need sed -n ? [\#38](https://github.com/shelljs/shelljs/issues/38)
+
+**Merged pull requests:**
+
+- refactor: allow pipeOnly commands \(methods on ShellStrings\) [\#493](https://github.com/shelljs/shelljs/pull/493) ([nfischer](https://github.com/nfischer))
+- refactor: glob by default for commands [\#492](https://github.com/shelljs/shelljs/pull/492) ([nfischer](https://github.com/nfischer))
+- refactor: switch from notUnix to unix in wrap\(\) [\#491](https://github.com/shelljs/shelljs/pull/491) ([nfischer](https://github.com/nfischer))
+- refactor: switch common.extend\(\) to Object.assign ponyfill [\#490](https://github.com/shelljs/shelljs/pull/490) ([nfischer](https://github.com/nfischer))
+- fix: conflicting options now properly override each other [\#489](https://github.com/shelljs/shelljs/pull/489) ([nfischer](https://github.com/nfischer))
+- refactor: expose plugin utils & add initial tests [\#484](https://github.com/shelljs/shelljs/pull/484) ([nfischer](https://github.com/nfischer))
+
+## [v0.7.2](https://github.com/shelljs/shelljs/tree/v0.7.2) (2016-07-25)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.1...v0.7.2)
+
+**Closed issues:**
+
+- shelljs should not kill process if node call throws exception [\#473](https://github.com/shelljs/shelljs/issues/473)
+- `cp` work incorrectly when folder name contains '@' [\#463](https://github.com/shelljs/shelljs/issues/463)
+- Something went wrong [\#158](https://github.com/shelljs/shelljs/issues/158)
+
+**Merged pull requests:**
+
+- fix: resolve a cylcic-dependency problem [\#482](https://github.com/shelljs/shelljs/pull/482) ([nfischer](https://github.com/nfischer))
+- refactor: add wrapOutput option to auto-ShellString-ify command output [\#481](https://github.com/shelljs/shelljs/pull/481) ([nfischer](https://github.com/nfischer))
+- refactor: move option parsing into common.wrap\(\) [\#479](https://github.com/shelljs/shelljs/pull/479) ([nfischer](https://github.com/nfischer))
+- refactor: hook new uniq\(\) command using new format [\#478](https://github.com/shelljs/shelljs/pull/478) ([nfischer](https://github.com/nfischer))
+- Fix mkdir malformed path [\#477](https://github.com/shelljs/shelljs/pull/477) ([nfischer](https://github.com/nfischer))
+- fix: mkdir for invalid perms does not kill process [\#474](https://github.com/shelljs/shelljs/pull/474) ([nfischer](https://github.com/nfischer))
+- feat\(command\): new command: uniq\(\) [\#453](https://github.com/shelljs/shelljs/pull/453) ([joshi-sh](https://github.com/joshi-sh))
+
+## [v0.7.1](https://github.com/shelljs/shelljs/tree/v0.7.1) (2016-07-22)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.7.0...v0.7.1)
+
+**Closed issues:**
+
+- cp -n doesn't work correctly [\#465](https://github.com/shelljs/shelljs/issues/465)
+- how can i run sudo apt-get install xtodotool by your plugin? [\#448](https://github.com/shelljs/shelljs/issues/448)
+- shell.js grep: internal error,  Invalid regular expression [\#447](https://github.com/shelljs/shelljs/issues/447)
+- Stdout is empty on Git log command [\#439](https://github.com/shelljs/shelljs/issues/439)
+- Cannot read toString of null when using execSync [\#415](https://github.com/shelljs/shelljs/issues/415)
+- cp -R dir/ target fails to copy hidden files in dir [\#140](https://github.com/shelljs/shelljs/issues/140)
+- \#mv Won't Work Across Disks [\#1](https://github.com/shelljs/shelljs/issues/1)
+
+**Merged pull requests:**
+
+- refactor: commands now register themselves [\#475](https://github.com/shelljs/shelljs/pull/475) ([nfischer](https://github.com/nfischer))
+- chore: switch to shields.io, and add npm badge [\#470](https://github.com/shelljs/shelljs/pull/470) ([nfischer](https://github.com/nfischer))
+- fix\(cp\): -n option no longer raises error [\#466](https://github.com/shelljs/shelljs/pull/466) ([nfischer](https://github.com/nfischer))
+- refactor: expose pipe-ability to command configuration [\#464](https://github.com/shelljs/shelljs/pull/464) ([nfischer](https://github.com/nfischer))
+- fix\(mv\): works across partitions [\#461](https://github.com/shelljs/shelljs/pull/461) ([nfischer](https://github.com/nfischer))
+- chore: switch to shelljs-changelog [\#460](https://github.com/shelljs/shelljs/pull/460) ([nfischer](https://github.com/nfischer))
+- chore: update release process [\#459](https://github.com/shelljs/shelljs/pull/459) ([nfischer](https://github.com/nfischer))
+- chore: revert depreciate shelljs/make \(\#431\) [\#458](https://github.com/shelljs/shelljs/pull/458) ([zephraph](https://github.com/zephraph))
+- chore: clarify message for when docs are not generated [\#457](https://github.com/shelljs/shelljs/pull/457) ([nfischer](https://github.com/nfischer))
+- chore\(gendocs\): add `npm run gendocs` command [\#455](https://github.com/shelljs/shelljs/pull/455) ([nfischer](https://github.com/nfischer))
+- chore: update jshint and move it to an npm script [\#454](https://github.com/shelljs/shelljs/pull/454) ([nfischer](https://github.com/nfischer))
+- test\(ls\): add case for trailing slash on dir name [\#450](https://github.com/shelljs/shelljs/pull/450) ([nfischer](https://github.com/nfischer))
+- docs\(exec\): explicitly mention the `shell` option [\#449](https://github.com/shelljs/shelljs/pull/449) ([nfischer](https://github.com/nfischer))
+- chore: setup changelog [\#443](https://github.com/shelljs/shelljs/pull/443) ([levithomason](https://github.com/levithomason))
+- docs: comment code better to help contributors [\#437](https://github.com/shelljs/shelljs/pull/437) ([nfischer](https://github.com/nfischer))
+- chore\(CI\): update appveyor [\#436](https://github.com/shelljs/shelljs/pull/436) ([nfischer](https://github.com/nfischer))
+- chore: test against node v6 [\#433](https://github.com/shelljs/shelljs/pull/433) ([nfischer](https://github.com/nfischer))
+- docs: warn that README contains newest features [\#410](https://github.com/shelljs/shelljs/pull/410) ([nfischer](https://github.com/nfischer))
+
+## [v0.7.0](https://github.com/shelljs/shelljs/tree/v0.7.0) (2016-04-25)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.6.0...v0.7.0)
+
+**Closed issues:**
+
+- exec\('nohup node some.js &'\) [\#426](https://github.com/shelljs/shelljs/issues/426)
+- shelljs Breaks SemVer for Alpha and Pre-Release Versions [\#390](https://github.com/shelljs/shelljs/issues/390)
+- Copy not accepting source end with wildcards \* when using -r on v0.6.0 [\#389](https://github.com/shelljs/shelljs/issues/389)
+- Support globbing in `shjs` [\#388](https://github.com/shelljs/shelljs/issues/388)
+- Refactor more commands to return ShellString [\#373](https://github.com/shelljs/shelljs/issues/373)
+- ln\('-sf', './', '\<destination\>'\) is not linking the right folder [\#363](https://github.com/shelljs/shelljs/issues/363)
+- v0.6.0 - shell.cp\('r', '/foo/\*, '/bar'\) fails with /foo/\* no such file or directory [\#342](https://github.com/shelljs/shelljs/issues/342)
+- Add documentup as a webhook [\#327](https://github.com/shelljs/shelljs/issues/327)
+- Dir glob breaks when in the middle of path [\#245](https://github.com/shelljs/shelljs/issues/245)
+- could you switch off wiki page? [\#233](https://github.com/shelljs/shelljs/issues/233)
+- ls globbing does not behave like shell, consider using glob.sync [\#225](https://github.com/shelljs/shelljs/issues/225)
+- Cannot run shell.exec\('heroku config:push'\) -- just hangs  [\#218](https://github.com/shelljs/shelljs/issues/218)
+- `cp` does not overwrite files by default [\#210](https://github.com/shelljs/shelljs/issues/210)
+- exec failed to return [\#208](https://github.com/shelljs/shelljs/issues/208)
+- CLI Version [\#202](https://github.com/shelljs/shelljs/issues/202)
+- Bracket expansion not working [\#176](https://github.com/shelljs/shelljs/issues/176)
+- "exec" causes LiveScript interpreter \(lsc\) to hang [\#160](https://github.com/shelljs/shelljs/issues/160)
+- Don't modify string prototype [\#159](https://github.com/shelljs/shelljs/issues/159)
+- `exec\(...\).to\(file\)` should work [\#154](https://github.com/shelljs/shelljs/issues/154)
+- Can't install shelljs locally instead of globally [\#136](https://github.com/shelljs/shelljs/issues/136)
+- shelljs and node 0.10.28 [\#125](https://github.com/shelljs/shelljs/issues/125)
+- Use case for global installed shelljs [\#123](https://github.com/shelljs/shelljs/issues/123)
+- Only get stdout from `exec` [\#92](https://github.com/shelljs/shelljs/issues/92)
+- What about other commands? [\#90](https://github.com/shelljs/shelljs/issues/90)
+- Flesh out example of exit\(\) [\#73](https://github.com/shelljs/shelljs/issues/73)
+- exec doesn't work with qualified paths on windows [\#41](https://github.com/shelljs/shelljs/issues/41)
+- exec does not working in mingw bash in windows [\#17](https://github.com/shelljs/shelljs/issues/17)
+- Add support for cp -P option [\#413](https://github.com/shelljs/shelljs/issues/413)
+- cp -L: Incorrect behavior for symlinks to regular files [\#407](https://github.com/shelljs/shelljs/issues/407)
+- Edit the docs to emphasize ShellStrings and Pipes [\#398](https://github.com/shelljs/shelljs/issues/398)
+- Error message isn't always printed [\#372](https://github.com/shelljs/shelljs/issues/372)
+- Standardize command output [\#356](https://github.com/shelljs/shelljs/issues/356)
+- exec\(\) doesn't clean up all temp files [\#353](https://github.com/shelljs/shelljs/issues/353)
+- Document that exec\(\) options don't work on early versions of node [\#350](https://github.com/shelljs/shelljs/issues/350)
+- Add -f option to set\(\) [\#344](https://github.com/shelljs/shelljs/issues/344)
+- Glob commands by default [\#343](https://github.com/shelljs/shelljs/issues/343)
+- rm -rf incorrect behaviour [\#332](https://github.com/shelljs/shelljs/issues/332)
+- Switch `exec\(\)` to use bash by default [\#281](https://github.com/shelljs/shelljs/issues/281)
+- pipe to proc [\#148](https://github.com/shelljs/shelljs/issues/148)
+- shell builtin [\#138](https://github.com/shelljs/shelljs/issues/138)
+- add timeout option for exec [\#132](https://github.com/shelljs/shelljs/issues/132)
+- shelljs cp handling symlinks badly [\#69](https://github.com/shelljs/shelljs/issues/69)
+
+**Merged pull requests:**
+
+- chore: add "Team" section to README [\#423](https://github.com/shelljs/shelljs/pull/423) ([nfischer](https://github.com/nfischer))
+- Contributing guidelines [\#422](https://github.com/shelljs/shelljs/pull/422) ([nfischer](https://github.com/nfischer))
+- feat\(glob\): expose config.globOptions. [\#400](https://github.com/shelljs/shelljs/pull/400) ([nfischer](https://github.com/nfischer))
+- Add shelljs as a keyword in package.json [\#393](https://github.com/shelljs/shelljs/pull/393) ([nfischer](https://github.com/nfischer))
+- docs: add link to wiki page [\#392](https://github.com/shelljs/shelljs/pull/392) ([nfischer](https://github.com/nfischer))
+- refactor\(cd\): use process.env.OLDPWD to store previous dir [\#383](https://github.com/shelljs/shelljs/pull/383) ([nfischer](https://github.com/nfischer))
+- chore\(appveyor\): add in node 4 for appveyor [\#381](https://github.com/shelljs/shelljs/pull/381) ([nfischer](https://github.com/nfischer))
+- Add Cash cross-reference [\#375](https://github.com/shelljs/shelljs/pull/375) ([dthree](https://github.com/dthree))
+- Ignore gitattributes from npm package [\#361](https://github.com/shelljs/shelljs/pull/361) ([nfischer](https://github.com/nfischer))
+- Consistently use LF line endings [\#355](https://github.com/shelljs/shelljs/pull/355) ([TimothyGu](https://github.com/TimothyGu))
+- Release v0.7.0 [\#429](https://github.com/shelljs/shelljs/pull/429) ([nfischer](https://github.com/nfischer))
+- fix: null is no longer confused for an object [\#428](https://github.com/shelljs/shelljs/pull/428) ([nfischer](https://github.com/nfischer))
+- fix\(ls\): no trailing newline for empty directories [\#425](https://github.com/shelljs/shelljs/pull/425) ([nfischer](https://github.com/nfischer))
+- feat\(cp\): -P option, plus better handling of symlinks [\#421](https://github.com/shelljs/shelljs/pull/421) ([nfischer](https://github.com/nfischer))
+- docs\(exec\): fix docs about exec return type [\#419](https://github.com/shelljs/shelljs/pull/419) ([nfischer](https://github.com/nfischer))
+- docs\(error\): deprecate relying on string value [\#418](https://github.com/shelljs/shelljs/pull/418) ([nfischer](https://github.com/nfischer))
+- fix: error message now printed for fatal failures [\#417](https://github.com/shelljs/shelljs/pull/417) ([nfischer](https://github.com/nfischer))
+- issue-407: Add regular files unit tests and fix symlink copy behavior [\#409](https://github.com/shelljs/shelljs/pull/409) ([charlesverge](https://github.com/charlesverge))
+- refactor\(rm\): Remove duplicate code [\#408](https://github.com/shelljs/shelljs/pull/408) ([nfischer](https://github.com/nfischer))
+- docs: wildcards for all commands, other docs cleanups [\#404](https://github.com/shelljs/shelljs/pull/404) ([nfischer](https://github.com/nfischer))
+- test\(rm\): add tests to prevent a future regression [\#403](https://github.com/shelljs/shelljs/pull/403) ([nfischer](https://github.com/nfischer))
+- refactor\(string\): modify string protoype, but only for shelljs/global [\#401](https://github.com/shelljs/shelljs/pull/401) ([nfischer](https://github.com/nfischer))
+- feat: adding error codes to ShellJS [\#394](https://github.com/shelljs/shelljs/pull/394) ([nfischer](https://github.com/nfischer))
+- feature: use rechoir [\#384](https://github.com/shelljs/shelljs/pull/384) ([nfischer](https://github.com/nfischer))
+- refactor\(cp\): clean up code and fix \#376 [\#380](https://github.com/shelljs/shelljs/pull/380) ([nfischer](https://github.com/nfischer))
+- New commands: sort\(\), head\(\), and tail\(\) [\#379](https://github.com/shelljs/shelljs/pull/379) ([nfischer](https://github.com/nfischer))
+- Add unit tests to prevent regression \(see \#376\) [\#378](https://github.com/shelljs/shelljs/pull/378) ([nfischer](https://github.com/nfischer))
+- feat\(pipe\): add support for pipes between commands [\#370](https://github.com/shelljs/shelljs/pull/370) ([nfischer](https://github.com/nfischer))
+- refactor\(ls\): greatly simplify ls implimentation [\#369](https://github.com/shelljs/shelljs/pull/369) ([ariporad](https://github.com/ariporad))
+- chore: drop node v0.10 support [\#368](https://github.com/shelljs/shelljs/pull/368) ([ariporad](https://github.com/ariporad))
+- perf\(cd\): only run `stat` once [\#367](https://github.com/shelljs/shelljs/pull/367) ([ariporad](https://github.com/ariporad))
+- fix\(exec\): properly handles paths with spaces and quotes [\#365](https://github.com/shelljs/shelljs/pull/365) ([nfischer](https://github.com/nfischer))
+- test\(ln\): add tests for linking to cwd [\#364](https://github.com/shelljs/shelljs/pull/364) ([nfischer](https://github.com/nfischer))
+- fix\(verbose\): verbose-style logging is consistent [\#362](https://github.com/shelljs/shelljs/pull/362) ([nfischer](https://github.com/nfischer))
+- Refactor shellstring [\#360](https://github.com/shelljs/shelljs/pull/360) ([nfischer](https://github.com/nfischer))
+- feat\(glob\): use glob module for globbing [\#359](https://github.com/shelljs/shelljs/pull/359) ([nfischer](https://github.com/nfischer))
+- feat\(set\): add -f option to disable globbing [\#358](https://github.com/shelljs/shelljs/pull/358) ([nfischer](https://github.com/nfischer))
+- config.fatal now throws an exception [\#357](https://github.com/shelljs/shelljs/pull/357) ([jrmclaurin](https://github.com/jrmclaurin))
+- fix\(exec\): temp files are now cleaned up [\#354](https://github.com/shelljs/shelljs/pull/354) ([nfischer](https://github.com/nfischer))
+- feat\(glob\): glob support for \(almost\) all commands [\#352](https://github.com/shelljs/shelljs/pull/352) ([nfischer](https://github.com/nfischer))
+- feat\(grep\): add -l option [\#349](https://github.com/shelljs/shelljs/pull/349) ([nfischer](https://github.com/nfischer))
+- fix\(exec\): now actually supports shell option [\#348](https://github.com/shelljs/shelljs/pull/348) ([nfischer](https://github.com/nfischer))
+- feat\(touch\): supports multiple files [\#346](https://github.com/shelljs/shelljs/pull/346) ([nfischer](https://github.com/nfischer))
+
+## [v0.6.0](https://github.com/shelljs/shelljs/tree/v0.6.0) (2016-02-05)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.5.3...v0.6.0)
+
+**Closed issues:**
+
+- option not recognized [\#334](https://github.com/shelljs/shelljs/issues/334)
+- Feature request: Metadata with `ls` [\#323](https://github.com/shelljs/shelljs/issues/323)
+- Gen-docs is broken [\#309](https://github.com/shelljs/shelljs/issues/309)
+- `link -s` is broken for files on Windows [\#301](https://github.com/shelljs/shelljs/issues/301)
+- Shelljs quits unexpectedly: [\#300](https://github.com/shelljs/shelljs/issues/300)
+- Failing tests on Windows [\#296](https://github.com/shelljs/shelljs/issues/296)
+- run-tests.js is broken for cmd.exe [\#294](https://github.com/shelljs/shelljs/issues/294)
+- Support echo-ing environment variables [\#291](https://github.com/shelljs/shelljs/issues/291)
+- Add Windows CI [\#287](https://github.com/shelljs/shelljs/issues/287)
+- Add tests for the shjs utility [\#280](https://github.com/shelljs/shelljs/issues/280)
+- Allow shjs utility to infer the extension for "filename." [\#278](https://github.com/shelljs/shelljs/issues/278)
+- Ability to read the stdout buffer line-by-line [\#277](https://github.com/shelljs/shelljs/issues/277)
+- Poor output for commands with multiple errors [\#267](https://github.com/shelljs/shelljs/issues/267)
+- Travis ci build status says "unknown" [\#266](https://github.com/shelljs/shelljs/issues/266)
+- wild card characters in filename not working as expected [\#262](https://github.com/shelljs/shelljs/issues/262)
+- shell.exec - read internal variable [\#260](https://github.com/shelljs/shelljs/issues/260)
+- cp and rename directory with -r doesn't match unix behavior [\#256](https://github.com/shelljs/shelljs/issues/256)
+- console.log.apply throwing TypeError: Illegal Invocation [\#255](https://github.com/shelljs/shelljs/issues/255)
+- How to exit on first error [\#253](https://github.com/shelljs/shelljs/issues/253)
+- why not support set 'cwd'  when invoke execAsync ? [\#250](https://github.com/shelljs/shelljs/issues/250)
+- Not possible to check the failure of cd? [\#247](https://github.com/shelljs/shelljs/issues/247)
+- By default shelljs runs command in root  [\#246](https://github.com/shelljs/shelljs/issues/246)
+- /usr/bin/env: node: No such file or directory [\#243](https://github.com/shelljs/shelljs/issues/243)
+- "Which" command not working properly on Windows Platform. [\#238](https://github.com/shelljs/shelljs/issues/238)
+- Arguments [\#237](https://github.com/shelljs/shelljs/issues/237)
+- sed\(\) should accept multiple file arguments [\#231](https://github.com/shelljs/shelljs/issues/231)
+- shelljs.exec\('aaa && bbb'\) blocks [\#229](https://github.com/shelljs/shelljs/issues/229)
+- Consider creating a GitHub Organization with more maintainers [\#223](https://github.com/shelljs/shelljs/issues/223)
+- \[idea\] Add chmodr function. [\#219](https://github.com/shelljs/shelljs/issues/219)
+- Execute a file [\#211](https://github.com/shelljs/shelljs/issues/211)
+- Where is standard error going to? [\#209](https://github.com/shelljs/shelljs/issues/209)
+- boolean return value for string.to\(\) [\#205](https://github.com/shelljs/shelljs/issues/205)
+- `common.error` doesn't throw [\#199](https://github.com/shelljs/shelljs/issues/199)
+- Problems with exec \(sync\) on 0.12/io.js [\#197](https://github.com/shelljs/shelljs/issues/197)
+- cp --update flag [\#172](https://github.com/shelljs/shelljs/issues/172)
+- Is there a way to suppress pushd/popd output? [\#171](https://github.com/shelljs/shelljs/issues/171)
+- Cannot recursively list all \*.js files [\#162](https://github.com/shelljs/shelljs/issues/162)
+- exec\(\) breaks if executed in a deleted directory [\#157](https://github.com/shelljs/shelljs/issues/157)
+- shjs command always exits with zero code [\#133](https://github.com/shelljs/shelljs/issues/133)
+- touch command [\#122](https://github.com/shelljs/shelljs/issues/122)
+- Symbolic links are broken! [\#100](https://github.com/shelljs/shelljs/issues/100)
+- interpret `--` as stdin [\#55](https://github.com/shelljs/shelljs/issues/55)
+- Error ENOTEMPTY when deleting a directory recursively. [\#49](https://github.com/shelljs/shelljs/issues/49)
+- Cross-platform way to add to PATH [\#32](https://github.com/shelljs/shelljs/issues/32)
+- `mv` fails on block, character, fifo [\#25](https://github.com/shelljs/shelljs/issues/25)
+- ls -l [\#22](https://github.com/shelljs/shelljs/issues/22)
+
+**Merged pull requests:**
+
+- feat\(set\): add new set\(\) command [\#329](https://github.com/shelljs/shelljs/pull/329) ([nfischer](https://github.com/nfischer))
+- Fix symlinking on Windows [\#322](https://github.com/shelljs/shelljs/pull/322) ([BYK](https://github.com/BYK))
+- Rewrite .gitignore to be more comprehensive [\#321](https://github.com/shelljs/shelljs/pull/321) ([BYK](https://github.com/BYK))
+- chore\(gitter/travis\): add gitter webhook to travis [\#313](https://github.com/shelljs/shelljs/pull/313) ([ariporad](https://github.com/ariporad))
+- chore\(LGTM\): add LGTM config files [\#312](https://github.com/shelljs/shelljs/pull/312) ([ariporad](https://github.com/ariporad))
+- feat\(ls\): add -d flag to ls\(\) [\#311](https://github.com/shelljs/shelljs/pull/311) ([nfischer](https://github.com/nfischer))
+- fix\(gen-docs\): fix issue where docs are generated wrong [\#310](https://github.com/shelljs/shelljs/pull/310) ([nfischer](https://github.com/nfischer))
+- chore\(package\): remove v0.8 from engines list [\#308](https://github.com/shelljs/shelljs/pull/308) ([nfischer](https://github.com/nfischer))
+- travis: Mark as not using `sudo` and do not test 0.11 [\#307](https://github.com/shelljs/shelljs/pull/307) ([TimothyGu](https://github.com/TimothyGu))
+- fix: jshint works on Windows [\#295](https://github.com/shelljs/shelljs/pull/295) ([nfischer](https://github.com/nfischer))
+- feat: add tilde expansion to expand\(\) [\#293](https://github.com/shelljs/shelljs/pull/293) ([nfischer](https://github.com/nfischer))
+- style: make docs more consistent [\#292](https://github.com/shelljs/shelljs/pull/292) ([nfischer](https://github.com/nfischer))
+- update `exec` docs to match implemented behaviour [\#289](https://github.com/shelljs/shelljs/pull/289) ([vise890](https://github.com/vise890))
+- chore: update github URL in package.json [\#288](https://github.com/shelljs/shelljs/pull/288) ([nfischer](https://github.com/nfischer))
+- docs\(spelling\): fix typo in source comment [\#285](https://github.com/shelljs/shelljs/pull/285) ([nfischer](https://github.com/nfischer))
+- chore\(travis\): add OS X to Travis CI [\#283](https://github.com/shelljs/shelljs/pull/283) ([nfischer](https://github.com/nfischer))
+- Don't do `console.log.apply\(this, ...\)`. [\#274](https://github.com/shelljs/shelljs/pull/274) ([ariporad](https://github.com/ariporad))
+- Implementing cd\('-'\) to behave like Bash's "cd -" [\#273](https://github.com/shelljs/shelljs/pull/273) ([nfischer](https://github.com/nfischer))
+- Fix cp to match unix behavior [\#271](https://github.com/shelljs/shelljs/pull/271) ([freitagbr](https://github.com/freitagbr))
+- Commands that have multiple errors now produce cleaner log output [\#268](https://github.com/shelljs/shelljs/pull/268) ([nfischer](https://github.com/nfischer))
+- Support exit code in shjs. [\#252](https://github.com/shelljs/shelljs/pull/252) ([bryce-gibson](https://github.com/bryce-gibson))
+- add touch\(1\) [\#249](https://github.com/shelljs/shelljs/pull/249) ([blockloop](https://github.com/blockloop))
+- Fix `os.tmpdir` bug [\#240](https://github.com/shelljs/shelljs/pull/240) ([BYK](https://github.com/BYK))
+- Make sure Which\(\) on Windows platform always return the command with … [\#239](https://github.com/shelljs/shelljs/pull/239) ([TingluoHuang](https://github.com/TingluoHuang))
+- Add target node.js \(iojs v1, v2, v3\) [\#230](https://github.com/shelljs/shelljs/pull/230) ([sanemat](https://github.com/sanemat))
+- feat-multisymbolic + Support for directory entry \(capital X in chmod terms\) [\#228](https://github.com/shelljs/shelljs/pull/228) ([rezonant](https://github.com/rezonant))
+- Fixes an issue with multi-symbolic mode specification \(ie a-rwx,u+rw\) [\#227](https://github.com/shelljs/shelljs/pull/227) ([rezonant](https://github.com/rezonant))
+- Memoized the result of target invocation [\#216](https://github.com/shelljs/shelljs/pull/216) ([rizowski](https://github.com/rizowski))
+- remove empty for loop and leaked i var [\#166](https://github.com/shelljs/shelljs/pull/166) ([ratbeard](https://github.com/ratbeard))
+- Wrap script name in double quotes [\#135](https://github.com/shelljs/shelljs/pull/135) ([ndelitski](https://github.com/ndelitski))
+- Fixed coffeescript syntax in top example [\#99](https://github.com/shelljs/shelljs/pull/99) ([maxnordlund](https://github.com/maxnordlund))
+- fix\(touch\): enhance parseOptions and fix touch's -r flag [\#341](https://github.com/shelljs/shelljs/pull/341) ([nfischer](https://github.com/nfischer))
+- chore\(.npmignore\): update npmignore [\#339](https://github.com/shelljs/shelljs/pull/339) ([ariporad](https://github.com/ariporad))
+- Release v0.6.0 [\#338](https://github.com/shelljs/shelljs/pull/338) ([ariporad](https://github.com/ariporad))
+- docs\(README\): remove coffeescript from README [\#337](https://github.com/shelljs/shelljs/pull/337) ([ariporad](https://github.com/ariporad))
+- fix\(cp\): add -n option, make -f default behavior [\#336](https://github.com/shelljs/shelljs/pull/336) ([nfischer](https://github.com/nfischer))
+- feat\(exec\): allow all exec options to pass through [\#335](https://github.com/shelljs/shelljs/pull/335) ([nfischer](https://github.com/nfischer))
+- fix\(mv\): add -n option, make -f default behavior [\#328](https://github.com/shelljs/shelljs/pull/328) ([nfischer](https://github.com/nfischer))
+- fix\(cat\): make behavior more like unix [\#326](https://github.com/shelljs/shelljs/pull/326) ([nfischer](https://github.com/nfischer))
+- feat\(ls\): add -l  option [\#324](https://github.com/shelljs/shelljs/pull/324) ([nfischer](https://github.com/nfischer))
+- style\(test/which\): make test/which.js conform to the style guidelines [\#320](https://github.com/shelljs/shelljs/pull/320) ([ariporad](https://github.com/ariporad))
+- chore\(appveyor\): add badge [\#316](https://github.com/shelljs/shelljs/pull/316) ([nfischer](https://github.com/nfischer))
+- fix\(windows\): fix shjs commands for windows [\#315](https://github.com/shelljs/shelljs/pull/315) ([nfischer](https://github.com/nfischer))
+- feat\(sed\): support multiple file names [\#314](https://github.com/shelljs/shelljs/pull/314) ([nfischer](https://github.com/nfischer))
+- feat\(cd\): cd\(\) \(no args\) changes to home directory [\#306](https://github.com/shelljs/shelljs/pull/306) ([nfischer](https://github.com/nfischer))
+- test\(shjs\): add tests for shjs [\#304](https://github.com/shelljs/shelljs/pull/304) ([ariporad](https://github.com/ariporad))
+- fix: regexes are more consistent with sed and grep [\#303](https://github.com/shelljs/shelljs/pull/303) ([nfischer](https://github.com/nfischer))
+- Add appveyor.yml config file [\#299](https://github.com/shelljs/shelljs/pull/299) ([nfischer](https://github.com/nfischer))
+- Fix tests on Windows [\#297](https://github.com/shelljs/shelljs/pull/297) ([BYK](https://github.com/BYK))
+- Search PATHEXT instead of 3 hardcoded values [\#290](https://github.com/shelljs/shelljs/pull/290) ([isiahmeadows](https://github.com/isiahmeadows))
+- Fix relative symlinks [\#282](https://github.com/shelljs/shelljs/pull/282) ([freitagbr](https://github.com/freitagbr))
+- Make to and toEnd chainable [\#276](https://github.com/shelljs/shelljs/pull/276) ([TimothyGu](https://github.com/TimothyGu))
+
+## [v0.5.3](https://github.com/shelljs/shelljs/tree/v0.5.3) (2015-08-11)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.5.2...v0.5.3)
+
+**Merged pull requests:**
+
+- Manually closing streams [\#222](https://github.com/shelljs/shelljs/pull/222) ([JulianLaval](https://github.com/JulianLaval))
+
+## [v0.5.2](https://github.com/shelljs/shelljs/tree/v0.5.2) (2015-08-10)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.5.1...v0.5.2)
+
+**Closed issues:**
+
+- Cannot run shell.exec [\#217](https://github.com/shelljs/shelljs/issues/217)
+- write after end: internal error [\#206](https://github.com/shelljs/shelljs/issues/206)
+
+**Merged pull requests:**
+
+- Update README.md [\#221](https://github.com/shelljs/shelljs/pull/221) ([giosh94mhz](https://github.com/giosh94mhz))
+- prevent internal error: write after end [\#214](https://github.com/shelljs/shelljs/pull/214) ([charlierudolph](https://github.com/charlierudolph))
+
+## [v0.5.1](https://github.com/shelljs/shelljs/tree/v0.5.1) (2015-06-05)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.5.0...v0.5.1)
+
+**Closed issues:**
+
+- cd into home directory [\#9](https://github.com/shelljs/shelljs/issues/9)
+
+**Merged pull requests:**
+
+- Fix issue \#49: Retry rmdirSync on Windows for up to 1 second if files still exist. [\#179](https://github.com/shelljs/shelljs/pull/179) ([andreialecu](https://github.com/andreialecu))
+
+## [v0.5.0](https://github.com/shelljs/shelljs/tree/v0.5.0) (2015-05-19)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.3.0...v0.5.0)
+
+**Closed issues:**
+
+- Enter text to prompt [\#203](https://github.com/shelljs/shelljs/issues/203)
+- Find which shell is being used [\#195](https://github.com/shelljs/shelljs/issues/195)
+- Pass command line params to the make tool [\#188](https://github.com/shelljs/shelljs/issues/188)
+- Is it possible to call exec with a command containing new lines ? [\#177](https://github.com/shelljs/shelljs/issues/177)
+- The installation would break on Windows 7 [\#161](https://github.com/shelljs/shelljs/issues/161)
+- Q.ninvoke\(\) returns undefined [\#153](https://github.com/shelljs/shelljs/issues/153)
+- installed shelljs on osx but reported error: npm ERR! 404 '%5B-g%5D' is not in the npm registry. [\#124](https://github.com/shelljs/shelljs/issues/124)
+- "ln" not found \(OS X\) [\#106](https://github.com/shelljs/shelljs/issues/106)
+- Using shelljs in a CLI app. [\#91](https://github.com/shelljs/shelljs/issues/91)
+
+**Merged pull requests:**
+
+- Breaking: Allow -- as args separators \(fixes \#188\) [\#207](https://github.com/shelljs/shelljs/pull/207) ([nzakas](https://github.com/nzakas))
+- Update .travis.yml [\#190](https://github.com/shelljs/shelljs/pull/190) ([arturadib](https://github.com/arturadib))
+- Use new child\_process.execSync instead of busywaiting [\#189](https://github.com/shelljs/shelljs/pull/189) ([madd512](https://github.com/madd512))
+- Update README.md: explains how to access "config" [\#145](https://github.com/shelljs/shelljs/pull/145) ([kerphi](https://github.com/kerphi))
+- Fix to set state.error before throw the exception [\#120](https://github.com/shelljs/shelljs/pull/120) ([abdul-martinez](https://github.com/abdul-martinez))
+- Add -l and -s support to grep. [\#116](https://github.com/shelljs/shelljs/pull/116) ([idearat](https://github.com/idearat))
+
+## [v0.3.0](https://github.com/shelljs/shelljs/tree/v0.3.0) (2014-05-08)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.2.6...v0.3.0)
+
+**Closed issues:**
+
+- grep\(\) should fully support globing [\#118](https://github.com/shelljs/shelljs/issues/118)
+- sed\(\) could support replacement function [\#115](https://github.com/shelljs/shelljs/issues/115)
+- How would you close an exec process that runs indefinitely? [\#113](https://github.com/shelljs/shelljs/issues/113)
+- listen for intermittent output of a long-running child process [\#111](https://github.com/shelljs/shelljs/issues/111)
+-  Cannot find module 'shelljs' after installing shelljs with npm [\#109](https://github.com/shelljs/shelljs/issues/109)
+- Massive CPU usage on exec\(\) windows [\#108](https://github.com/shelljs/shelljs/issues/108)
+- cp skipping dot files? [\#79](https://github.com/shelljs/shelljs/issues/79)
+- $variables in exec\(\) aren't handled correctly [\#11](https://github.com/shelljs/shelljs/issues/11)
+- debug flag that prints commands instead of executing [\#8](https://github.com/shelljs/shelljs/issues/8)
+
+**Merged pull requests:**
+
+- grep\(\) support for globing, fixes \#118 [\#119](https://github.com/shelljs/shelljs/pull/119) ([utensil](https://github.com/utensil))
+- make sed\(\) support replacement function, fixes \#115 [\#117](https://github.com/shelljs/shelljs/pull/117) ([utensil](https://github.com/utensil))
+- which\(\) should only find files, not directories [\#110](https://github.com/shelljs/shelljs/pull/110) ([panrafal](https://github.com/panrafal))
+- Added the New BSD license to the package.json. [\#105](https://github.com/shelljs/shelljs/pull/105) ([keskival](https://github.com/keskival))
+- Added win32 support to ln [\#104](https://github.com/shelljs/shelljs/pull/104) ([jamon](https://github.com/jamon))
+- Fix ln using bad paths when given abspaths. [\#89](https://github.com/shelljs/shelljs/pull/89) ([Schoonology](https://github.com/Schoonology))
+- Add ln support, including both -s and -f options. [\#88](https://github.com/shelljs/shelljs/pull/88) ([Schoonology](https://github.com/Schoonology))
+- add support for symlinking \(junctions\) on win32 [\#87](https://github.com/shelljs/shelljs/pull/87) ([jamon](https://github.com/jamon))
+
+## [v0.2.6](https://github.com/shelljs/shelljs/tree/v0.2.6) (2013-09-22)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.2.5...v0.2.6)
+
+**Closed issues:**
+
+- Versions 0.2.4 and 0.2.3 keep throwing strange errors [\#82](https://github.com/shelljs/shelljs/issues/82)
+- Add global pollution tests [\#33](https://github.com/shelljs/shelljs/issues/33)
+
+## [v0.2.5](https://github.com/shelljs/shelljs/tree/v0.2.5) (2013-09-11)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.2.4...v0.2.5)
+
+**Closed issues:**
+
+- shelljs.exec stalls on Red Hat when script is invoked with 'sudo -u username' [\#72](https://github.com/shelljs/shelljs/issues/72)
+
+## [v0.2.4](https://github.com/shelljs/shelljs/tree/v0.2.4) (2013-09-11)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.2.3...v0.2.4)
+
+## [v0.2.3](https://github.com/shelljs/shelljs/tree/v0.2.3) (2013-09-09)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.2.2...v0.2.3)
+
+**Merged pull requests:**
+
+- Make shell.exec\(\) treat process error return codes as shelljs errors [\#80](https://github.com/shelljs/shelljs/pull/80) ([nilsbunger](https://github.com/nilsbunger))
+
+## [v0.2.2](https://github.com/shelljs/shelljs/tree/v0.2.2) (2013-09-02)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.1.4...v0.2.2)
+
+**Closed issues:**
+
+- which and node\_modules [\#63](https://github.com/shelljs/shelljs/issues/63)
+- cannot install with nodejs 0.10.2 [\#57](https://github.com/shelljs/shelljs/issues/57)
+
+**Merged pull requests:**
+
+- Addition of a toEnd\(\) function modeled after the Unix \>\> pipe. [\#78](https://github.com/shelljs/shelljs/pull/78) ([a10y](https://github.com/a10y))
+- Added appendTo\(\) function to imitate '\>\>' redirect-and-append pipe. [\#75](https://github.com/shelljs/shelljs/pull/75) ([a10y](https://github.com/a10y))
+- Fix a small typo in README.md [\#71](https://github.com/shelljs/shelljs/pull/71) ([asmblah](https://github.com/asmblah))
+- adding an `.npmignore` file [\#70](https://github.com/shelljs/shelljs/pull/70) ([stephenmathieson](https://github.com/stephenmathieson))
+- tempdir: use `os.tmpDir` when possible [\#67](https://github.com/shelljs/shelljs/pull/67) ([stephenmathieson](https://github.com/stephenmathieson))
+
+## [v0.1.4](https://github.com/shelljs/shelljs/tree/v0.1.4) (2013-05-10)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.1.3...v0.1.4)
+
+**Merged pull requests:**
+
+- removing extra fs calls [\#62](https://github.com/shelljs/shelljs/pull/62) ([stephenmathieson](https://github.com/stephenmathieson))
+- moving \_jshint\_ to a development dependency [\#61](https://github.com/shelljs/shelljs/pull/61) ([stephenmathieson](https://github.com/stephenmathieson))
+- Make the maximum buffersize 20 MB. [\#59](https://github.com/shelljs/shelljs/pull/59) ([waddlesplash](https://github.com/waddlesplash))
+
+## [v0.1.3](https://github.com/shelljs/shelljs/tree/v0.1.3) (2013-04-21)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.1.2...v0.1.3)
+
+**Merged pull requests:**
+
+- test\('-L', badlink\) should return true [\#56](https://github.com/shelljs/shelljs/pull/56) ([lge88](https://github.com/lge88))
+- exec options now allows `silent:true` with callback. [\#54](https://github.com/shelljs/shelljs/pull/54) ([iapain](https://github.com/iapain))
+- Add Zepto to README [\#53](https://github.com/shelljs/shelljs/pull/53) ([madrobby](https://github.com/madrobby))
+
+## [v0.1.2](https://github.com/shelljs/shelljs/tree/v0.1.2) (2013-01-08)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.1.1...v0.1.2)
+
+**Closed issues:**
+
+- pushd/popd [\#24](https://github.com/shelljs/shelljs/issues/24)
+
+**Merged pull requests:**
+
+- Implemented chmod command.  Github issue 35 [\#48](https://github.com/shelljs/shelljs/pull/48) ([brandonramirez](https://github.com/brandonramirez))
+
+## [v0.1.1](https://github.com/shelljs/shelljs/tree/v0.1.1) (2013-01-01)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.1.0...v0.1.1)
+
+**Merged pull requests:**
+
+- Work in progress: pushd/popd/dirs [\#47](https://github.com/shelljs/shelljs/pull/47) ([mstade](https://github.com/mstade))
+
+## [v0.1.0](https://github.com/shelljs/shelljs/tree/v0.1.0) (2012-12-26)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.9...v0.1.0)
+
+**Closed issues:**
+
+- test\(\) for binary file? [\#45](https://github.com/shelljs/shelljs/issues/45)
+- Inconsistent behaviour of cp command with directories. [\#44](https://github.com/shelljs/shelljs/issues/44)
+- Executing SSH with ShellJs [\#43](https://github.com/shelljs/shelljs/issues/43)
+
+**Merged pull requests:**
+
+- Fix for \#44 [\#46](https://github.com/shelljs/shelljs/pull/46) ([mstade](https://github.com/mstade))
+- Fix single/double quotes in exec [\#42](https://github.com/shelljs/shelljs/pull/42) ([danielepolencic](https://github.com/danielepolencic))
+
+## [v0.0.9](https://github.com/shelljs/shelljs/tree/v0.0.9) (2012-12-01)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.8...v0.0.9)
+
+**Closed issues:**
+
+- silent output [\#40](https://github.com/shelljs/shelljs/issues/40)
+- asynchronous exec [\#34](https://github.com/shelljs/shelljs/issues/34)
+
+**Merged pull requests:**
+
+- Passed process arguments to executable script [\#36](https://github.com/shelljs/shelljs/pull/36) ([Zanisimo](https://github.com/Zanisimo))
+
+## [v0.0.8](https://github.com/shelljs/shelljs/tree/v0.0.8) (2012-10-11)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.7...v0.0.8)
+
+**Closed issues:**
+
+- exec with callback should automatically be async [\#31](https://github.com/shelljs/shelljs/issues/31)
+- Exporting variables. [\#30](https://github.com/shelljs/shelljs/issues/30)
+- Detecting shelljs/node [\#27](https://github.com/shelljs/shelljs/issues/27)
+- Unexpected cp behaviour with directories [\#15](https://github.com/shelljs/shelljs/issues/15)
+
+**Merged pull requests:**
+
+- fix: global leak 'stats' [\#29](https://github.com/shelljs/shelljs/pull/29) ([ando-takahiro](https://github.com/ando-takahiro))
+- -a includes . and ..; -A does not [\#28](https://github.com/shelljs/shelljs/pull/28) ([aeosynth](https://github.com/aeosynth))
+
+## [v0.0.7](https://github.com/shelljs/shelljs/tree/v0.0.7) (2012-09-23)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.6...v0.0.7)
+
+**Closed issues:**
+
+- gh-pages: clicking 'fork me' just reloads the page [\#26](https://github.com/shelljs/shelljs/issues/26)
+- Not declared local var implies possible memory leak [\#21](https://github.com/shelljs/shelljs/issues/21)
+- Cannot echo a string that starts with - [\#20](https://github.com/shelljs/shelljs/issues/20)
+
+**Merged pull requests:**
+
+- add primaries to \_test [\#23](https://github.com/shelljs/shelljs/pull/23) ([aeosynth](https://github.com/aeosynth))
+
+## [v0.0.6](https://github.com/shelljs/shelljs/tree/v0.0.6) (2012-08-07)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.6pre2...v0.0.6)
+
+**Merged pull requests:**
+
+- Fixed a global variable leak [\#16](https://github.com/shelljs/shelljs/pull/16) ([dallonf](https://github.com/dallonf))
+
+## [v0.0.6pre2](https://github.com/shelljs/shelljs/tree/v0.0.6pre2) (2012-05-25)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.6pre1...v0.0.6pre2)
+
+## [v0.0.6pre1](https://github.com/shelljs/shelljs/tree/v0.0.6pre1) (2012-05-25)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.5...v0.0.6pre1)
+
+## [v0.0.5](https://github.com/shelljs/shelljs/tree/v0.0.5) (2012-05-24)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.5pre4...v0.0.5)
+
+**Closed issues:**
+
+- global.key assigned value 'async' as a result of shell.exec\(...\) [\#12](https://github.com/shelljs/shelljs/issues/12)
+
+**Merged pull requests:**
+
+- Add support for grep option -v. [\#13](https://github.com/shelljs/shelljs/pull/13) ([kkujala](https://github.com/kkujala))
+
+## [v0.0.5pre4](https://github.com/shelljs/shelljs/tree/v0.0.5pre4) (2012-03-27)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.5pre3...v0.0.5pre4)
+
+## [v0.0.5pre3](https://github.com/shelljs/shelljs/tree/v0.0.5pre3) (2012-03-27)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.5pre2...v0.0.5pre3)
+
+## [v0.0.5pre2](https://github.com/shelljs/shelljs/tree/v0.0.5pre2) (2012-03-26)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.5pre1...v0.0.5pre2)
+
+## [v0.0.5pre1](https://github.com/shelljs/shelljs/tree/v0.0.5pre1) (2012-03-26)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.4...v0.0.5pre1)
+
+**Closed issues:**
+
+- rm\(\) does not respect read/write modes [\#6](https://github.com/shelljs/shelljs/issues/6)
+
+## [v0.0.4](https://github.com/shelljs/shelljs/tree/v0.0.4) (2012-03-22)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.3...v0.0.4)
+
+**Closed issues:**
+
+- "For convenient iteration via `for in`, ..."? [\#4](https://github.com/shelljs/shelljs/issues/4)
+
+## [v0.0.3](https://github.com/shelljs/shelljs/tree/v0.0.3) (2012-03-21)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.2...v0.0.3)
+
+## [v0.0.2](https://github.com/shelljs/shelljs/tree/v0.0.2) (2012-03-15)
+[Full Changelog](https://github.com/shelljs/shelljs/compare/v0.0.2pre1...v0.0.2)
+
+## [v0.0.2pre1](https://github.com/shelljs/shelljs/tree/v0.0.2pre1) (2012-03-03)
+
+
+\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\ No newline at end of file
diff --git a/node_modules/cordova-common/node_modules/shelljs/LICENSE b/node_modules/cordova-common/node_modules/shelljs/LICENSE
new file mode 100644
index 0000000..0f0f119
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2012, Artur Adib <ar...@gmail.com>
+All rights reserved.
+
+You may use this project under the terms of the New BSD license as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Artur Adib nor the
+      names of the contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/node_modules/cordova-common/node_modules/shelljs/README.md b/node_modules/cordova-common/node_modules/shelljs/README.md
new file mode 100644
index 0000000..cf916b9
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/README.md
@@ -0,0 +1,835 @@
+# ShellJS - Unix shell commands for Node.js
+
+[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square)](https://gitter.im/shelljs/shelljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Travis](https://img.shields.io/travis/shelljs/shelljs/master.svg?style=flat-square&label=unix)](https://travis-ci.org/shelljs/shelljs)
+[![AppVeyor](https://img.shields.io/appveyor/ci/shelljs/shelljs/master.svg?style=flat-square&label=windows)](https://ci.appveyor.com/project/shelljs/shelljs/branch/master)
+[![Codecov](https://img.shields.io/codecov/c/github/shelljs/shelljs/master.svg?style=flat-square&label=coverage)](https://codecov.io/gh/shelljs/shelljs)
+[![npm version](https://img.shields.io/npm/v/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs)
+[![npm downloads](https://img.shields.io/npm/dm/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs)
+
+ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell
+commands on top of the Node.js API. You can use it to eliminate your shell
+script's dependency on Unix while still keeping its familiar and powerful
+commands. You can also install it globally so you can run it from outside Node
+projects - say goodbye to those gnarly Bash scripts!
+
+ShellJS is proudly tested on every node release since `v4`!
+
+The project is [unit-tested](http://travis-ci.org/shelljs/shelljs) and battle-tested in projects like:
+
++ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger
++ [JSHint](http://jshint.com) & [ESLint](http://eslint.org/) - popular JavaScript linters
++ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers
++ [Yeoman](http://yeoman.io/) - Web application stack and development tool
++ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation
++ And [many more](https://npmjs.org/browse/depended/shelljs).
+
+If you have feedback, suggestions, or need help, feel free to post in our [issue
+tracker](https://github.com/shelljs/shelljs/issues).
+
+Think ShellJS is cool? Check out some related projects in our [Wiki
+page](https://github.com/shelljs/shelljs/wiki)!
+
+Upgrading from an older version? Check out our [breaking
+changes](https://github.com/shelljs/shelljs/wiki/Breaking-Changes) page to see
+what changes to watch out for while upgrading.
+
+## Command line use
+
+If you just want cross platform UNIX commands, checkout our new project
+[shelljs/shx](https://github.com/shelljs/shx), a utility to expose `shelljs` to
+the command line.
+
+For example:
+
+```
+$ shx mkdir -p foo
+$ shx touch foo/bar.txt
+$ shx rm -rf foo
+```
+
+## Plugin API
+
+ShellJS now supports third-party plugins! You can learn more about using plugins
+and writing your own ShellJS commands in [the
+wiki](https://github.com/shelljs/shelljs/wiki/Using-ShellJS-Plugins).
+
+## A quick note about the docs
+
+For documentation on all the latest features, check out our
+[README](https://github.com/shelljs/shelljs). To read docs that are consistent
+with the latest release, check out [the npm
+page](https://www.npmjs.com/package/shelljs) or
+[shelljs.org](http://documentup.com/shelljs/shelljs).
+
+## Installing
+
+Via npm:
+
+```bash
+$ npm install [-g] shelljs
+```
+
+## Examples
+
+```javascript
+var shell = require('shelljs');
+
+if (!shell.which('git')) {
+  shell.echo('Sorry, this script requires git');
+  shell.exit(1);
+}
+
+// Copy files to release dir
+shell.rm('-rf', 'out/Release');
+shell.cp('-R', 'stuff/', 'out/Release');
+
+// Replace macros in each .js file
+shell.cd('lib');
+shell.ls('*.js').forEach(function (file) {
+  shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
+  shell.sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file);
+  shell.sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, shell.cat('macro.js'), file);
+});
+shell.cd('..');
+
+// Run external tool synchronously
+if (shell.exec('git commit -am "Auto-commit"').code !== 0) {
+  shell.echo('Error: Git commit failed');
+  shell.exit(1);
+}
+```
+
+## Exclude options
+
+If you need to pass a parameter that looks like an option, you can do so like:
+
+```js
+shell.grep('--', '-v', 'path/to/file'); // Search for "-v", no grep options
+
+shell.cp('-R', '-dir', 'outdir'); // If already using an option, you're done
+```
+
+## Global vs. Local
+
+We no longer recommend using a global-import for ShellJS (i.e.
+`require('shelljs/global')`). While still supported for convenience, this
+pollutes the global namespace, and should therefore only be used with caution.
+
+Instead, we recommend a local import (standard for npm packages):
+
+```javascript
+var shell = require('shelljs');
+shell.echo('hello world');
+```
+
+<!-- DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED -->
+
+
+## Command reference
+
+
+All commands run synchronously, unless otherwise stated.
+All commands accept standard bash globbing characters (`*`, `?`, etc.),
+compatible with the [node `glob` module](https://github.com/isaacs/node-glob).
+
+For less-commonly used commands and features, please check out our [wiki
+page](https://github.com/shelljs/shelljs/wiki).
+
+
+### cat([options,] file [, file ...])
+### cat([options,] file_array)
+
+Available options:
+
++ `-n`: number all output lines
+
+Examples:
+
+```javascript
+var str = cat('file*.txt');
+var str = cat('file1', 'file2');
+var str = cat(['file1', 'file2']); // same as above
+```
+
+Returns a string containing the given file, or a concatenated string
+containing the files if more than one file is given (a new line character is
+introduced between each file).
+
+
+### cd([dir])
+
+Changes to directory `dir` for the duration of the script. Changes to home
+directory if no argument is supplied.
+
+
+### chmod([options,] octal_mode || octal_string, file)
+### chmod([options,] symbolic_mode, file)
+
+Available options:
+
++ `-v`: output a diagnostic for every file processed
++ `-c`: like verbose, but report only when a change is made
++ `-R`: change files and directories recursively
+
+Examples:
+
+```javascript
+chmod(755, '/Users/brandon');
+chmod('755', '/Users/brandon'); // same as above
+chmod('u+x', '/Users/brandon');
+chmod('-R', 'a-w', '/Users/brandon');
+```
+
+Alters the permissions of a file or directory by either specifying the
+absolute permissions in octal form or expressing the changes in symbols.
+This command tries to mimic the POSIX behavior as much as possible.
+Notable exceptions:
+
++ In symbolic modes, `a-r` and `-r` are identical.  No consideration is
+  given to the `umask`.
++ There is no "quiet" option, since default behavior is to run silent.
+
+
+### cp([options,] source [, source ...], dest)
+### cp([options,] source_array, dest)
+
+Available options:
+
++ `-f`: force (default behavior)
++ `-n`: no-clobber
++ `-u`: only copy if `source` is newer than `dest`
++ `-r`, `-R`: recursive
++ `-L`: follow symlinks
++ `-P`: don't follow symlinks
+
+Examples:
+
+```javascript
+cp('file1', 'dir1');
+cp('-R', 'path/to/dir/', '~/newCopy/');
+cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');
+cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
+```
+
+Copies files.
+
+
+### pushd([options,] [dir | '-N' | '+N'])
+
+Available options:
+
++ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.
++ `-q`: Supresses output to the console.
+
+Arguments:
+
++ `dir`: Sets the current working directory to the top of the stack, then executes the equivalent of `cd dir`.
++ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
++ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
+
+Examples:
+
+```javascript
+// process.cwd() === '/usr'
+pushd('/etc'); // Returns /etc /usr
+pushd('+1');   // Returns /usr /etc
+```
+
+Save the current directory on the top of the directory stack and then `cd` to `dir`. With no arguments, `pushd` exchanges the top two directories. Returns an array of paths in the stack.
+
+
+### popd([options,] ['-N' | '+N'])
+
+Available options:
+
++ `-n`: Suppress the normal directory change when removing directories from the stack, so that only the stack is manipulated.
++ `-q`: Supresses output to the console.
+
+Arguments:
+
++ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.
++ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.
+
+Examples:
+
+```javascript
+echo(process.cwd()); // '/usr'
+pushd('/etc');       // '/etc /usr'
+echo(process.cwd()); // '/etc'
+popd();              // '/usr'
+echo(process.cwd()); // '/usr'
+```
+
+When no arguments are given, `popd` removes the top directory from the stack and performs a `cd` to the new top directory. The elements are numbered from 0, starting at the first directory listed with dirs (i.e., `popd` is equivalent to `popd +0`). Returns an array of paths in the stack.
+
+
+### dirs([options | '+N' | '-N'])
+
+Available options:
+
++ `-c`: Clears the directory stack by deleting all of the elements.
++ `-q`: Supresses output to the console.
+
+Arguments:
+
++ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.
++ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.
+
+Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if `+N` or `-N` was specified.
+
+See also: `pushd`, `popd`
+
+
+### echo([options,] string [, string ...])
+
+Available options:
+
++ `-e`: interpret backslash escapes (default)
++ `-n`: remove trailing newline from output
+
+Examples:
+
+```javascript
+echo('hello world');
+var str = echo('hello world');
+echo('-n', 'no newline at end');
+```
+
+Prints `string` to stdout, and returns string with additional utility methods
+like `.to()`.
+
+
+### exec(command [, options] [, callback])
+
+Available options:
+
++ `async`: Asynchronous execution. If a callback is provided, it will be set to
+  `true`, regardless of the passed value (default: `false`).
++ `silent`: Do not echo program output to console (default: `false`).
++ `encoding`: Character encoding to use. Affects the values returned to stdout and stderr, and
+  what is written to stdout and stderr when not in silent mode (default: `'utf8'`).
++ and any option available to Node.js's
+  [`child_process.exec()`](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback)
+
+Examples:
+
+```javascript
+var version = exec('node --version', {silent:true}).stdout;
+
+var child = exec('some_long_running_process', {async:true});
+child.stdout.on('data', function(data) {
+  /* ... do something with data ... */
+});
+
+exec('some_long_running_process', function(code, stdout, stderr) {
+  console.log('Exit code:', code);
+  console.log('Program output:', stdout);
+  console.log('Program stderr:', stderr);
+});
+```
+
+Executes the given `command` _synchronously_, unless otherwise specified.  When in synchronous
+mode, this returns a `ShellString` (compatible with ShellJS v0.6.x, which returns an object
+of the form `{ code:..., stdout:... , stderr:... }`). Otherwise, this returns the child process
+object, and the `callback` receives the arguments `(code, stdout, stderr)`.
+
+Not seeing the behavior you want? `exec()` runs everything through `sh`
+by default (or `cmd.exe` on Windows), which differs from `bash`. If you
+need bash-specific behavior, try out the `{shell: 'path/to/bash'}` option.
+
+
+### find(path [, path ...])
+### find(path_array)
+
+Examples:
+
+```javascript
+find('src', 'lib');
+find(['src', 'lib']); // same as above
+find('.').filter(function(file) { return file.match(/\.js$/); });
+```
+
+Returns array of all files (however deep) in the given paths.
+
+The main difference from `ls('-R', path)` is that the resulting file names
+include the base directories (e.g., `lib/resources/file1` instead of just `file1`).
+
+
+### grep([options,] regex_filter, file [, file ...])
+### grep([options,] regex_filter, file_array)
+
+Available options:
+
++ `-v`: Invert `regex_filter` (only print non-matching lines).
++ `-l`: Print only filenames of matching files
+
+Examples:
+
+```javascript
+grep('-v', 'GLOBAL_VARIABLE', '*.js');
+grep('GLOBAL_VARIABLE', '*.js');
+```
+
+Reads input string from given files and returns a string containing all lines of the
+file that match the given `regex_filter`.
+
+
+### head([{'-n': \<num\>},] file [, file ...])
+### head([{'-n': \<num\>},] file_array)
+
+Available options:
+
++ `-n <num>`: Show the first `<num>` lines of the files
+
+Examples:
+
+```javascript
+var str = head({'-n': 1}, 'file*.txt');
+var str = head('file1', 'file2');
+var str = head(['file1', 'file2']); // same as above
+```
+
+Read the start of a file.
+
+
+### ln([options,] source, dest)
+
+Available options:
+
++ `-s`: symlink
++ `-f`: force
+
+Examples:
+
+```javascript
+ln('file', 'newlink');
+ln('-sf', 'file', 'existing');
+```
+
+Links `source` to `dest`. Use `-f` to force the link, should `dest` already exist.
+
+
+### ls([options,] [path, ...])
+### ls([options,] path_array)
+
+Available options:
+
++ `-R`: recursive
++ `-A`: all files (include files beginning with `.`, except for `.` and `..`)
++ `-L`: follow symlinks
++ `-d`: list directories themselves, not their contents
++ `-l`: list objects representing each file, each with fields containing `ls
+        -l` output fields. See
+        [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats)
+        for more info
+
+Examples:
+
+```javascript
+ls('projs/*.js');
+ls('-R', '/users/me', '/tmp');
+ls('-R', ['/users/me', '/tmp']); // same as above
+ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...}
+```
+
+Returns array of files in the given `path`, or files in
+the current directory if no `path` is  provided.
+
+
+### mkdir([options,] dir [, dir ...])
+### mkdir([options,] dir_array)
+
+Available options:
+
++ `-p`: full path (and create intermediate directories, if necessary)
+
+Examples:
+
+```javascript
+mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
+mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
+```
+
+Creates directories.
+
+
+### mv([options ,] source [, source ...], dest')
+### mv([options ,] source_array, dest')
+
+Available options:
+
++ `-f`: force (default behavior)
++ `-n`: no-clobber
+
+Examples:
+
+```javascript
+mv('-n', 'file', 'dir/');
+mv('file1', 'file2', 'dir/');
+mv(['file1', 'file2'], 'dir/'); // same as above
+```
+
+Moves `source` file(s) to `dest`.
+
+
+### pwd()
+
+Returns the current directory.
+
+
+### rm([options,] file [, file ...])
+### rm([options,] file_array)
+
+Available options:
+
++ `-f`: force
++ `-r, -R`: recursive
+
+Examples:
+
+```javascript
+rm('-rf', '/tmp/*');
+rm('some_file.txt', 'another_file.txt');
+rm(['some_file.txt', 'another_file.txt']); // same as above
+```
+
+Removes files.
+
+
+### sed([options,] search_regex, replacement, file [, file ...])
+### sed([options,] search_regex, replacement, file_array)
+
+Available options:
+
++ `-i`: Replace contents of `file` in-place. _Note that no backups will be created!_
+
+Examples:
+
+```javascript
+sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
+sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
+```
+
+Reads an input string from `file`s, and performs a JavaScript `replace()` on the input
+using the given `search_regex` and `replacement` string or function. Returns the new string after replacement.
+
+Note:
+
+Like unix `sed`, ShellJS `sed` supports capture groups. Capture groups are specified
+using the `$n` syntax:
+
+```javascript
+sed(/(\w+)\s(\w+)/, '$2, $1', 'file.txt');
+```
+
+
+### set(options)
+
+Available options:
+
++ `+/-e`: exit upon error (`config.fatal`)
++ `+/-v`: verbose: show all commands (`config.verbose`)
++ `+/-f`: disable filename expansion (globbing)
+
+Examples:
+
+```javascript
+set('-e'); // exit upon first error
+set('+e'); // this undoes a "set('-e')"
+```
+
+Sets global configuration variables.
+
+
+### sort([options,] file [, file ...])
+### sort([options,] file_array)
+
+Available options:
+
++ `-r`: Reverse the results
++ `-n`: Compare according to numerical value
+
+Examples:
+
+```javascript
+sort('foo.txt', 'bar.txt');
+sort('-r', 'foo.txt');
+```
+
+Return the contents of the `file`s, sorted line-by-line. Sorting multiple
+files mixes their content (just as unix `sort` does).
+
+
+### tail([{'-n': \<num\>},] file [, file ...])
+### tail([{'-n': \<num\>},] file_array)
+
+Available options:
+
++ `-n <num>`: Show the last `<num>` lines of `file`s
+
+Examples:
+
+```javascript
+var str = tail({'-n': 1}, 'file*.txt');
+var str = tail('file1', 'file2');
+var str = tail(['file1', 'file2']); // same as above
+```
+
+Read the end of a `file`.
+
+
+### tempdir()
+
+Examples:
+
+```javascript
+var tmp = tempdir(); // "/tmp" for most *nix platforms
+```
+
+Searches and returns string containing a writeable, platform-dependent temporary directory.
+Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
+
+
+### test(expression)
+
+Available expression primaries:
+
++ `'-b', 'path'`: true if path is a block device
++ `'-c', 'path'`: true if path is a character device
++ `'-d', 'path'`: true if path is a directory
++ `'-e', 'path'`: true if path exists
++ `'-f', 'path'`: true if path is a regular file
++ `'-L', 'path'`: true if path is a symbolic link
++ `'-p', 'path'`: true if path is a pipe (FIFO)
++ `'-S', 'path'`: true if path is a socket
+
+Examples:
+
+```javascript
+if (test('-d', path)) { /* do something with dir */ };
+if (!test('-f', path)) continue; // skip if it's a regular file
+```
+
+Evaluates `expression` using the available primaries and returns corresponding value.
+
+
+### ShellString.prototype.to(file)
+
+Examples:
+
+```javascript
+cat('input.txt').to('output.txt');
+```
+
+Analogous to the redirection operator `>` in Unix, but works with
+`ShellStrings` (such as those returned by `cat`, `grep`, etc.). _Like Unix
+redirections, `to()` will overwrite any existing file!_
+
+
+### ShellString.prototype.toEnd(file)
+
+Examples:
+
+```javascript
+cat('input.txt').toEnd('output.txt');
+```
+
+Analogous to the redirect-and-append operator `>>` in Unix, but works with
+`ShellStrings` (such as those returned by `cat`, `grep`, etc.).
+
+
+### touch([options,] file [, file ...])
+### touch([options,] file_array)
+
+Available options:
+
++ `-a`: Change only the access time
++ `-c`: Do not create any files
++ `-m`: Change only the modification time
++ `-d DATE`: Parse `DATE` and use it instead of current time
++ `-r FILE`: Use `FILE`'s times instead of current time
+
+Examples:
+
+```javascript
+touch('source.js');
+touch('-c', '/path/to/some/dir/source.js');
+touch({ '-r': FILE }, '/path/to/some/dir/source.js');
+```
+
+Update the access and modification times of each `FILE` to the current time.
+A `FILE` argument that does not exist is created empty, unless `-c` is supplied.
+This is a partial implementation of [`touch(1)`](http://linux.die.net/man/1/touch).
+
+
+### uniq([options,] [input, [output]])
+
+Available options:
+
++ `-i`: Ignore case while comparing
++ `-c`: Prefix lines by the number of occurrences
++ `-d`: Only print duplicate lines, one for each group of identical lines
+
+Examples:
+
+```javascript
+uniq('foo.txt');
+uniq('-i', 'foo.txt');
+uniq('-cd', 'foo.txt', 'bar.txt');
+```
+
+Filter adjacent matching lines from `input`.
+
+
+### which(command)
+
+Examples:
+
+```javascript
+var nodeExec = which('node');
+```
+
+Searches for `command` in the system's `PATH`. On Windows, this uses the
+`PATHEXT` variable to append the extension if it's not already executable.
+Returns string containing the absolute path to `command`.
+
+
+### exit(code)
+
+Exits the current process with the given exit `code`.
+
+### error()
+
+Tests if error occurred in the last command. Returns a truthy value if an
+error returned, or a falsy value otherwise.
+
+**Note**: do not rely on the
+return value to be an error message. If you need the last error message, use
+the `.stderr` attribute from the last command's return value instead.
+
+
+### ShellString(str)
+
+Examples:
+
+```javascript
+var foo = ShellString('hello world');
+```
+
+Turns a regular string into a string-like object similar to what each
+command returns. This has special methods, like `.to()` and `.toEnd()`.
+
+
+### env['VAR_NAME']
+
+Object containing environment variables (both getter and setter). Shortcut
+to `process.env`.
+
+### Pipes
+
+Examples:
+
+```javascript
+grep('foo', 'file1.txt', 'file2.txt').sed(/o/g, 'a').to('output.txt');
+echo('files with o\'s in the name:\n' + ls().grep('o'));
+cat('test.js').exec('node'); // pipe to exec() call
+```
+
+Commands can send their output to another command in a pipe-like fashion.
+`sed`, `grep`, `cat`, `exec`, `to`, and `toEnd` can appear on the right-hand
+side of a pipe. Pipes can be chained.
+
+## Configuration
+
+
+### config.silent
+
+Example:
+
+```javascript
+var sh = require('shelljs');
+var silentState = sh.config.silent; // save old silent state
+sh.config.silent = true;
+/* ... */
+sh.config.silent = silentState; // restore old silent state
+```
+
+Suppresses all command output if `true`, except for `echo()` calls.
+Default is `false`.
+
+### config.fatal
+
+Example:
+
+```javascript
+require('shelljs/global');
+config.fatal = true; // or set('-e');
+cp('this_file_does_not_exist', '/dev/null'); // throws Error here
+/* more commands... */
+```
+
+If `true`, the script will throw a Javascript error when any shell.js
+command encounters an error. Default is `false`. This is analogous to
+Bash's `set -e`.
+
+### config.verbose
+
+Example:
+
+```javascript
+config.verbose = true; // or set('-v');
+cd('dir/');
+rm('-rf', 'foo.txt', 'bar.txt');
+exec('echo hello');
+```
+
+Will print each command as follows:
+
+```
+cd dir/
+rm -rf foo.txt bar.txt
+exec echo hello
+```
+
+### config.globOptions
+
+Example:
+
+```javascript
+config.globOptions = {nodir: true};
+```
+
+Use this value for calls to `glob.sync()` instead of the default options.
+
+### config.reset()
+
+Example:
+
+```javascript
+var shell = require('shelljs');
+// Make changes to shell.config, and do stuff...
+/* ... */
+shell.config.reset(); // reset to original state
+// Do more stuff, but with original settings
+/* ... */
+```
+
+Reset `shell.config` to the defaults:
+
+```javascript
+{
+  fatal: false,
+  globOptions: {},
+  maxdepth: 255,
+  noglob: false,
+  silent: false,
+  verbose: false,
+}
+```
+
+## Team
+
+| [![Nate Fischer](https://avatars.githubusercontent.com/u/5801521?s=130)](https://github.com/nfischer) | [![Brandon Freitag](https://avatars1.githubusercontent.com/u/5988055?v=3&s=130)](http://github.com/freitagbr) |
+|:---:|:---:|
+| [Nate Fischer](https://github.com/nfischer) | [Brandon Freitag](http://github.com/freitagbr) |
diff --git a/node_modules/cordova-common/node_modules/shelljs/bin/shjs b/node_modules/cordova-common/node_modules/shelljs/bin/shjs
new file mode 100755
index 0000000..75ca58b
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/bin/shjs
@@ -0,0 +1,39 @@
+#!/usr/bin/env node
+require('../global');
+
+if (process.argv.length < 3) {
+  console.log('ShellJS: missing argument (script name)');
+  console.log();
+  process.exit(1);
+}
+
+var args,
+  scriptName = process.argv[2];
+env['NODE_PATH'] = __dirname + '/../..';
+
+if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) {
+  if (test('-f', scriptName + '.js'))
+    scriptName += '.js';
+  if (test('-f', scriptName + '.coffee'))
+    scriptName += '.coffee';
+}
+
+if (!test('-f', scriptName)) {
+  console.log('ShellJS: script not found ('+scriptName+')');
+  console.log();
+  process.exit(1);
+}
+
+args = process.argv.slice(3);
+
+for (var i = 0, l = args.length; i < l; i++) {
+  if (args[i][0] !== "-"){
+    args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words
+  }
+}
+
+var path = require('path');
+var extensions = require('interpret').extensions;
+var rechoir = require('rechoir');
+rechoir.prepare(extensions, scriptName);
+require(require.resolve(path.resolve(process.cwd(), scriptName)));
diff --git a/node_modules/cordova-common/node_modules/shelljs/commands.js b/node_modules/cordova-common/node_modules/shelljs/commands.js
new file mode 100644
index 0000000..f31adb2
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/commands.js
@@ -0,0 +1,29 @@
+module.exports = [
+  'cat',
+  'cd',
+  'chmod',
+  'cp',
+  'dirs',
+  'echo',
+  'exec',
+  'find',
+  'grep',
+  'head',
+  'ln',
+  'ls',
+  'mkdir',
+  'mv',
+  'pwd',
+  'rm',
+  'sed',
+  'set',
+  'sort',
+  'tail',
+  'tempdir',
+  'test',
+  'to',
+  'toEnd',
+  'touch',
+  'uniq',
+  'which',
+];
diff --git a/node_modules/cordova-common/node_modules/shelljs/global.js b/node_modules/cordova-common/node_modules/shelljs/global.js
new file mode 100644
index 0000000..b232e66
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/global.js
@@ -0,0 +1,12 @@
+/* eslint no-extend-native: 0 */
+var shell = require('./shell.js');
+var common = require('./src/common');
+Object.keys(shell).forEach(function (cmd) {
+  global[cmd] = shell[cmd];
+});
+
+var _to = require('./src/to');
+String.prototype.to = common.wrap('to', _to);
+
+var _toEnd = require('./src/toEnd');
+String.prototype.toEnd = common.wrap('toEnd', _toEnd);
diff --git a/node_modules/cordova-common/node_modules/shelljs/make.js b/node_modules/cordova-common/node_modules/shelljs/make.js
new file mode 100644
index 0000000..a8438c8
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/make.js
@@ -0,0 +1,57 @@
+require('./global');
+
+global.config.fatal = true;
+global.target = {};
+
+var args = process.argv.slice(2),
+  targetArgs,
+  dashesLoc = args.indexOf('--');
+
+// split args, everything after -- if only for targets
+if (dashesLoc > -1) {
+  targetArgs = args.slice(dashesLoc + 1, args.length);
+  args = args.slice(0, dashesLoc);
+}
+
+// This ensures we only execute the script targets after the entire script has
+// been evaluated
+setTimeout(function() {
+  var t;
+
+  if (args.length === 1 && args[0] === '--help') {
+    console.log('Available targets:');
+    for (t in global.target)
+      console.log('  ' + t);
+    return;
+  }
+
+  // Wrap targets to prevent duplicate execution
+  for (t in global.target) {
+    (function(t, oldTarget){
+
+      // Wrap it
+      global.target[t] = function() {
+        if (!oldTarget.done){
+          oldTarget.done = true;
+          oldTarget.result = oldTarget.apply(oldTarget, arguments);
+        }
+        return oldTarget.result;
+      };
+
+    })(t, global.target[t]);
+  }
+
+  // Execute desired targets
+  if (args.length > 0) {
+    args.forEach(function(arg) {
+      if (arg in global.target)
+        global.target[arg](targetArgs);
+      else {
+        console.log('no such target: ' + arg);
+      }
+    });
+  } else if ('all' in global.target) {
+    global.target.all(targetArgs);
+  }
+
+}, 0);
diff --git a/node_modules/cordova-common/node_modules/shelljs/package.json b/node_modules/cordova-common/node_modules/shelljs/package.json
new file mode 100644
index 0000000..f5b703f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/package.json
@@ -0,0 +1,114 @@
+{
+  "_from": "shelljs@^0.8.1",
+  "_id": "shelljs@0.8.2",
+  "_inBundle": false,
+  "_integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==",
+  "_location": "/cordova-common/shelljs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "shelljs@^0.8.1",
+    "name": "shelljs",
+    "escapedName": "shelljs",
+    "rawSpec": "^0.8.1",
+    "saveSpec": null,
+    "fetchSpec": "^0.8.1"
+  },
+  "_requiredBy": [
+    "/cordova-common"
+  ],
+  "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz",
+  "_shasum": "345b7df7763f4c2340d584abb532c5f752ca9e35",
+  "_spec": "shelljs@^0.8.1",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/cordova-common",
+  "ava": {
+    "serial": true,
+    "powerAssert": false
+  },
+  "bin": {
+    "shjs": "./bin/shjs"
+  },
+  "bugs": {
+    "url": "https://github.com/shelljs/shelljs/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Nate Fischer",
+      "email": "ntfschr@gmail.com",
+      "url": "https://github.com/nfischer"
+    },
+    {
+      "name": "Brandon Freitag",
+      "email": "freitagbr@gmail.com",
+      "url": "https://github.com/freitagbr"
+    }
+  ],
+  "dependencies": {
+    "glob": "^7.0.0",
+    "interpret": "^1.0.0",
+    "rechoir": "^0.6.2"
+  },
+  "deprecated": false,
+  "description": "Portable Unix shell commands for Node.js",
+  "devDependencies": {
+    "ava": "^0.21.0",
+    "chalk": "^1.1.3",
+    "codecov": "^1.0.1",
+    "coffee-script": "^1.10.0",
+    "eslint": "^2.0.0",
+    "eslint-config-airbnb-base": "^3.0.0",
+    "eslint-plugin-import": "^1.11.1",
+    "nyc": "^11.3.0",
+    "shelljs-changelog": "^0.2.0",
+    "shelljs-release": "^0.2.0",
+    "shx": "^0.2.0",
+    "travis-check-changes": "^0.2.0"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "commands.js",
+    "global.js",
+    "make.js",
+    "plugin.js",
+    "shell.js",
+    "bin",
+    "src"
+  ],
+  "homepage": "http://github.com/shelljs/shelljs",
+  "keywords": [
+    "shelljs",
+    "bash",
+    "unix",
+    "shell",
+    "makefile",
+    "make",
+    "jake",
+    "synchronous"
+  ],
+  "license": "BSD-3-Clause",
+  "main": "./shell.js",
+  "name": "shelljs",
+  "optionalDependencies": {},
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/shelljs/shelljs.git"
+  },
+  "scripts": {
+    "after-travis": "travis-check-changes",
+    "changelog": "shelljs-changelog",
+    "codecov": "codecov",
+    "gendocs": "node scripts/generate-docs",
+    "lint": "eslint .",
+    "posttest": "npm run lint",
+    "release:major": "shelljs-release major",
+    "release:minor": "shelljs-release minor",
+    "release:patch": "shelljs-release patch",
+    "test": "nyc --reporter=text --reporter=lcov ava test/*.js",
+    "test-no-coverage": "ava test/*.js"
+  },
+  "version": "0.8.2"
+}
diff --git a/node_modules/cordova-common/node_modules/shelljs/plugin.js b/node_modules/cordova-common/node_modules/shelljs/plugin.js
new file mode 100644
index 0000000..f879ab3
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/plugin.js
@@ -0,0 +1,16 @@
+// Various utilties exposed to plugins
+
+require('./shell'); // Create the ShellJS instance (mandatory)
+
+var common = require('./src/common');
+
+var exportedAttributes = [
+  'error',        // For signaling errors from within commands
+  'parseOptions', // For custom option parsing
+  'readFromPipe', // For commands with the .canReceivePipe attribute
+  'register',     // For registering plugins
+];
+
+exportedAttributes.forEach(function (attr) {
+  exports[attr] = common[attr];
+});
diff --git a/node_modules/cordova-common/node_modules/shelljs/shell.js b/node_modules/cordova-common/node_modules/shelljs/shell.js
new file mode 100644
index 0000000..f9c6f36
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/shell.js
@@ -0,0 +1,156 @@
+//
+// ShellJS
+// Unix shell commands on top of Node's API
+//
+// Copyright (c) 2012 Artur Adib
+// http://github.com/shelljs/shelljs
+//
+
+var common = require('./src/common');
+
+//@
+//@ All commands run synchronously, unless otherwise stated.
+//@ All commands accept standard bash globbing characters (`*`, `?`, etc.),
+//@ compatible with the [node `glob` module](https://github.com/isaacs/node-glob).
+//@
+//@ For less-commonly used commands and features, please check out our [wiki
+//@ page](https://github.com/shelljs/shelljs/wiki).
+//@
+
+// Include the docs for all the default commands
+//@commands
+
+// Load all default commands
+require('./commands').forEach(function (command) {
+  require('./src/' + command);
+});
+
+//@
+//@ ### exit(code)
+//@
+//@ Exits the current process with the given exit `code`.
+exports.exit = process.exit;
+
+//@include ./src/error
+exports.error = require('./src/error');
+
+//@include ./src/common
+exports.ShellString = common.ShellString;
+
+//@
+//@ ### env['VAR_NAME']
+//@
+//@ Object containing environment variables (both getter and setter). Shortcut
+//@ to `process.env`.
+exports.env = process.env;
+
+//@
+//@ ### Pipes
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ grep('foo', 'file1.txt', 'file2.txt').sed(/o/g, 'a').to('output.txt');
+//@ echo('files with o\'s in the name:\n' + ls().grep('o'));
+//@ cat('test.js').exec('node'); // pipe to exec() call
+//@ ```
+//@
+//@ Commands can send their output to another command in a pipe-like fashion.
+//@ `sed`, `grep`, `cat`, `exec`, `to`, and `toEnd` can appear on the right-hand
+//@ side of a pipe. Pipes can be chained.
+
+//@
+//@ ## Configuration
+//@
+
+exports.config = common.config;
+
+//@
+//@ ### config.silent
+//@
+//@ Example:
+//@
+//@ ```javascript
+//@ var sh = require('shelljs');
+//@ var silentState = sh.config.silent; // save old silent state
+//@ sh.config.silent = true;
+//@ /* ... */
+//@ sh.config.silent = silentState; // restore old silent state
+//@ ```
+//@
+//@ Suppresses all command output if `true`, except for `echo()` calls.
+//@ Default is `false`.
+
+//@
+//@ ### config.fatal
+//@
+//@ Example:
+//@
+//@ ```javascript
+//@ require('shelljs/global');
+//@ config.fatal = true; // or set('-e');
+//@ cp('this_file_does_not_exist', '/dev/null'); // throws Error here
+//@ /* more commands... */
+//@ ```
+//@
+//@ If `true`, the script will throw a Javascript error when any shell.js
+//@ command encounters an error. Default is `false`. This is analogous to
+//@ Bash's `set -e`.
+
+//@
+//@ ### config.verbose
+//@
+//@ Example:
+//@
+//@ ```javascript
+//@ config.verbose = true; // or set('-v');
+//@ cd('dir/');
+//@ rm('-rf', 'foo.txt', 'bar.txt');
+//@ exec('echo hello');
+//@ ```
+//@
+//@ Will print each command as follows:
+//@
+//@ ```
+//@ cd dir/
+//@ rm -rf foo.txt bar.txt
+//@ exec echo hello
+//@ ```
+
+//@
+//@ ### config.globOptions
+//@
+//@ Example:
+//@
+//@ ```javascript
+//@ config.globOptions = {nodir: true};
+//@ ```
+//@
+//@ Use this value for calls to `glob.sync()` instead of the default options.
+
+//@
+//@ ### config.reset()
+//@
+//@ Example:
+//@
+//@ ```javascript
+//@ var shell = require('shelljs');
+//@ // Make changes to shell.config, and do stuff...
+//@ /* ... */
+//@ shell.config.reset(); // reset to original state
+//@ // Do more stuff, but with original settings
+//@ /* ... */
+//@ ```
+//@
+//@ Reset `shell.config` to the defaults:
+//@
+//@ ```javascript
+//@ {
+//@   fatal: false,
+//@   globOptions: {},
+//@   maxdepth: 255,
+//@   noglob: false,
+//@   silent: false,
+//@   verbose: false,
+//@ }
+//@ ```
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/cat.js b/node_modules/cordova-common/node_modules/shelljs/src/cat.js
new file mode 100644
index 0000000..c5c4434
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/cat.js
@@ -0,0 +1,76 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('cat', _cat, {
+  canReceivePipe: true,
+  cmdOptions: {
+    'n': 'number',
+  },
+});
+
+//@
+//@ ### cat([options,] file [, file ...])
+//@ ### cat([options,] file_array)
+//@
+//@ Available options:
+//@
+//@ + `-n`: number all output lines
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var str = cat('file*.txt');
+//@ var str = cat('file1', 'file2');
+//@ var str = cat(['file1', 'file2']); // same as above
+//@ ```
+//@
+//@ Returns a string containing the given file, or a concatenated string
+//@ containing the files if more than one file is given (a new line character is
+//@ introduced between each file).
+function _cat(options, files) {
+  var cat = common.readFromPipe();
+
+  if (!files && !cat) common.error('no paths given');
+
+  files = [].slice.call(arguments, 1);
+
+  files.forEach(function (file) {
+    if (!fs.existsSync(file)) {
+      common.error('no such file or directory: ' + file);
+    } else if (common.statFollowLinks(file).isDirectory()) {
+      common.error(file + ': Is a directory');
+    }
+
+    cat += fs.readFileSync(file, 'utf8');
+  });
+
+  if (options.number) {
+    cat = addNumbers(cat);
+  }
+
+  return cat;
+}
+module.exports = _cat;
+
+function addNumbers(cat) {
+  var lines = cat.split('\n');
+  var lastLine = lines.pop();
+
+  lines = lines.map(function (line, i) {
+    return numberedLine(i + 1, line);
+  });
+
+  if (lastLine.length) {
+    lastLine = numberedLine(lines.length + 1, lastLine);
+  }
+  lines.push(lastLine);
+
+  return lines.join('\n');
+}
+
+function numberedLine(n, line) {
+  // GNU cat use six pad start number + tab. See http://lingrok.org/xref/coreutils/src/cat.c#57
+  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
+  var number = ('     ' + n).slice(-6) + '\t';
+  return number + line;
+}
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/cd.js b/node_modules/cordova-common/node_modules/shelljs/src/cd.js
new file mode 100644
index 0000000..27bc210
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/cd.js
@@ -0,0 +1,39 @@
+var os = require('os');
+var common = require('./common');
+
+common.register('cd', _cd, {});
+
+//@
+//@ ### cd([dir])
+//@
+//@ Changes to directory `dir` for the duration of the script. Changes to home
+//@ directory if no argument is supplied.
+function _cd(options, dir) {
+  if (!dir) dir = os.homedir();
+
+  if (dir === '-') {
+    if (!process.env.OLDPWD) {
+      common.error('could not find previous directory');
+    } else {
+      dir = process.env.OLDPWD;
+    }
+  }
+
+  try {
+    var curDir = process.cwd();
+    process.chdir(dir);
+    process.env.OLDPWD = curDir;
+  } catch (e) {
+    // something went wrong, let's figure out the error
+    var err;
+    try {
+      common.statFollowLinks(dir); // if this succeeds, it must be some sort of file
+      err = 'not a directory: ' + dir;
+    } catch (e2) {
+      err = 'no such file or directory: ' + dir;
+    }
+    if (err) common.error(err);
+  }
+  return '';
+}
+module.exports = _cd;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/chmod.js b/node_modules/cordova-common/node_modules/shelljs/src/chmod.js
new file mode 100644
index 0000000..bcc3a03
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/chmod.js
@@ -0,0 +1,216 @@
+var common = require('./common');
+var fs = require('fs');
+var path = require('path');
+
+var PERMS = (function (base) {
+  return {
+    OTHER_EXEC: base.EXEC,
+    OTHER_WRITE: base.WRITE,
+    OTHER_READ: base.READ,
+
+    GROUP_EXEC: base.EXEC << 3,
+    GROUP_WRITE: base.WRITE << 3,
+    GROUP_READ: base.READ << 3,
+
+    OWNER_EXEC: base.EXEC << 6,
+    OWNER_WRITE: base.WRITE << 6,
+    OWNER_READ: base.READ << 6,
+
+    // Literal octal numbers are apparently not allowed in "strict" javascript.
+    STICKY: parseInt('01000', 8),
+    SETGID: parseInt('02000', 8),
+    SETUID: parseInt('04000', 8),
+
+    TYPE_MASK: parseInt('0770000', 8),
+  };
+}({
+  EXEC: 1,
+  WRITE: 2,
+  READ: 4,
+}));
+
+common.register('chmod', _chmod, {
+});
+
+//@
+//@ ### chmod([options,] octal_mode || octal_string, file)
+//@ ### chmod([options,] symbolic_mode, file)
+//@
+//@ Available options:
+//@
+//@ + `-v`: output a diagnostic for every file processed//@
+//@ + `-c`: like verbose, but report only when a change is made//@
+//@ + `-R`: change files and directories recursively//@
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ chmod(755, '/Users/brandon');
+//@ chmod('755', '/Users/brandon'); // same as above
+//@ chmod('u+x', '/Users/brandon');
+//@ chmod('-R', 'a-w', '/Users/brandon');
+//@ ```
+//@
+//@ Alters the permissions of a file or directory by either specifying the
+//@ absolute permissions in octal form or expressing the changes in symbols.
+//@ This command tries to mimic the POSIX behavior as much as possible.
+//@ Notable exceptions:
+//@
+//@ + In symbolic modes, `a-r` and `-r` are identical.  No consideration is
+//@   given to the `umask`.
+//@ + There is no "quiet" option, since default behavior is to run silent.
+function _chmod(options, mode, filePattern) {
+  if (!filePattern) {
+    if (options.length > 0 && options.charAt(0) === '-') {
+      // Special case where the specified file permissions started with - to subtract perms, which
+      // get picked up by the option parser as command flags.
+      // If we are down by one argument and options starts with -, shift everything over.
+      [].unshift.call(arguments, '');
+    } else {
+      common.error('You must specify a file.');
+    }
+  }
+
+  options = common.parseOptions(options, {
+    'R': 'recursive',
+    'c': 'changes',
+    'v': 'verbose',
+  });
+
+  filePattern = [].slice.call(arguments, 2);
+
+  var files;
+
+  // TODO: replace this with a call to common.expand()
+  if (options.recursive) {
+    files = [];
+    filePattern.forEach(function addFile(expandedFile) {
+      var stat = common.statNoFollowLinks(expandedFile);
+
+      if (!stat.isSymbolicLink()) {
+        files.push(expandedFile);
+
+        if (stat.isDirectory()) {  // intentionally does not follow symlinks.
+          fs.readdirSync(expandedFile).forEach(function (child) {
+            addFile(expandedFile + '/' + child);
+          });
+        }
+      }
+    });
+  } else {
+    files = filePattern;
+  }
+
+  files.forEach(function innerChmod(file) {
+    file = path.resolve(file);
+    if (!fs.existsSync(file)) {
+      common.error('File not found: ' + file);
+    }
+
+    // When recursing, don't follow symlinks.
+    if (options.recursive && common.statNoFollowLinks(file).isSymbolicLink()) {
+      return;
+    }
+
+    var stat = common.statFollowLinks(file);
+    var isDir = stat.isDirectory();
+    var perms = stat.mode;
+    var type = perms & PERMS.TYPE_MASK;
+
+    var newPerms = perms;
+
+    if (isNaN(parseInt(mode, 8))) {
+      // parse options
+      mode.split(',').forEach(function (symbolicMode) {
+        var pattern = /([ugoa]*)([=\+-])([rwxXst]*)/i;
+        var matches = pattern.exec(symbolicMode);
+
+        if (matches) {
+          var applyTo = matches[1];
+          var operator = matches[2];
+          var change = matches[3];
+
+          var changeOwner = applyTo.indexOf('u') !== -1 || applyTo === 'a' || applyTo === '';
+          var changeGroup = applyTo.indexOf('g') !== -1 || applyTo === 'a' || applyTo === '';
+          var changeOther = applyTo.indexOf('o') !== -1 || applyTo === 'a' || applyTo === '';
+
+          var changeRead = change.indexOf('r') !== -1;
+          var changeWrite = change.indexOf('w') !== -1;
+          var changeExec = change.indexOf('x') !== -1;
+          var changeExecDir = change.indexOf('X') !== -1;
+          var changeSticky = change.indexOf('t') !== -1;
+          var changeSetuid = change.indexOf('s') !== -1;
+
+          if (changeExecDir && isDir) {
+            changeExec = true;
+          }
+
+          var mask = 0;
+          if (changeOwner) {
+            mask |= (changeRead ? PERMS.OWNER_READ : 0) + (changeWrite ? PERMS.OWNER_WRITE : 0) + (changeExec ? PERMS.OWNER_EXEC : 0) + (changeSetuid ? PERMS.SETUID : 0);
+          }
+          if (changeGroup) {
+            mask |= (changeRead ? PERMS.GROUP_READ : 0) + (changeWrite ? PERMS.GROUP_WRITE : 0) + (changeExec ? PERMS.GROUP_EXEC : 0) + (changeSetuid ? PERMS.SETGID : 0);
+          }
+          if (changeOther) {
+            mask |= (changeRead ? PERMS.OTHER_READ : 0) + (changeWrite ? PERMS.OTHER_WRITE : 0) + (changeExec ? PERMS.OTHER_EXEC : 0);
+          }
+
+          // Sticky bit is special - it's not tied to user, group or other.
+          if (changeSticky) {
+            mask |= PERMS.STICKY;
+          }
+
+          switch (operator) {
+            case '+':
+              newPerms |= mask;
+              break;
+
+            case '-':
+              newPerms &= ~mask;
+              break;
+
+            case '=':
+              newPerms = type + mask;
+
+              // According to POSIX, when using = to explicitly set the
+              // permissions, setuid and setgid can never be cleared.
+              if (common.statFollowLinks(file).isDirectory()) {
+                newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms;
+              }
+              break;
+            default:
+              common.error('Could not recognize operator: `' + operator + '`');
+          }
+
+          if (options.verbose) {
+            console.log(file + ' -> ' + newPerms.toString(8));
+          }
+
+          if (perms !== newPerms) {
+            if (!options.verbose && options.changes) {
+              console.log(file + ' -> ' + newPerms.toString(8));
+            }
+            fs.chmodSync(file, newPerms);
+            perms = newPerms; // for the next round of changes!
+          }
+        } else {
+          common.error('Invalid symbolic mode change: ' + symbolicMode);
+        }
+      });
+    } else {
+      // they gave us a full number
+      newPerms = type + parseInt(mode, 8);
+
+      // POSIX rules are that setuid and setgid can only be added using numeric
+      // form, but not cleared.
+      if (common.statFollowLinks(file).isDirectory()) {
+        newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms;
+      }
+
+      fs.chmodSync(file, newPerms);
+    }
+  });
+  return '';
+}
+module.exports = _chmod;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/common.js b/node_modules/cordova-common/node_modules/shelljs/src/common.js
new file mode 100644
index 0000000..f873782
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/common.js
@@ -0,0 +1,468 @@
+// Ignore warning about 'new String()'
+/* eslint no-new-wrappers: 0 */
+'use strict';
+
+var os = require('os');
+var fs = require('fs');
+var glob = require('glob');
+var shell = require('..');
+
+var shellMethods = Object.create(shell);
+
+exports.extend = Object.assign;
+
+// Check if we're running under electron
+var isElectron = Boolean(process.versions.electron);
+
+// Module globals (assume no execPath by default)
+var DEFAULT_CONFIG = {
+  fatal: false,
+  globOptions: {},
+  maxdepth: 255,
+  noglob: false,
+  silent: false,
+  verbose: false,
+  execPath: null,
+  bufLength: 64 * 1024, // 64KB
+};
+
+var config = {
+  reset: function () {
+    Object.assign(this, DEFAULT_CONFIG);
+    if (!isElectron) {
+      this.execPath = process.execPath;
+    }
+  },
+  resetForTesting: function () {
+    this.reset();
+    this.silent = true;
+  },
+};
+
+config.reset();
+exports.config = config;
+
+var state = {
+  error: null,
+  errorCode: 0,
+  currentCmd: 'shell.js',
+  tempDir: null,
+};
+exports.state = state;
+
+delete process.env.OLDPWD; // initially, there's no previous directory
+
+// Reliably test if something is any sort of javascript object
+function isObject(a) {
+  return typeof a === 'object' && a !== null;
+}
+exports.isObject = isObject;
+
+function log() {
+  /* istanbul ignore next */
+  if (!config.silent) {
+    console.error.apply(console, arguments);
+  }
+}
+exports.log = log;
+
+// Converts strings to be equivalent across all platforms. Primarily responsible
+// for making sure we use '/' instead of '\' as path separators, but this may be
+// expanded in the future if necessary
+function convertErrorOutput(msg) {
+  if (typeof msg !== 'string') {
+    throw new TypeError('input must be a string');
+  }
+  return msg.replace(/\\/g, '/');
+}
+exports.convertErrorOutput = convertErrorOutput;
+
+// Shows error message. Throws if config.fatal is true
+function error(msg, _code, options) {
+  // Validate input
+  if (typeof msg !== 'string') throw new Error('msg must be a string');
+
+  var DEFAULT_OPTIONS = {
+    continue: false,
+    code: 1,
+    prefix: state.currentCmd + ': ',
+    silent: false,
+  };
+
+  if (typeof _code === 'number' && isObject(options)) {
+    options.code = _code;
+  } else if (isObject(_code)) { // no 'code'
+    options = _code;
+  } else if (typeof _code === 'number') { // no 'options'
+    options = { code: _code };
+  } else if (typeof _code !== 'number') { // only 'msg'
+    options = {};
+  }
+  options = Object.assign({}, DEFAULT_OPTIONS, options);
+
+  if (!state.errorCode) state.errorCode = options.code;
+
+  var logEntry = convertErrorOutput(options.prefix + msg);
+  state.error = state.error ? state.error + '\n' : '';
+  state.error += logEntry;
+
+  // Throw an error, or log the entry
+  if (config.fatal) throw new Error(logEntry);
+  if (msg.length > 0 && !options.silent) log(logEntry);
+
+  if (!options.continue) {
+    throw {
+      msg: 'earlyExit',
+      retValue: (new ShellString('', state.error, state.errorCode)),
+    };
+  }
+}
+exports.error = error;
+
+//@
+//@ ### ShellString(str)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var foo = ShellString('hello world');
+//@ ```
+//@
+//@ Turns a regular string into a string-like object similar to what each
+//@ command returns. This has special methods, like `.to()` and `.toEnd()`.
+function ShellString(stdout, stderr, code) {
+  var that;
+  if (stdout instanceof Array) {
+    that = stdout;
+    that.stdout = stdout.join('\n');
+    if (stdout.length > 0) that.stdout += '\n';
+  } else {
+    that = new String(stdout);
+    that.stdout = stdout;
+  }
+  that.stderr = stderr;
+  that.code = code;
+  // A list of all commands that can appear on the right-hand side of a pipe
+  // (populated by calls to common.wrap())
+  pipeMethods.forEach(function (cmd) {
+    that[cmd] = shellMethods[cmd].bind(that);
+  });
+  return that;
+}
+
+exports.ShellString = ShellString;
+
+// Returns {'alice': true, 'bob': false} when passed a string and dictionary as follows:
+//   parseOptions('-a', {'a':'alice', 'b':'bob'});
+// Returns {'reference': 'string-value', 'bob': false} when passed two dictionaries of the form:
+//   parseOptions({'-r': 'string-value'}, {'r':'reference', 'b':'bob'});
+// Throws an error when passed a string that does not start with '-':
+//   parseOptions('a', {'a':'alice'}); // throws
+function parseOptions(opt, map, errorOptions) {
+  // Validate input
+  if (typeof opt !== 'string' && !isObject(opt)) {
+    throw new Error('options must be strings or key-value pairs');
+  } else if (!isObject(map)) {
+    throw new Error('parseOptions() internal error: map must be an object');
+  } else if (errorOptions && !isObject(errorOptions)) {
+    throw new Error('parseOptions() internal error: errorOptions must be object');
+  }
+
+  if (opt === '--') {
+    // This means there are no options.
+    return {};
+  }
+
+  // All options are false by default
+  var options = {};
+  Object.keys(map).forEach(function (letter) {
+    var optName = map[letter];
+    if (optName[0] !== '!') {
+      options[optName] = false;
+    }
+  });
+
+  if (opt === '') return options; // defaults
+
+  if (typeof opt === 'string') {
+    if (opt[0] !== '-') {
+      throw new Error("Options string must start with a '-'");
+    }
+
+    // e.g. chars = ['R', 'f']
+    var chars = opt.slice(1).split('');
+
+    chars.forEach(function (c) {
+      if (c in map) {
+        var optionName = map[c];
+        if (optionName[0] === '!') {
+          options[optionName.slice(1)] = false;
+        } else {
+          options[optionName] = true;
+        }
+      } else {
+        error('option not recognized: ' + c, errorOptions || {});
+      }
+    });
+  } else { // opt is an Object
+    Object.keys(opt).forEach(function (key) {
+      // key is a string of the form '-r', '-d', etc.
+      var c = key[1];
+      if (c in map) {
+        var optionName = map[c];
+        options[optionName] = opt[key]; // assign the given value
+      } else {
+        error('option not recognized: ' + c, errorOptions || {});
+      }
+    });
+  }
+  return options;
+}
+exports.parseOptions = parseOptions;
+
+// Expands wildcards with matching (ie. existing) file names.
+// For example:
+//   expand(['file*.js']) = ['file1.js', 'file2.js', ...]
+//   (if the files 'file1.js', 'file2.js', etc, exist in the current dir)
+function expand(list) {
+  if (!Array.isArray(list)) {
+    throw new TypeError('must be an array');
+  }
+  var expanded = [];
+  list.forEach(function (listEl) {
+    // Don't expand non-strings
+    if (typeof listEl !== 'string') {
+      expanded.push(listEl);
+    } else {
+      var ret;
+      try {
+        ret = glob.sync(listEl, config.globOptions);
+        // if nothing matched, interpret the string literally
+        ret = ret.length > 0 ? ret : [listEl];
+      } catch (e) {
+        // if glob fails, interpret the string literally
+        ret = [listEl];
+      }
+      expanded = expanded.concat(ret);
+    }
+  });
+  return expanded;
+}
+exports.expand = expand;
+
+// Normalizes Buffer creation, using Buffer.alloc if possible.
+// Also provides a good default buffer length for most use cases.
+var buffer = typeof Buffer.alloc === 'function' ?
+  function (len) {
+    return Buffer.alloc(len || config.bufLength);
+  } :
+  function (len) {
+    return new Buffer(len || config.bufLength);
+  };
+exports.buffer = buffer;
+
+// Normalizes _unlinkSync() across platforms to match Unix behavior, i.e.
+// file can be unlinked even if it's read-only, see https://github.com/joyent/node/issues/3006
+function unlinkSync(file) {
+  try {
+    fs.unlinkSync(file);
+  } catch (e) {
+    // Try to override file permission
+    /* istanbul ignore next */
+    if (e.code === 'EPERM') {
+      fs.chmodSync(file, '0666');
+      fs.unlinkSync(file);
+    } else {
+      throw e;
+    }
+  }
+}
+exports.unlinkSync = unlinkSync;
+
+// wrappers around common.statFollowLinks and common.statNoFollowLinks that clarify intent
+// and improve readability
+function statFollowLinks() {
+  return fs.statSync.apply(fs, arguments);
+}
+exports.statFollowLinks = statFollowLinks;
+
+function statNoFollowLinks() {
+  return fs.lstatSync.apply(fs, arguments);
+}
+exports.statNoFollowLinks = statNoFollowLinks;
+
+// e.g. 'shelljs_a5f185d0443ca...'
+function randomFileName() {
+  function randomHash(count) {
+    if (count === 1) {
+      return parseInt(16 * Math.random(), 10).toString(16);
+    }
+    var hash = '';
+    for (var i = 0; i < count; i++) {
+      hash += randomHash(1);
+    }
+    return hash;
+  }
+
+  return 'shelljs_' + randomHash(20);
+}
+exports.randomFileName = randomFileName;
+
+// Common wrapper for all Unix-like commands that performs glob expansion,
+// command-logging, and other nice things
+function wrap(cmd, fn, options) {
+  options = options || {};
+  return function () {
+    var retValue = null;
+
+    state.currentCmd = cmd;
+    state.error = null;
+    state.errorCode = 0;
+
+    try {
+      var args = [].slice.call(arguments, 0);
+
+      // Log the command to stderr, if appropriate
+      if (config.verbose) {
+        console.error.apply(console, [cmd].concat(args));
+      }
+
+      // If this is coming from a pipe, let's set the pipedValue (otherwise, set
+      // it to the empty string)
+      state.pipedValue = (this && typeof this.stdout === 'string') ? this.stdout : '';
+
+      if (options.unix === false) { // this branch is for exec()
+        retValue = fn.apply(this, args);
+      } else { // and this branch is for everything else
+        if (isObject(args[0]) && args[0].constructor.name === 'Object') {
+          // a no-op, allowing the syntax `touch({'-r': file}, ...)`
+        } else if (args.length === 0 || typeof args[0] !== 'string' || args[0].length <= 1 || args[0][0] !== '-') {
+          args.unshift(''); // only add dummy option if '-option' not already present
+        }
+
+        // flatten out arrays that are arguments, to make the syntax:
+        //    `cp([file1, file2, file3], dest);`
+        // equivalent to:
+        //    `cp(file1, file2, file3, dest);`
+        args = args.reduce(function (accum, cur) {
+          if (Array.isArray(cur)) {
+            return accum.concat(cur);
+          }
+          accum.push(cur);
+          return accum;
+        }, []);
+
+        // Convert ShellStrings (basically just String objects) to regular strings
+        args = args.map(function (arg) {
+          if (isObject(arg) && arg.constructor.name === 'String') {
+            return arg.toString();
+          }
+          return arg;
+        });
+
+        // Expand the '~' if appropriate
+        var homeDir = os.homedir();
+        args = args.map(function (arg) {
+          if (typeof arg === 'string' && arg.slice(0, 2) === '~/' || arg === '~') {
+            return arg.replace(/^~/, homeDir);
+          }
+          return arg;
+        });
+
+        // Perform glob-expansion on all arguments after globStart, but preserve
+        // the arguments before it (like regexes for sed and grep)
+        if (!config.noglob && options.allowGlobbing === true) {
+          args = args.slice(0, options.globStart).concat(expand(args.slice(options.globStart)));
+        }
+
+        try {
+          // parse options if options are provided
+          if (isObject(options.cmdOptions)) {
+            args[0] = parseOptions(args[0], options.cmdOptions);
+          }
+
+          retValue = fn.apply(this, args);
+        } catch (e) {
+          /* istanbul ignore else */
+          if (e.msg === 'earlyExit') {
+            retValue = e.retValue;
+          } else {
+            throw e; // this is probably a bug that should be thrown up the call stack
+          }
+        }
+      }
+    } catch (e) {
+      /* istanbul ignore next */
+      if (!state.error) {
+        // If state.error hasn't been set it's an error thrown by Node, not us - probably a bug...
+        e.name = 'ShellJSInternalError';
+        throw e;
+      }
+      if (config.fatal) throw e;
+    }
+
+    if (options.wrapOutput &&
+        (typeof retValue === 'string' || Array.isArray(retValue))) {
+      retValue = new ShellString(retValue, state.error, state.errorCode);
+    }
+
+    state.currentCmd = 'shell.js';
+    return retValue;
+  };
+} // wrap
+exports.wrap = wrap;
+
+// This returns all the input that is piped into the current command (or the
+// empty string, if this isn't on the right-hand side of a pipe
+function _readFromPipe() {
+  return state.pipedValue;
+}
+exports.readFromPipe = _readFromPipe;
+
+var DEFAULT_WRAP_OPTIONS = {
+  allowGlobbing: true,
+  canReceivePipe: false,
+  cmdOptions: null,
+  globStart: 1,
+  pipeOnly: false,
+  wrapOutput: true,
+  unix: true,
+};
+
+// This is populated during plugin registration
+var pipeMethods = [];
+
+// Register a new ShellJS command
+function _register(name, implementation, wrapOptions) {
+  wrapOptions = wrapOptions || {};
+
+  // Validate options
+  Object.keys(wrapOptions).forEach(function (option) {
+    if (!DEFAULT_WRAP_OPTIONS.hasOwnProperty(option)) {
+      throw new Error("Unknown option '" + option + "'");
+    }
+    if (typeof wrapOptions[option] !== typeof DEFAULT_WRAP_OPTIONS[option]) {
+      throw new TypeError("Unsupported type '" + typeof wrapOptions[option] +
+        "' for option '" + option + "'");
+    }
+  });
+
+  // If an option isn't specified, use the default
+  wrapOptions = Object.assign({}, DEFAULT_WRAP_OPTIONS, wrapOptions);
+
+  if (shell[name]) {
+    throw new Error('Command `' + name + '` already exists');
+  }
+
+  if (wrapOptions.pipeOnly) {
+    wrapOptions.canReceivePipe = true;
+    shellMethods[name] = wrap(name, implementation, wrapOptions);
+  } else {
+    shell[name] = wrap(name, implementation, wrapOptions);
+  }
+
+  if (wrapOptions.canReceivePipe) {
+    pipeMethods.push(name);
+  }
+}
+exports.register = _register;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/cp.js b/node_modules/cordova-common/node_modules/shelljs/src/cp.js
new file mode 100644
index 0000000..4214b0b
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/cp.js
@@ -0,0 +1,300 @@
+var fs = require('fs');
+var path = require('path');
+var common = require('./common');
+
+common.register('cp', _cp, {
+  cmdOptions: {
+    'f': '!no_force',
+    'n': 'no_force',
+    'u': 'update',
+    'R': 'recursive',
+    'r': 'recursive',
+    'L': 'followsymlink',
+    'P': 'noFollowsymlink',
+  },
+  wrapOutput: false,
+});
+
+// Buffered file copy, synchronous
+// (Using readFileSync() + writeFileSync() could easily cause a memory overflow
+//  with large files)
+function copyFileSync(srcFile, destFile, options) {
+  if (!fs.existsSync(srcFile)) {
+    common.error('copyFileSync: no such file or directory: ' + srcFile);
+  }
+
+  var isWindows = process.platform === 'win32';
+
+  // Check the mtimes of the files if the '-u' flag is provided
+  try {
+    if (options.update && common.statFollowLinks(srcFile).mtime < fs.statSync(destFile).mtime) {
+      return;
+    }
+  } catch (e) {
+    // If we're here, destFile probably doesn't exist, so just do a normal copy
+  }
+
+  if (common.statNoFollowLinks(srcFile).isSymbolicLink() && !options.followsymlink) {
+    try {
+      common.statNoFollowLinks(destFile);
+      common.unlinkSync(destFile); // re-link it
+    } catch (e) {
+      // it doesn't exist, so no work needs to be done
+    }
+
+    var symlinkFull = fs.readlinkSync(srcFile);
+    fs.symlinkSync(symlinkFull, destFile, isWindows ? 'junction' : null);
+  } else {
+    var buf = common.buffer();
+    var bufLength = buf.length;
+    var bytesRead = bufLength;
+    var pos = 0;
+    var fdr = null;
+    var fdw = null;
+
+    try {
+      fdr = fs.openSync(srcFile, 'r');
+    } catch (e) {
+      /* istanbul ignore next */
+      common.error('copyFileSync: could not read src file (' + srcFile + ')');
+    }
+
+    try {
+      fdw = fs.openSync(destFile, 'w');
+    } catch (e) {
+      /* istanbul ignore next */
+      common.error('copyFileSync: could not write to dest file (code=' + e.code + '):' + destFile);
+    }
+
+    while (bytesRead === bufLength) {
+      bytesRead = fs.readSync(fdr, buf, 0, bufLength, pos);
+      fs.writeSync(fdw, buf, 0, bytesRead);
+      pos += bytesRead;
+    }
+
+    fs.closeSync(fdr);
+    fs.closeSync(fdw);
+
+    fs.chmodSync(destFile, common.statFollowLinks(srcFile).mode);
+  }
+}
+
+// Recursively copies 'sourceDir' into 'destDir'
+// Adapted from https://github.com/ryanmcgrath/wrench-js
+//
+// Copyright (c) 2010 Ryan McGrath
+// Copyright (c) 2012 Artur Adib
+//
+// Licensed under the MIT License
+// http://www.opensource.org/licenses/mit-license.php
+function cpdirSyncRecursive(sourceDir, destDir, currentDepth, opts) {
+  if (!opts) opts = {};
+
+  // Ensure there is not a run away recursive copy
+  if (currentDepth >= common.config.maxdepth) return;
+  currentDepth++;
+
+  var isWindows = process.platform === 'win32';
+
+  // Create the directory where all our junk is moving to; read the mode of the
+  // source directory and mirror it
+  try {
+    var checkDir = common.statFollowLinks(sourceDir);
+    fs.mkdirSync(destDir, checkDir.mode);
+  } catch (e) {
+    // if the directory already exists, that's okay
+    if (e.code !== 'EEXIST') throw e;
+  }
+
+  var files = fs.readdirSync(sourceDir);
+
+  for (var i = 0; i < files.length; i++) {
+    var srcFile = sourceDir + '/' + files[i];
+    var destFile = destDir + '/' + files[i];
+    var srcFileStat = common.statNoFollowLinks(srcFile);
+
+    var symlinkFull;
+    if (opts.followsymlink) {
+      if (cpcheckcycle(sourceDir, srcFile)) {
+        // Cycle link found.
+        console.error('Cycle link found.');
+        symlinkFull = fs.readlinkSync(srcFile);
+        fs.symlinkSync(symlinkFull, destFile, isWindows ? 'junction' : null);
+        continue;
+      }
+    }
+    if (srcFileStat.isDirectory()) {
+      /* recursion this thing right on back. */
+      cpdirSyncRecursive(srcFile, destFile, currentDepth, opts);
+    } else if (srcFileStat.isSymbolicLink() && !opts.followsymlink) {
+      symlinkFull = fs.readlinkSync(srcFile);
+      try {
+        common.statNoFollowLinks(destFile);
+        common.unlinkSync(destFile); // re-link it
+      } catch (e) {
+        // it doesn't exist, so no work needs to be done
+      }
+      fs.symlinkSync(symlinkFull, destFile, isWindows ? 'junction' : null);
+    } else if (srcFileStat.isSymbolicLink() && opts.followsymlink) {
+      srcFileStat = common.statFollowLinks(srcFile);
+      if (srcFileStat.isDirectory()) {
+        cpdirSyncRecursive(srcFile, destFile, currentDepth, opts);
+      } else {
+        copyFileSync(srcFile, destFile, opts);
+      }
+    } else {
+      /* At this point, we've hit a file actually worth copying... so copy it on over. */
+      if (fs.existsSync(destFile) && opts.no_force) {
+        common.log('skipping existing file: ' + files[i]);
+      } else {
+        copyFileSync(srcFile, destFile, opts);
+      }
+    }
+  } // for files
+} // cpdirSyncRecursive
+
+// Checks if cureent file was created recently
+function checkRecentCreated(sources, index) {
+  var lookedSource = sources[index];
+  return sources.slice(0, index).some(function (src) {
+    return path.basename(src) === path.basename(lookedSource);
+  });
+}
+
+function cpcheckcycle(sourceDir, srcFile) {
+  var srcFileStat = common.statNoFollowLinks(srcFile);
+  if (srcFileStat.isSymbolicLink()) {
+    // Do cycle check. For example:
+    //   $ mkdir -p 1/2/3/4
+    //   $ cd  1/2/3/4
+    //   $ ln -s ../../3 link
+    //   $ cd ../../../..
+    //   $ cp -RL 1 copy
+    var cyclecheck = common.statFollowLinks(srcFile);
+    if (cyclecheck.isDirectory()) {
+      var sourcerealpath = fs.realpathSync(sourceDir);
+      var symlinkrealpath = fs.realpathSync(srcFile);
+      var re = new RegExp(symlinkrealpath);
+      if (re.test(sourcerealpath)) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+//@
+//@ ### cp([options,] source [, source ...], dest)
+//@ ### cp([options,] source_array, dest)
+//@
+//@ Available options:
+//@
+//@ + `-f`: force (default behavior)
+//@ + `-n`: no-clobber
+//@ + `-u`: only copy if `source` is newer than `dest`
+//@ + `-r`, `-R`: recursive
+//@ + `-L`: follow symlinks
+//@ + `-P`: don't follow symlinks
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ cp('file1', 'dir1');
+//@ cp('-R', 'path/to/dir/', '~/newCopy/');
+//@ cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp');
+//@ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
+//@ ```
+//@
+//@ Copies files.
+function _cp(options, sources, dest) {
+  // If we're missing -R, it actually implies -L (unless -P is explicit)
+  if (options.followsymlink) {
+    options.noFollowsymlink = false;
+  }
+  if (!options.recursive && !options.noFollowsymlink) {
+    options.followsymlink = true;
+  }
+
+  // Get sources, dest
+  if (arguments.length < 3) {
+    common.error('missing <source> and/or <dest>');
+  } else {
+    sources = [].slice.call(arguments, 1, arguments.length - 1);
+    dest = arguments[arguments.length - 1];
+  }
+
+  var destExists = fs.existsSync(dest);
+  var destStat = destExists && common.statFollowLinks(dest);
+
+  // Dest is not existing dir, but multiple sources given
+  if ((!destExists || !destStat.isDirectory()) && sources.length > 1) {
+    common.error('dest is not a directory (too many sources)');
+  }
+
+  // Dest is an existing file, but -n is given
+  if (destExists && destStat.isFile() && options.no_force) {
+    return new common.ShellString('', '', 0);
+  }
+
+  sources.forEach(function (src, srcIndex) {
+    if (!fs.existsSync(src)) {
+      if (src === '') src = "''"; // if src was empty string, display empty string
+      common.error('no such file or directory: ' + src, { continue: true });
+      return; // skip file
+    }
+    var srcStat = common.statFollowLinks(src);
+    if (!options.noFollowsymlink && srcStat.isDirectory()) {
+      if (!options.recursive) {
+        // Non-Recursive
+        common.error("omitting directory '" + src + "'", { continue: true });
+      } else {
+        // Recursive
+        // 'cp /a/source dest' should create 'source' in 'dest'
+        var newDest = (destStat && destStat.isDirectory()) ?
+            path.join(dest, path.basename(src)) :
+            dest;
+
+        try {
+          common.statFollowLinks(path.dirname(dest));
+          cpdirSyncRecursive(src, newDest, 0, { no_force: options.no_force, followsymlink: options.followsymlink });
+        } catch (e) {
+          /* istanbul ignore next */
+          common.error("cannot create directory '" + dest + "': No such file or directory");
+        }
+      }
+    } else {
+      // If here, src is a file
+
+      // When copying to '/path/dir':
+      //    thisDest = '/path/dir/file1'
+      var thisDest = dest;
+      if (destStat && destStat.isDirectory()) {
+        thisDest = path.normalize(dest + '/' + path.basename(src));
+      }
+
+      var thisDestExists = fs.existsSync(thisDest);
+      if (thisDestExists && checkRecentCreated(sources, srcIndex)) {
+        // cannot overwrite file created recently in current execution, but we want to continue copying other files
+        if (!options.no_force) {
+          common.error("will not overwrite just-created '" + thisDest + "' with '" + src + "'", { continue: true });
+        }
+        return;
+      }
+
+      if (thisDestExists && options.no_force) {
+        return; // skip file
+      }
+
+      if (path.relative(src, thisDest) === '') {
+        // a file cannot be copied to itself, but we want to continue copying other files
+        common.error("'" + thisDest + "' and '" + src + "' are the same file", { continue: true });
+        return;
+      }
+
+      copyFileSync(src, thisDest, options);
+    }
+  }); // forEach(src)
+
+  return new common.ShellString('', common.state.error, common.state.errorCode);
+}
+module.exports = _cp;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/dirs.js b/node_modules/cordova-common/node_modules/shelljs/src/dirs.js
new file mode 100644
index 0000000..26547a5
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/dirs.js
@@ -0,0 +1,212 @@
+var common = require('./common');
+var _cd = require('./cd');
+var path = require('path');
+
+common.register('dirs', _dirs, {
+  wrapOutput: false,
+});
+common.register('pushd', _pushd, {
+  wrapOutput: false,
+});
+common.register('popd', _popd, {
+  wrapOutput: false,
+});
+
+// Pushd/popd/dirs internals
+var _dirStack = [];
+
+function _isStackIndex(index) {
+  return (/^[\-+]\d+$/).test(index);
+}
+
+function _parseStackIndex(index) {
+  if (_isStackIndex(index)) {
+    if (Math.abs(index) < _dirStack.length + 1) { // +1 for pwd
+      return (/^-/).test(index) ? Number(index) - 1 : Number(index);
+    }
+    common.error(index + ': directory stack index out of range');
+  } else {
+    common.error(index + ': invalid number');
+  }
+}
+
+function _actualDirStack() {
+  return [process.cwd()].concat(_dirStack);
+}
+
+//@
+//@ ### pushd([options,] [dir | '-N' | '+N'])
+//@
+//@ Available options:
+//@
+//@ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.
+//@ + `-q`: Supresses output to the console.
+//@
+//@ Arguments:
+//@
+//@ + `dir`: Sets the current working directory to the top of the stack, then executes the equivalent of `cd dir`.
+//@ + `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
+//@ + `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ // process.cwd() === '/usr'
+//@ pushd('/etc'); // Returns /etc /usr
+//@ pushd('+1');   // Returns /usr /etc
+//@ ```
+//@
+//@ Save the current directory on the top of the directory stack and then `cd` to `dir`. With no arguments, `pushd` exchanges the top two directories. Returns an array of paths in the stack.
+function _pushd(options, dir) {
+  if (_isStackIndex(options)) {
+    dir = options;
+    options = '';
+  }
+
+  options = common.parseOptions(options, {
+    'n': 'no-cd',
+    'q': 'quiet',
+  });
+
+  var dirs = _actualDirStack();
+
+  if (dir === '+0') {
+    return dirs; // +0 is a noop
+  } else if (!dir) {
+    if (dirs.length > 1) {
+      dirs = dirs.splice(1, 1).concat(dirs);
+    } else {
+      return common.error('no other directory');
+    }
+  } else if (_isStackIndex(dir)) {
+    var n = _parseStackIndex(dir);
+    dirs = dirs.slice(n).concat(dirs.slice(0, n));
+  } else {
+    if (options['no-cd']) {
+      dirs.splice(1, 0, dir);
+    } else {
+      dirs.unshift(dir);
+    }
+  }
+
+  if (options['no-cd']) {
+    dirs = dirs.slice(1);
+  } else {
+    dir = path.resolve(dirs.shift());
+    _cd('', dir);
+  }
+
+  _dirStack = dirs;
+  return _dirs(options.quiet ? '-q' : '');
+}
+exports.pushd = _pushd;
+
+//@
+//@
+//@ ### popd([options,] ['-N' | '+N'])
+//@
+//@ Available options:
+//@
+//@ + `-n`: Suppress the normal directory change when removing directories from the stack, so that only the stack is manipulated.
+//@ + `-q`: Supresses output to the console.
+//@
+//@ Arguments:
+//@
+//@ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.
+//@ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ echo(process.cwd()); // '/usr'
+//@ pushd('/etc');       // '/etc /usr'
+//@ echo(process.cwd()); // '/etc'
+//@ popd();              // '/usr'
+//@ echo(process.cwd()); // '/usr'
+//@ ```
+//@
+//@ When no arguments are given, `popd` removes the top directory from the stack and performs a `cd` to the new top directory. The elements are numbered from 0, starting at the first directory listed with dirs (i.e., `popd` is equivalent to `popd +0`). Returns an array of paths in the stack.
+function _popd(options, index) {
+  if (_isStackIndex(options)) {
+    index = options;
+    options = '';
+  }
+
+  options = common.parseOptions(options, {
+    'n': 'no-cd',
+    'q': 'quiet',
+  });
+
+  if (!_dirStack.length) {
+    return common.error('directory stack empty');
+  }
+
+  index = _parseStackIndex(index || '+0');
+
+  if (options['no-cd'] || index > 0 || _dirStack.length + index === 0) {
+    index = index > 0 ? index - 1 : index;
+    _dirStack.splice(index, 1);
+  } else {
+    var dir = path.resolve(_dirStack.shift());
+    _cd('', dir);
+  }
+
+  return _dirs(options.quiet ? '-q' : '');
+}
+exports.popd = _popd;
+
+//@
+//@
+//@ ### dirs([options | '+N' | '-N'])
+//@
+//@ Available options:
+//@
+//@ + `-c`: Clears the directory stack by deleting all of the elements.
+//@ + `-q`: Supresses output to the console.
+//@
+//@ Arguments:
+//@
+//@ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.
+//@ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.
+//@
+//@ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if `+N` or `-N` was specified.
+//@
+//@ See also: `pushd`, `popd`
+function _dirs(options, index) {
+  if (_isStackIndex(options)) {
+    index = options;
+    options = '';
+  }
+
+  options = common.parseOptions(options, {
+    'c': 'clear',
+    'q': 'quiet',
+  });
+
+  if (options.clear) {
+    _dirStack = [];
+    return _dirStack;
+  }
+
+  var stack = _actualDirStack();
+
+  if (index) {
+    index = _parseStackIndex(index);
+
+    if (index < 0) {
+      index = stack.length + index;
+    }
+
+    if (!options.quiet) {
+      common.log(stack[index]);
+    }
+    return stack[index];
+  }
+
+  if (!options.quiet) {
+    common.log(stack.join(' '));
+  }
+
+  return stack;
+}
+exports.dirs = _dirs;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/echo.js b/node_modules/cordova-common/node_modules/shelljs/src/echo.js
new file mode 100644
index 0000000..1b089d5
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/echo.js
@@ -0,0 +1,63 @@
+var format = require('util').format;
+
+var common = require('./common');
+
+common.register('echo', _echo, {
+  allowGlobbing: false,
+});
+
+//@
+//@ ### echo([options,] string [, string ...])
+//@
+//@ Available options:
+//@
+//@ + `-e`: interpret backslash escapes (default)
+//@ + `-n`: remove trailing newline from output
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ echo('hello world');
+//@ var str = echo('hello world');
+//@ echo('-n', 'no newline at end');
+//@ ```
+//@
+//@ Prints `string` to stdout, and returns string with additional utility methods
+//@ like `.to()`.
+function _echo(opts) {
+  // allow strings starting with '-', see issue #20
+  var messages = [].slice.call(arguments, opts ? 0 : 1);
+  var options = {};
+
+  // If the first argument starts with '-', parse it as options string.
+  // If parseOptions throws, it wasn't an options string.
+  try {
+    options = common.parseOptions(messages[0], {
+      'e': 'escapes',
+      'n': 'no_newline',
+    }, {
+      silent: true,
+    });
+
+    // Allow null to be echoed
+    if (messages[0]) {
+      messages.shift();
+    }
+  } catch (_) {
+    // Clear out error if an error occurred
+    common.state.error = null;
+  }
+
+  var output = format.apply(null, messages);
+
+  // Add newline if -n is not passed.
+  if (!options.no_newline) {
+    output += '\n';
+  }
+
+  process.stdout.write(output);
+
+  return output;
+}
+
+module.exports = _echo;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/error.js b/node_modules/cordova-common/node_modules/shelljs/src/error.js
new file mode 100644
index 0000000..b0ed59e
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/error.js
@@ -0,0 +1,15 @@
+var common = require('./common');
+
+//@
+//@ ### error()
+//@
+//@ Tests if error occurred in the last command. Returns a truthy value if an
+//@ error returned, or a falsy value otherwise.
+//@
+//@ **Note**: do not rely on the
+//@ return value to be an error message. If you need the last error message, use
+//@ the `.stderr` attribute from the last command's return value instead.
+function error() {
+  return common.state.error;
+}
+module.exports = error;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/exec-child.js b/node_modules/cordova-common/node_modules/shelljs/src/exec-child.js
new file mode 100644
index 0000000..eab86ed
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/exec-child.js
@@ -0,0 +1,39 @@
+if (require.main !== module) {
+  throw new Error('This file should not be required');
+}
+
+var childProcess = require('child_process');
+var fs = require('fs');
+
+var paramFilePath = process.argv[2];
+
+var serializedParams = fs.readFileSync(paramFilePath, 'utf8');
+var params = JSON.parse(serializedParams);
+
+var cmd = params.command;
+var execOptions = params.execOptions;
+var pipe = params.pipe;
+var stdoutFile = params.stdoutFile;
+var stderrFile = params.stderrFile;
+
+var c = childProcess.exec(cmd, execOptions, function (err) {
+  if (!err) {
+    process.exitCode = 0;
+  } else if (err.code === undefined) {
+    process.exitCode = 1;
+  } else {
+    process.exitCode = err.code;
+  }
+});
+
+var stdoutStream = fs.createWriteStream(stdoutFile);
+var stderrStream = fs.createWriteStream(stderrFile);
+
+c.stdout.pipe(stdoutStream);
+c.stderr.pipe(stderrStream);
+c.stdout.pipe(process.stdout);
+c.stderr.pipe(process.stderr);
+
+if (pipe) {
+  c.stdin.end(pipe);
+}
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/exec.js b/node_modules/cordova-common/node_modules/shelljs/src/exec.js
new file mode 100644
index 0000000..66ef3d7
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/exec.js
@@ -0,0 +1,205 @@
+var common = require('./common');
+var _tempDir = require('./tempdir');
+var _pwd = require('./pwd');
+var path = require('path');
+var fs = require('fs');
+var child = require('child_process');
+
+var DEFAULT_MAXBUFFER_SIZE = 20 * 1024 * 1024;
+var DEFAULT_ERROR_CODE = 1;
+
+common.register('exec', _exec, {
+  unix: false,
+  canReceivePipe: true,
+  wrapOutput: false,
+});
+
+// We use this function to run `exec` synchronously while also providing realtime
+// output.
+function execSync(cmd, opts, pipe) {
+  if (!common.config.execPath) {
+    common.error('Unable to find a path to the node binary. Please manually set config.execPath');
+  }
+
+  var tempDir = _tempDir();
+  var paramsFile = path.resolve(tempDir + '/' + common.randomFileName());
+  var stderrFile = path.resolve(tempDir + '/' + common.randomFileName());
+  var stdoutFile = path.resolve(tempDir + '/' + common.randomFileName());
+
+  opts = common.extend({
+    silent: common.config.silent,
+    cwd: _pwd().toString(),
+    env: process.env,
+    maxBuffer: DEFAULT_MAXBUFFER_SIZE,
+    encoding: 'utf8',
+  }, opts);
+
+  if (fs.existsSync(paramsFile)) common.unlinkSync(paramsFile);
+  if (fs.existsSync(stderrFile)) common.unlinkSync(stderrFile);
+  if (fs.existsSync(stdoutFile)) common.unlinkSync(stdoutFile);
+
+  opts.cwd = path.resolve(opts.cwd);
+
+  var paramsToSerialize = {
+    command: cmd,
+    execOptions: opts,
+    pipe: pipe,
+    stdoutFile: stdoutFile,
+    stderrFile: stderrFile,
+  };
+
+  fs.writeFileSync(paramsFile, JSON.stringify(paramsToSerialize), 'utf8');
+
+  var execArgs = [
+    path.join(__dirname, 'exec-child.js'),
+    paramsFile,
+  ];
+
+  /* istanbul ignore else */
+  if (opts.silent) {
+    opts.stdio = 'ignore';
+  } else {
+    opts.stdio = [0, 1, 2];
+  }
+
+  var code = 0;
+
+  // Welcome to the future
+  try {
+    // Bad things if we pass in a `shell` option to child_process.execFileSync,
+    // so we need to explicitly remove it here.
+    delete opts.shell;
+
+    child.execFileSync(common.config.execPath, execArgs, opts);
+  } catch (e) {
+    // Commands with non-zero exit code raise an exception.
+    code = e.status || DEFAULT_ERROR_CODE;
+  }
+
+  // fs.readFileSync uses buffer encoding by default, so call
+  // it without the encoding option if the encoding is 'buffer'.
+  // Also, if the exec timeout is too short for node to start up,
+  // the files will not be created, so these calls will throw.
+  var stdout = '';
+  var stderr = '';
+  if (opts.encoding === 'buffer') {
+    stdout = fs.readFileSync(stdoutFile);
+    stderr = fs.readFileSync(stderrFile);
+  } else {
+    stdout = fs.readFileSync(stdoutFile, opts.encoding);
+    stderr = fs.readFileSync(stderrFile, opts.encoding);
+  }
+
+  // No biggie if we can't erase the files now -- they're in a temp dir anyway
+  try { common.unlinkSync(paramsFile); } catch (e) {}
+  try { common.unlinkSync(stderrFile); } catch (e) {}
+  try { common.unlinkSync(stdoutFile); } catch (e) {}
+
+  if (code !== 0) {
+    common.error(stderr, code, { continue: true });
+  }
+  var obj = common.ShellString(stdout, stderr, code);
+  return obj;
+} // execSync()
+
+// Wrapper around exec() to enable echoing output to console in real time
+function execAsync(cmd, opts, pipe, callback) {
+  opts = common.extend({
+    silent: common.config.silent,
+    cwd: _pwd().toString(),
+    env: process.env,
+    maxBuffer: DEFAULT_MAXBUFFER_SIZE,
+    encoding: 'utf8',
+  }, opts);
+
+  var c = child.exec(cmd, opts, function (err, stdout, stderr) {
+    if (callback) {
+      if (!err) {
+        callback(0, stdout, stderr);
+      } else if (err.code === undefined) {
+        // See issue #536
+        /* istanbul ignore next */
+        callback(1, stdout, stderr);
+      } else {
+        callback(err.code, stdout, stderr);
+      }
+    }
+  });
+
+  if (pipe) c.stdin.end(pipe);
+
+  if (!opts.silent) {
+    c.stdout.pipe(process.stdout);
+    c.stderr.pipe(process.stderr);
+  }
+
+  return c;
+}
+
+//@
+//@ ### exec(command [, options] [, callback])
+//@
+//@ Available options:
+//@
+//@ + `async`: Asynchronous execution. If a callback is provided, it will be set to
+//@   `true`, regardless of the passed value (default: `false`).
+//@ + `silent`: Do not echo program output to console (default: `false`).
+//@ + `encoding`: Character encoding to use. Affects the values returned to stdout and stderr, and
+//@   what is written to stdout and stderr when not in silent mode (default: `'utf8'`).
+//@ + and any option available to Node.js's
+//@   [`child_process.exec()`](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var version = exec('node --version', {silent:true}).stdout;
+//@
+//@ var child = exec('some_long_running_process', {async:true});
+//@ child.stdout.on('data', function(data) {
+//@   /* ... do something with data ... */
+//@ });
+//@
+//@ exec('some_long_running_process', function(code, stdout, stderr) {
+//@   console.log('Exit code:', code);
+//@   console.log('Program output:', stdout);
+//@   console.log('Program stderr:', stderr);
+//@ });
+//@ ```
+//@
+//@ Executes the given `command` _synchronously_, unless otherwise specified.  When in synchronous
+//@ mode, this returns a `ShellString` (compatible with ShellJS v0.6.x, which returns an object
+//@ of the form `{ code:..., stdout:... , stderr:... }`). Otherwise, this returns the child process
+//@ object, and the `callback` receives the arguments `(code, stdout, stderr)`.
+//@
+//@ Not seeing the behavior you want? `exec()` runs everything through `sh`
+//@ by default (or `cmd.exe` on Windows), which differs from `bash`. If you
+//@ need bash-specific behavior, try out the `{shell: 'path/to/bash'}` option.
+function _exec(command, options, callback) {
+  options = options || {};
+  if (!command) common.error('must specify command');
+
+  var pipe = common.readFromPipe();
+
+  // Callback is defined instead of options.
+  if (typeof options === 'function') {
+    callback = options;
+    options = { async: true };
+  }
+
+  // Callback is defined with options.
+  if (typeof options === 'object' && typeof callback === 'function') {
+    options.async = true;
+  }
+
+  options = common.extend({
+    silent: common.config.silent,
+    async: false,
+  }, options);
+
+  if (options.async) {
+    return execAsync(command, options, pipe, callback);
+  } else {
+    return execSync(command, options, pipe);
+  }
+}
+module.exports = _exec;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/find.js b/node_modules/cordova-common/node_modules/shelljs/src/find.js
new file mode 100644
index 0000000..0de695a
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/find.js
@@ -0,0 +1,61 @@
+var path = require('path');
+var common = require('./common');
+var _ls = require('./ls');
+
+common.register('find', _find, {});
+
+//@
+//@ ### find(path [, path ...])
+//@ ### find(path_array)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ find('src', 'lib');
+//@ find(['src', 'lib']); // same as above
+//@ find('.').filter(function(file) { return file.match(/\.js$/); });
+//@ ```
+//@
+//@ Returns array of all files (however deep) in the given paths.
+//@
+//@ The main difference from `ls('-R', path)` is that the resulting file names
+//@ include the base directories (e.g., `lib/resources/file1` instead of just `file1`).
+function _find(options, paths) {
+  if (!paths) {
+    common.error('no path specified');
+  } else if (typeof paths === 'string') {
+    paths = [].slice.call(arguments, 1);
+  }
+
+  var list = [];
+
+  function pushFile(file) {
+    if (process.platform === 'win32') {
+      file = file.replace(/\\/g, '/');
+    }
+    list.push(file);
+  }
+
+  // why not simply do `ls('-R', paths)`? because the output wouldn't give the base dirs
+  // to get the base dir in the output, we need instead `ls('-R', 'dir/*')` for every directory
+
+  paths.forEach(function (file) {
+    var stat;
+    try {
+      stat = common.statFollowLinks(file);
+    } catch (e) {
+      common.error('no such file or directory: ' + file);
+    }
+
+    pushFile(file);
+
+    if (stat.isDirectory()) {
+      _ls({ recursive: true, all: true }, file).forEach(function (subfile) {
+        pushFile(path.join(file, subfile));
+      });
+    }
+  });
+
+  return list;
+}
+module.exports = _find;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/grep.js b/node_modules/cordova-common/node_modules/shelljs/src/grep.js
new file mode 100644
index 0000000..3880fa1
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/grep.js
@@ -0,0 +1,68 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('grep', _grep, {
+  globStart: 2, // don't glob-expand the regex
+  canReceivePipe: true,
+  cmdOptions: {
+    'v': 'inverse',
+    'l': 'nameOnly',
+  },
+});
+
+//@
+//@ ### grep([options,] regex_filter, file [, file ...])
+//@ ### grep([options,] regex_filter, file_array)
+//@
+//@ Available options:
+//@
+//@ + `-v`: Invert `regex_filter` (only print non-matching lines).
+//@ + `-l`: Print only filenames of matching files
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ grep('-v', 'GLOBAL_VARIABLE', '*.js');
+//@ grep('GLOBAL_VARIABLE', '*.js');
+//@ ```
+//@
+//@ Reads input string from given files and returns a string containing all lines of the
+//@ file that match the given `regex_filter`.
+function _grep(options, regex, files) {
+  // Check if this is coming from a pipe
+  var pipe = common.readFromPipe();
+
+  if (!files && !pipe) common.error('no paths given', 2);
+
+  files = [].slice.call(arguments, 2);
+
+  if (pipe) {
+    files.unshift('-');
+  }
+
+  var grep = [];
+  files.forEach(function (file) {
+    if (!fs.existsSync(file) && file !== '-') {
+      common.error('no such file or directory: ' + file, 2, { continue: true });
+      return;
+    }
+
+    var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8');
+    if (options.nameOnly) {
+      if (contents.match(regex)) {
+        grep.push(file);
+      }
+    } else {
+      var lines = contents.split('\n');
+      lines.forEach(function (line) {
+        var matched = line.match(regex);
+        if ((options.inverse && !matched) || (!options.inverse && matched)) {
+          grep.push(line);
+        }
+      });
+    }
+  });
+
+  return grep.join('\n') + '\n';
+}
+module.exports = _grep;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/head.js b/node_modules/cordova-common/node_modules/shelljs/src/head.js
new file mode 100644
index 0000000..7169fd3
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/head.js
@@ -0,0 +1,107 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('head', _head, {
+  canReceivePipe: true,
+  cmdOptions: {
+    'n': 'numLines',
+  },
+});
+
+// Reads |numLines| lines or the entire file, whichever is less.
+function readSomeLines(file, numLines) {
+  var buf = common.buffer();
+  var bufLength = buf.length;
+  var bytesRead = bufLength;
+  var pos = 0;
+
+  var fdr = fs.openSync(file, 'r');
+  var numLinesRead = 0;
+  var ret = '';
+  while (bytesRead === bufLength && numLinesRead < numLines) {
+    bytesRead = fs.readSync(fdr, buf, 0, bufLength, pos);
+    var bufStr = buf.toString('utf8', 0, bytesRead);
+    numLinesRead += bufStr.split('\n').length - 1;
+    ret += bufStr;
+    pos += bytesRead;
+  }
+
+  fs.closeSync(fdr);
+  return ret;
+}
+
+//@
+//@ ### head([{'-n': \<num\>},] file [, file ...])
+//@ ### head([{'-n': \<num\>},] file_array)
+//@
+//@ Available options:
+//@
+//@ + `-n <num>`: Show the first `<num>` lines of the files
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var str = head({'-n': 1}, 'file*.txt');
+//@ var str = head('file1', 'file2');
+//@ var str = head(['file1', 'file2']); // same as above
+//@ ```
+//@
+//@ Read the start of a file.
+function _head(options, files) {
+  var head = [];
+  var pipe = common.readFromPipe();
+
+  if (!files && !pipe) common.error('no paths given');
+
+  var idx = 1;
+  if (options.numLines === true) {
+    idx = 2;
+    options.numLines = Number(arguments[1]);
+  } else if (options.numLines === false) {
+    options.numLines = 10;
+  }
+  files = [].slice.call(arguments, idx);
+
+  if (pipe) {
+    files.unshift('-');
+  }
+
+  var shouldAppendNewline = false;
+  files.forEach(function (file) {
+    if (file !== '-') {
+      if (!fs.existsSync(file)) {
+        common.error('no such file or directory: ' + file, { continue: true });
+        return;
+      } else if (common.statFollowLinks(file).isDirectory()) {
+        common.error("error reading '" + file + "': Is a directory", {
+          continue: true,
+        });
+        return;
+      }
+    }
+
+    var contents;
+    if (file === '-') {
+      contents = pipe;
+    } else if (options.numLines < 0) {
+      contents = fs.readFileSync(file, 'utf8');
+    } else {
+      contents = readSomeLines(file, options.numLines);
+    }
+
+    var lines = contents.split('\n');
+    var hasTrailingNewline = (lines[lines.length - 1] === '');
+    if (hasTrailingNewline) {
+      lines.pop();
+    }
+    shouldAppendNewline = (hasTrailingNewline || options.numLines < lines.length);
+
+    head = head.concat(lines.slice(0, options.numLines));
+  });
+
+  if (shouldAppendNewline) {
+    head.push(''); // to add a trailing newline once we join
+  }
+  return head.join('\n');
+}
+module.exports = _head;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/ln.js b/node_modules/cordova-common/node_modules/shelljs/src/ln.js
new file mode 100644
index 0000000..2cf87cd
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/ln.js
@@ -0,0 +1,73 @@
+var fs = require('fs');
+var path = require('path');
+var common = require('./common');
+
+common.register('ln', _ln, {
+  cmdOptions: {
+    's': 'symlink',
+    'f': 'force',
+  },
+});
+
+//@
+//@ ### ln([options,] source, dest)
+//@
+//@ Available options:
+//@
+//@ + `-s`: symlink
+//@ + `-f`: force
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ ln('file', 'newlink');
+//@ ln('-sf', 'file', 'existing');
+//@ ```
+//@
+//@ Links `source` to `dest`. Use `-f` to force the link, should `dest` already exist.
+function _ln(options, source, dest) {
+  if (!source || !dest) {
+    common.error('Missing <source> and/or <dest>');
+  }
+
+  source = String(source);
+  var sourcePath = path.normalize(source).replace(RegExp(path.sep + '$'), '');
+  var isAbsolute = (path.resolve(source) === sourcePath);
+  dest = path.resolve(process.cwd(), String(dest));
+
+  if (fs.existsSync(dest)) {
+    if (!options.force) {
+      common.error('Destination file exists', { continue: true });
+    }
+
+    fs.unlinkSync(dest);
+  }
+
+  if (options.symlink) {
+    var isWindows = process.platform === 'win32';
+    var linkType = isWindows ? 'file' : null;
+    var resolvedSourcePath = isAbsolute ? sourcePath : path.resolve(process.cwd(), path.dirname(dest), source);
+    if (!fs.existsSync(resolvedSourcePath)) {
+      common.error('Source file does not exist', { continue: true });
+    } else if (isWindows && common.statFollowLinks(resolvedSourcePath).isDirectory()) {
+      linkType = 'junction';
+    }
+
+    try {
+      fs.symlinkSync(linkType === 'junction' ? resolvedSourcePath : source, dest, linkType);
+    } catch (err) {
+      common.error(err.message);
+    }
+  } else {
+    if (!fs.existsSync(source)) {
+      common.error('Source file does not exist', { continue: true });
+    }
+    try {
+      fs.linkSync(source, dest);
+    } catch (err) {
+      common.error(err.message);
+    }
+  }
+  return '';
+}
+module.exports = _ln;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/ls.js b/node_modules/cordova-common/node_modules/shelljs/src/ls.js
new file mode 100644
index 0000000..daebdf8
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/ls.js
@@ -0,0 +1,141 @@
+var path = require('path');
+var fs = require('fs');
+var common = require('./common');
+var glob = require('glob');
+
+var globPatternRecursive = path.sep + '**';
+
+common.register('ls', _ls, {
+  cmdOptions: {
+    'R': 'recursive',
+    'A': 'all',
+    'L': 'link',
+    'a': 'all_deprecated',
+    'd': 'directory',
+    'l': 'long',
+  },
+});
+
+//@
+//@ ### ls([options,] [path, ...])
+//@ ### ls([options,] path_array)
+//@
+//@ Available options:
+//@
+//@ + `-R`: recursive
+//@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`)
+//@ + `-L`: follow symlinks
+//@ + `-d`: list directories themselves, not their contents
+//@ + `-l`: list objects representing each file, each with fields containing `ls
+//@         -l` output fields. See
+//@         [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats)
+//@         for more info
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ ls('projs/*.js');
+//@ ls('-R', '/users/me', '/tmp');
+//@ ls('-R', ['/users/me', '/tmp']); // same as above
+//@ ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...}
+//@ ```
+//@
+//@ Returns array of files in the given `path`, or files in
+//@ the current directory if no `path` is  provided.
+function _ls(options, paths) {
+  if (options.all_deprecated) {
+    // We won't support the -a option as it's hard to image why it's useful
+    // (it includes '.' and '..' in addition to '.*' files)
+    // For backwards compatibility we'll dump a deprecated message and proceed as before
+    common.log('ls: Option -a is deprecated. Use -A instead');
+    options.all = true;
+  }
+
+  if (!paths) {
+    paths = ['.'];
+  } else {
+    paths = [].slice.call(arguments, 1);
+  }
+
+  var list = [];
+
+  function pushFile(abs, relName, stat) {
+    if (process.platform === 'win32') {
+      relName = relName.replace(/\\/g, '/');
+    }
+    if (options.long) {
+      stat = stat || (options.link ? common.statFollowLinks(abs) : common.statNoFollowLinks(abs));
+      list.push(addLsAttributes(relName, stat));
+    } else {
+      // list.push(path.relative(rel || '.', file));
+      list.push(relName);
+    }
+  }
+
+  paths.forEach(function (p) {
+    var stat;
+
+    try {
+      stat = options.link ? common.statFollowLinks(p) : common.statNoFollowLinks(p);
+      // follow links to directories by default
+      if (stat.isSymbolicLink()) {
+        /* istanbul ignore next */
+        // workaround for https://github.com/shelljs/shelljs/issues/795
+        // codecov seems to have a bug that miscalculate this block as uncovered.
+        // but according to nyc report this block does get covered.
+        try {
+          var _stat = common.statFollowLinks(p);
+          if (_stat.isDirectory()) {
+            stat = _stat;
+          }
+        } catch (_) {} // bad symlink, treat it like a file
+      }
+    } catch (e) {
+      common.error('no such file or directory: ' + p, 2, { continue: true });
+      return;
+    }
+
+    // If the stat succeeded
+    if (stat.isDirectory() && !options.directory) {
+      if (options.recursive) {
+        // use glob, because it's simple
+        glob.sync(p + globPatternRecursive, { dot: options.all, follow: options.link })
+          .forEach(function (item) {
+            // Glob pattern returns the directory itself and needs to be filtered out.
+            if (path.relative(p, item)) {
+              pushFile(item, path.relative(p, item));
+            }
+          });
+      } else if (options.all) {
+        // use fs.readdirSync, because it's fast
+        fs.readdirSync(p).forEach(function (item) {
+          pushFile(path.join(p, item), item);
+        });
+      } else {
+        // use fs.readdirSync and then filter out secret files
+        fs.readdirSync(p).forEach(function (item) {
+          if (item[0] !== '.') {
+            pushFile(path.join(p, item), item);
+          }
+        });
+      }
+    } else {
+      pushFile(p, p, stat);
+    }
+  });
+
+  // Add methods, to make this more compatible with ShellStrings
+  return list;
+}
+
+function addLsAttributes(pathName, stats) {
+  // Note: this object will contain more information than .toString() returns
+  stats.name = pathName;
+  stats.toString = function () {
+    // Return a string resembling unix's `ls -l` format
+    return [this.mode, this.nlink, this.uid, this.gid, this.size, this.mtime, this.name].join(' ');
+  };
+  return stats;
+}
+
+module.exports = _ls;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/mkdir.js b/node_modules/cordova-common/node_modules/shelljs/src/mkdir.js
new file mode 100644
index 0000000..6168d59
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/mkdir.js
@@ -0,0 +1,100 @@
+var common = require('./common');
+var fs = require('fs');
+var path = require('path');
+
+common.register('mkdir', _mkdir, {
+  cmdOptions: {
+    'p': 'fullpath',
+  },
+});
+
+// Recursively creates `dir`
+function mkdirSyncRecursive(dir) {
+  var baseDir = path.dirname(dir);
+
+  // Prevents some potential problems arising from malformed UNCs or
+  // insufficient permissions.
+  /* istanbul ignore next */
+  if (baseDir === dir) {
+    common.error('dirname() failed: [' + dir + ']');
+  }
+
+  // Base dir exists, no recursion necessary
+  if (fs.existsSync(baseDir)) {
+    fs.mkdirSync(dir, parseInt('0777', 8));
+    return;
+  }
+
+  // Base dir does not exist, go recursive
+  mkdirSyncRecursive(baseDir);
+
+  // Base dir created, can create dir
+  fs.mkdirSync(dir, parseInt('0777', 8));
+}
+
+//@
+//@ ### mkdir([options,] dir [, dir ...])
+//@ ### mkdir([options,] dir_array)
+//@
+//@ Available options:
+//@
+//@ + `-p`: full path (and create intermediate directories, if necessary)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
+//@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
+//@ ```
+//@
+//@ Creates directories.
+function _mkdir(options, dirs) {
+  if (!dirs) common.error('no paths given');
+
+  if (typeof dirs === 'string') {
+    dirs = [].slice.call(arguments, 1);
+  }
+  // if it's array leave it as it is
+
+  dirs.forEach(function (dir) {
+    try {
+      var stat = common.statNoFollowLinks(dir);
+      if (!options.fullpath) {
+        common.error('path already exists: ' + dir, { continue: true });
+      } else if (stat.isFile()) {
+        common.error('cannot create directory ' + dir + ': File exists', { continue: true });
+      }
+      return; // skip dir
+    } catch (e) {
+      // do nothing
+    }
+
+    // Base dir does not exist, and no -p option given
+    var baseDir = path.dirname(dir);
+    if (!fs.existsSync(baseDir) && !options.fullpath) {
+      common.error('no such file or directory: ' + baseDir, { continue: true });
+      return; // skip dir
+    }
+
+    try {
+      if (options.fullpath) {
+        mkdirSyncRecursive(path.resolve(dir));
+      } else {
+        fs.mkdirSync(dir, parseInt('0777', 8));
+      }
+    } catch (e) {
+      var reason;
+      if (e.code === 'EACCES') {
+        reason = 'Permission denied';
+      } else if (e.code === 'ENOTDIR' || e.code === 'ENOENT') {
+        reason = 'Not a directory';
+      } else {
+        /* istanbul ignore next */
+        throw e;
+      }
+      common.error('cannot create directory ' + dir + ': ' + reason, { continue: true });
+    }
+  });
+  return '';
+} // mkdir
+module.exports = _mkdir;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/mv.js b/node_modules/cordova-common/node_modules/shelljs/src/mv.js
new file mode 100644
index 0000000..ac28a24
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/mv.js
@@ -0,0 +1,118 @@
+var fs = require('fs');
+var path = require('path');
+var common = require('./common');
+var cp = require('./cp');
+var rm = require('./rm');
+
+common.register('mv', _mv, {
+  cmdOptions: {
+    'f': '!no_force',
+    'n': 'no_force',
+  },
+});
+
+// Checks if cureent file was created recently
+function checkRecentCreated(sources, index) {
+  var lookedSource = sources[index];
+  return sources.slice(0, index).some(function (src) {
+    return path.basename(src) === path.basename(lookedSource);
+  });
+}
+
+//@
+//@ ### mv([options ,] source [, source ...], dest')
+//@ ### mv([options ,] source_array, dest')
+//@
+//@ Available options:
+//@
+//@ + `-f`: force (default behavior)
+//@ + `-n`: no-clobber
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ mv('-n', 'file', 'dir/');
+//@ mv('file1', 'file2', 'dir/');
+//@ mv(['file1', 'file2'], 'dir/'); // same as above
+//@ ```
+//@
+//@ Moves `source` file(s) to `dest`.
+function _mv(options, sources, dest) {
+  // Get sources, dest
+  if (arguments.length < 3) {
+    common.error('missing <source> and/or <dest>');
+  } else if (arguments.length > 3) {
+    sources = [].slice.call(arguments, 1, arguments.length - 1);
+    dest = arguments[arguments.length - 1];
+  } else if (typeof sources === 'string') {
+    sources = [sources];
+  } else {
+    // TODO(nate): figure out if we actually need this line
+    common.error('invalid arguments');
+  }
+
+  var exists = fs.existsSync(dest);
+  var stats = exists && common.statFollowLinks(dest);
+
+  // Dest is not existing dir, but multiple sources given
+  if ((!exists || !stats.isDirectory()) && sources.length > 1) {
+    common.error('dest is not a directory (too many sources)');
+  }
+
+  // Dest is an existing file, but no -f given
+  if (exists && stats.isFile() && options.no_force) {
+    common.error('dest file already exists: ' + dest);
+  }
+
+  sources.forEach(function (src, srcIndex) {
+    if (!fs.existsSync(src)) {
+      common.error('no such file or directory: ' + src, { continue: true });
+      return; // skip file
+    }
+
+    // If here, src exists
+
+    // When copying to '/path/dir':
+    //    thisDest = '/path/dir/file1'
+    var thisDest = dest;
+    if (fs.existsSync(dest) && common.statFollowLinks(dest).isDirectory()) {
+      thisDest = path.normalize(dest + '/' + path.basename(src));
+    }
+
+    var thisDestExists = fs.existsSync(thisDest);
+
+    if (thisDestExists && checkRecentCreated(sources, srcIndex)) {
+      // cannot overwrite file created recently in current execution, but we want to continue copying other files
+      if (!options.no_force) {
+        common.error("will not overwrite just-created '" + thisDest + "' with '" + src + "'", { continue: true });
+      }
+      return;
+    }
+
+    if (fs.existsSync(thisDest) && options.no_force) {
+      common.error('dest file already exists: ' + thisDest, { continue: true });
+      return; // skip file
+    }
+
+    if (path.resolve(src) === path.dirname(path.resolve(thisDest))) {
+      common.error('cannot move to self: ' + src, { continue: true });
+      return; // skip file
+    }
+
+    try {
+      fs.renameSync(src, thisDest);
+    } catch (e) {
+      /* istanbul ignore next */
+      if (e.code === 'EXDEV') {
+        // If we're trying to `mv` to an external partition, we'll actually need
+        // to perform a copy and then clean up the original file. If either the
+        // copy or the rm fails with an exception, we should allow this
+        // exception to pass up to the top level.
+        cp('-r', src, thisDest);
+        rm('-rf', src);
+      }
+    }
+  }); // forEach(src)
+  return '';
+} // mv
+module.exports = _mv;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/popd.js b/node_modules/cordova-common/node_modules/shelljs/src/popd.js
new file mode 100644
index 0000000..d9eac3f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/popd.js
@@ -0,0 +1 @@
+// see dirs.js
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/pushd.js b/node_modules/cordova-common/node_modules/shelljs/src/pushd.js
new file mode 100644
index 0000000..d9eac3f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/pushd.js
@@ -0,0 +1 @@
+// see dirs.js
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/pwd.js b/node_modules/cordova-common/node_modules/shelljs/src/pwd.js
new file mode 100644
index 0000000..8fcf8fc
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/pwd.js
@@ -0,0 +1,16 @@
+var path = require('path');
+var common = require('./common');
+
+common.register('pwd', _pwd, {
+  allowGlobbing: false,
+});
+
+//@
+//@ ### pwd()
+//@
+//@ Returns the current directory.
+function _pwd() {
+  var pwd = path.resolve(process.cwd());
+  return pwd;
+}
+module.exports = _pwd;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/rm.js b/node_modules/cordova-common/node_modules/shelljs/src/rm.js
new file mode 100644
index 0000000..90409ac
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/rm.js
@@ -0,0 +1,201 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('rm', _rm, {
+  cmdOptions: {
+    'f': 'force',
+    'r': 'recursive',
+    'R': 'recursive',
+  },
+});
+
+// Recursively removes 'dir'
+// Adapted from https://github.com/ryanmcgrath/wrench-js
+//
+// Copyright (c) 2010 Ryan McGrath
+// Copyright (c) 2012 Artur Adib
+//
+// Licensed under the MIT License
+// http://www.opensource.org/licenses/mit-license.php
+function rmdirSyncRecursive(dir, force, fromSymlink) {
+  var files;
+
+  files = fs.readdirSync(dir);
+
+  // Loop through and delete everything in the sub-tree after checking it
+  for (var i = 0; i < files.length; i++) {
+    var file = dir + '/' + files[i];
+    var currFile = common.statNoFollowLinks(file);
+
+    if (currFile.isDirectory()) { // Recursive function back to the beginning
+      rmdirSyncRecursive(file, force);
+    } else { // Assume it's a file - perhaps a try/catch belongs here?
+      if (force || isWriteable(file)) {
+        try {
+          common.unlinkSync(file);
+        } catch (e) {
+          /* istanbul ignore next */
+          common.error('could not remove file (code ' + e.code + '): ' + file, {
+            continue: true,
+          });
+        }
+      }
+    }
+  }
+
+  // if was directory was referenced through a symbolic link,
+  // the contents should be removed, but not the directory itself
+  if (fromSymlink) return;
+
+  // Now that we know everything in the sub-tree has been deleted, we can delete the main directory.
+  // Huzzah for the shopkeep.
+
+  var result;
+  try {
+    // Retry on windows, sometimes it takes a little time before all the files in the directory are gone
+    var start = Date.now();
+
+    // TODO: replace this with a finite loop
+    for (;;) {
+      try {
+        result = fs.rmdirSync(dir);
+        if (fs.existsSync(dir)) throw { code: 'EAGAIN' };
+        break;
+      } catch (er) {
+        /* istanbul ignore next */
+        // In addition to error codes, also check if the directory still exists and loop again if true
+        if (process.platform === 'win32' && (er.code === 'ENOTEMPTY' || er.code === 'EBUSY' || er.code === 'EPERM' || er.code === 'EAGAIN')) {
+          if (Date.now() - start > 1000) throw er;
+        } else if (er.code === 'ENOENT') {
+          // Directory did not exist, deletion was successful
+          break;
+        } else {
+          throw er;
+        }
+      }
+    }
+  } catch (e) {
+    common.error('could not remove directory (code ' + e.code + '): ' + dir, { continue: true });
+  }
+
+  return result;
+} // rmdirSyncRecursive
+
+// Hack to determine if file has write permissions for current user
+// Avoids having to check user, group, etc, but it's probably slow
+function isWriteable(file) {
+  var writePermission = true;
+  try {
+    var __fd = fs.openSync(file, 'a');
+    fs.closeSync(__fd);
+  } catch (e) {
+    writePermission = false;
+  }
+
+  return writePermission;
+}
+
+function handleFile(file, options) {
+  if (options.force || isWriteable(file)) {
+    // -f was passed, or file is writable, so it can be removed
+    common.unlinkSync(file);
+  } else {
+    common.error('permission denied: ' + file, { continue: true });
+  }
+}
+
+function handleDirectory(file, options) {
+  if (options.recursive) {
+    // -r was passed, so directory can be removed
+    rmdirSyncRecursive(file, options.force);
+  } else {
+    common.error('path is a directory', { continue: true });
+  }
+}
+
+function handleSymbolicLink(file, options) {
+  var stats;
+  try {
+    stats = common.statFollowLinks(file);
+  } catch (e) {
+    // symlink is broken, so remove the symlink itself
+    common.unlinkSync(file);
+    return;
+  }
+
+  if (stats.isFile()) {
+    common.unlinkSync(file);
+  } else if (stats.isDirectory()) {
+    if (file[file.length - 1] === '/') {
+      // trailing separator, so remove the contents, not the link
+      if (options.recursive) {
+        // -r was passed, so directory can be removed
+        var fromSymlink = true;
+        rmdirSyncRecursive(file, options.force, fromSymlink);
+      } else {
+        common.error('path is a directory', { continue: true });
+      }
+    } else {
+      // no trailing separator, so remove the link
+      common.unlinkSync(file);
+    }
+  }
+}
+
+function handleFIFO(file) {
+  common.unlinkSync(file);
+}
+
+//@
+//@ ### rm([options,] file [, file ...])
+//@ ### rm([options,] file_array)
+//@
+//@ Available options:
+//@
+//@ + `-f`: force
+//@ + `-r, -R`: recursive
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ rm('-rf', '/tmp/*');
+//@ rm('some_file.txt', 'another_file.txt');
+//@ rm(['some_file.txt', 'another_file.txt']); // same as above
+//@ ```
+//@
+//@ Removes files.
+function _rm(options, files) {
+  if (!files) common.error('no paths given');
+
+  // Convert to array
+  files = [].slice.call(arguments, 1);
+
+  files.forEach(function (file) {
+    var lstats;
+    try {
+      var filepath = (file[file.length - 1] === '/')
+        ? file.slice(0, -1) // remove the '/' so lstatSync can detect symlinks
+        : file;
+      lstats = common.statNoFollowLinks(filepath); // test for existence
+    } catch (e) {
+      // Path does not exist, no force flag given
+      if (!options.force) {
+        common.error('no such file or directory: ' + file, { continue: true });
+      }
+      return; // skip file
+    }
+
+    // If here, path exists
+    if (lstats.isFile()) {
+      handleFile(file, options);
+    } else if (lstats.isDirectory()) {
+      handleDirectory(file, options);
+    } else if (lstats.isSymbolicLink()) {
+      handleSymbolicLink(file, options);
+    } else if (lstats.isFIFO()) {
+      handleFIFO(file);
+    }
+  }); // forEach(file)
+  return '';
+} // rm
+module.exports = _rm;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/sed.js b/node_modules/cordova-common/node_modules/shelljs/src/sed.js
new file mode 100644
index 0000000..f094e44
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/sed.js
@@ -0,0 +1,87 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('sed', _sed, {
+  globStart: 3, // don't glob-expand regexes
+  canReceivePipe: true,
+  cmdOptions: {
+    'i': 'inplace',
+  },
+});
+
+//@
+//@ ### sed([options,] search_regex, replacement, file [, file ...])
+//@ ### sed([options,] search_regex, replacement, file_array)
+//@
+//@ Available options:
+//@
+//@ + `-i`: Replace contents of `file` in-place. _Note that no backups will be created!_
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
+//@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
+//@ ```
+//@
+//@ Reads an input string from `file`s, and performs a JavaScript `replace()` on the input
+//@ using the given `search_regex` and `replacement` string or function. Returns the new string after replacement.
+//@
+//@ Note:
+//@
+//@ Like unix `sed`, ShellJS `sed` supports capture groups. Capture groups are specified
+//@ using the `$n` syntax:
+//@
+//@ ```javascript
+//@ sed(/(\w+)\s(\w+)/, '$2, $1', 'file.txt');
+//@ ```
+function _sed(options, regex, replacement, files) {
+  // Check if this is coming from a pipe
+  var pipe = common.readFromPipe();
+
+  if (typeof replacement !== 'string' && typeof replacement !== 'function') {
+    if (typeof replacement === 'number') {
+      replacement = replacement.toString(); // fallback
+    } else {
+      common.error('invalid replacement string');
+    }
+  }
+
+  // Convert all search strings to RegExp
+  if (typeof regex === 'string') {
+    regex = RegExp(regex);
+  }
+
+  if (!files && !pipe) {
+    common.error('no files given');
+  }
+
+  files = [].slice.call(arguments, 3);
+
+  if (pipe) {
+    files.unshift('-');
+  }
+
+  var sed = [];
+  files.forEach(function (file) {
+    if (!fs.existsSync(file) && file !== '-') {
+      common.error('no such file or directory: ' + file, 2, { continue: true });
+      return;
+    }
+
+    var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8');
+    var lines = contents.split('\n');
+    var result = lines.map(function (line) {
+      return line.replace(regex, replacement);
+    }).join('\n');
+
+    sed.push(result);
+
+    if (options.inplace) {
+      fs.writeFileSync(file, result, 'utf8');
+    }
+  });
+
+  return sed.join('\n');
+}
+module.exports = _sed;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/set.js b/node_modules/cordova-common/node_modules/shelljs/src/set.js
new file mode 100644
index 0000000..1101b6f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/set.js
@@ -0,0 +1,56 @@
+var common = require('./common');
+
+common.register('set', _set, {
+  allowGlobbing: false,
+  wrapOutput: false,
+});
+
+//@
+//@ ### set(options)
+//@
+//@ Available options:
+//@
+//@ + `+/-e`: exit upon error (`config.fatal`)
+//@ + `+/-v`: verbose: show all commands (`config.verbose`)
+//@ + `+/-f`: disable filename expansion (globbing)
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ set('-e'); // exit upon first error
+//@ set('+e'); // this undoes a "set('-e')"
+//@ ```
+//@
+//@ Sets global configuration variables.
+function _set(options) {
+  if (!options) {
+    var args = [].slice.call(arguments, 0);
+    if (args.length < 2) common.error('must provide an argument');
+    options = args[1];
+  }
+  var negate = (options[0] === '+');
+  if (negate) {
+    options = '-' + options.slice(1); // parseOptions needs a '-' prefix
+  }
+  options = common.parseOptions(options, {
+    'e': 'fatal',
+    'v': 'verbose',
+    'f': 'noglob',
+  });
+
+  if (negate) {
+    Object.keys(options).forEach(function (key) {
+      options[key] = !options[key];
+    });
+  }
+
+  Object.keys(options).forEach(function (key) {
+    // Only change the global config if `negate` is false and the option is true
+    // or if `negate` is true and the option is false (aka negate !== option)
+    if (negate !== options[key]) {
+      common.config[key] = options[key];
+    }
+  });
+  return;
+}
+module.exports = _set;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/sort.js b/node_modules/cordova-common/node_modules/shelljs/src/sort.js
new file mode 100644
index 0000000..0f42cb6
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/sort.js
@@ -0,0 +1,97 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('sort', _sort, {
+  canReceivePipe: true,
+  cmdOptions: {
+    'r': 'reverse',
+    'n': 'numerical',
+  },
+});
+
+// parse out the number prefix of a line
+function parseNumber(str) {
+  var match = str.match(/^\s*(\d*)\s*(.*)$/);
+  return { num: Number(match[1]), value: match[2] };
+}
+
+// compare two strings case-insensitively, but examine case for strings that are
+// case-insensitive equivalent
+function unixCmp(a, b) {
+  var aLower = a.toLowerCase();
+  var bLower = b.toLowerCase();
+  return (aLower === bLower ?
+      -1 * a.localeCompare(b) : // unix sort treats case opposite how javascript does
+      aLower.localeCompare(bLower));
+}
+
+// compare two strings in the fashion that unix sort's -n option works
+function numericalCmp(a, b) {
+  var objA = parseNumber(a);
+  var objB = parseNumber(b);
+  if (objA.hasOwnProperty('num') && objB.hasOwnProperty('num')) {
+    return ((objA.num !== objB.num) ?
+        (objA.num - objB.num) :
+        unixCmp(objA.value, objB.value));
+  } else {
+    return unixCmp(objA.value, objB.value);
+  }
+}
+
+//@
+//@ ### sort([options,] file [, file ...])
+//@ ### sort([options,] file_array)
+//@
+//@ Available options:
+//@
+//@ + `-r`: Reverse the results
+//@ + `-n`: Compare according to numerical value
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ sort('foo.txt', 'bar.txt');
+//@ sort('-r', 'foo.txt');
+//@ ```
+//@
+//@ Return the contents of the `file`s, sorted line-by-line. Sorting multiple
+//@ files mixes their content (just as unix `sort` does).
+function _sort(options, files) {
+  // Check if this is coming from a pipe
+  var pipe = common.readFromPipe();
+
+  if (!files && !pipe) common.error('no files given');
+
+  files = [].slice.call(arguments, 1);
+
+  if (pipe) {
+    files.unshift('-');
+  }
+
+  var lines = files.reduce(function (accum, file) {
+    if (file !== '-') {
+      if (!fs.existsSync(file)) {
+        common.error('no such file or directory: ' + file, { continue: true });
+        return accum;
+      } else if (common.statFollowLinks(file).isDirectory()) {
+        common.error('read failed: ' + file + ': Is a directory', {
+          continue: true,
+        });
+        return accum;
+      }
+    }
+
+    var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8');
+    return accum.concat(contents.trimRight().split('\n'));
+  }, []);
+
+  var sorted = lines.sort(options.numerical ? numericalCmp : unixCmp);
+
+  if (options.reverse) {
+    sorted = sorted.reverse();
+  }
+
+  return sorted.join('\n') + '\n';
+}
+
+module.exports = _sort;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/tail.js b/node_modules/cordova-common/node_modules/shelljs/src/tail.js
new file mode 100644
index 0000000..258412f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/tail.js
@@ -0,0 +1,80 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('tail', _tail, {
+  canReceivePipe: true,
+  cmdOptions: {
+    'n': 'numLines',
+  },
+});
+
+//@
+//@ ### tail([{'-n': \<num\>},] file [, file ...])
+//@ ### tail([{'-n': \<num\>},] file_array)
+//@
+//@ Available options:
+//@
+//@ + `-n <num>`: Show the last `<num>` lines of `file`s
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var str = tail({'-n': 1}, 'file*.txt');
+//@ var str = tail('file1', 'file2');
+//@ var str = tail(['file1', 'file2']); // same as above
+//@ ```
+//@
+//@ Read the end of a `file`.
+function _tail(options, files) {
+  var tail = [];
+  var pipe = common.readFromPipe();
+
+  if (!files && !pipe) common.error('no paths given');
+
+  var idx = 1;
+  if (options.numLines === true) {
+    idx = 2;
+    options.numLines = Number(arguments[1]);
+  } else if (options.numLines === false) {
+    options.numLines = 10;
+  }
+  options.numLines = -1 * Math.abs(options.numLines);
+  files = [].slice.call(arguments, idx);
+
+  if (pipe) {
+    files.unshift('-');
+  }
+
+  var shouldAppendNewline = false;
+  files.forEach(function (file) {
+    if (file !== '-') {
+      if (!fs.existsSync(file)) {
+        common.error('no such file or directory: ' + file, { continue: true });
+        return;
+      } else if (common.statFollowLinks(file).isDirectory()) {
+        common.error("error reading '" + file + "': Is a directory", {
+          continue: true,
+        });
+        return;
+      }
+    }
+
+    var contents = file === '-' ? pipe : fs.readFileSync(file, 'utf8');
+
+    var lines = contents.split('\n');
+    if (lines[lines.length - 1] === '') {
+      lines.pop();
+      shouldAppendNewline = true;
+    } else {
+      shouldAppendNewline = false;
+    }
+
+    tail = tail.concat(lines.slice(options.numLines));
+  });
+
+  if (shouldAppendNewline) {
+    tail.push(''); // to add a trailing newline once we join
+  }
+  return tail.join('\n');
+}
+module.exports = _tail;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/tempdir.js b/node_modules/cordova-common/node_modules/shelljs/src/tempdir.js
new file mode 100644
index 0000000..6fe116f
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/tempdir.js
@@ -0,0 +1,59 @@
+var common = require('./common');
+var os = require('os');
+var fs = require('fs');
+
+common.register('tempdir', _tempDir, {
+  allowGlobbing: false,
+  wrapOutput: false,
+});
+
+// Returns false if 'dir' is not a writeable directory, 'dir' otherwise
+function writeableDir(dir) {
+  if (!dir || !fs.existsSync(dir)) return false;
+
+  if (!common.statFollowLinks(dir).isDirectory()) return false;
+
+  var testFile = dir + '/' + common.randomFileName();
+  try {
+    fs.writeFileSync(testFile, ' ');
+    common.unlinkSync(testFile);
+    return dir;
+  } catch (e) {
+    /* istanbul ignore next */
+    return false;
+  }
+}
+
+
+//@
+//@ ### tempdir()
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ var tmp = tempdir(); // "/tmp" for most *nix platforms
+//@ ```
+//@
+//@ Searches and returns string containing a writeable, platform-dependent temporary directory.
+//@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
+function _tempDir() {
+  var state = common.state;
+  if (state.tempDir) return state.tempDir; // from cache
+
+  state.tempDir = writeableDir(os.tmpdir()) ||
+                  writeableDir(process.env.TMPDIR) ||
+                  writeableDir(process.env.TEMP) ||
+                  writeableDir(process.env.TMP) ||
+                  writeableDir(process.env.Wimp$ScrapDir) || // RiscOS
+                  writeableDir('C:\\TEMP') || // Windows
+                  writeableDir('C:\\TMP') || // Windows
+                  writeableDir('\\TEMP') || // Windows
+                  writeableDir('\\TMP') || // Windows
+                  writeableDir('/tmp') ||
+                  writeableDir('/var/tmp') ||
+                  writeableDir('/usr/tmp') ||
+                  writeableDir('.'); // last resort
+
+  return state.tempDir;
+}
+module.exports = _tempDir;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/test.js b/node_modules/cordova-common/node_modules/shelljs/src/test.js
new file mode 100644
index 0000000..228c747
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/test.js
@@ -0,0 +1,85 @@
+var common = require('./common');
+var fs = require('fs');
+
+common.register('test', _test, {
+  cmdOptions: {
+    'b': 'block',
+    'c': 'character',
+    'd': 'directory',
+    'e': 'exists',
+    'f': 'file',
+    'L': 'link',
+    'p': 'pipe',
+    'S': 'socket',
+  },
+  wrapOutput: false,
+  allowGlobbing: false,
+});
+
+
+//@
+//@ ### test(expression)
+//@
+//@ Available expression primaries:
+//@
+//@ + `'-b', 'path'`: true if path is a block device
+//@ + `'-c', 'path'`: true if path is a character device
+//@ + `'-d', 'path'`: true if path is a directory
+//@ + `'-e', 'path'`: true if path exists
+//@ + `'-f', 'path'`: true if path is a regular file
+//@ + `'-L', 'path'`: true if path is a symbolic link
+//@ + `'-p', 'path'`: true if path is a pipe (FIFO)
+//@ + `'-S', 'path'`: true if path is a socket
+//@
+//@ Examples:
+//@
+//@ ```javascript
+//@ if (test('-d', path)) { /* do something with dir */ };
+//@ if (!test('-f', path)) continue; // skip if it's a regular file
+//@ ```
+//@
+//@ Evaluates `expression` using the available primaries and returns corresponding value.
+function _test(options, path) {
+  if (!path) common.error('no path given');
+
+  var canInterpret = false;
+  Object.keys(options).forEach(function (key) {
+    if (options[key] === true) {
+      canInterpret = true;
+    }
+  });
+
+  if (!canInterpret) common.error('could not interpret expression');
+
+  if (options.link) {
+    try {
+      return common.statNoFollowLinks(path).isSymbolicLink();
+    } catch (e) {
+      return false;
+    }
+  }
+
+  if (!fs.existsSync(path)) return false;
+
+  if (options.exists) return true;
+
+  var stats = common.statFollowLinks(path);
+
+  if (options.block) return stats.isBlockDevice();
+
+  if (options.character) return stats.isCharacterDevice();
+
+  if (options.directory) return stats.isDirectory();
+
+  if (options.file) return stats.isFile();
+
+  /* istanbul ignore next */
+  if (options.pipe) return stats.isFIFO();
+
+  /* istanbul ignore next */
+  if (options.socket) return stats.isSocket();
+
+  /* istanbul ignore next */
+  return false; // fallback
+} // test
+module.exports = _test;
diff --git a/node_modules/cordova-common/node_modules/shelljs/src/to.js b/node_modules/cordova-common/node_modules/shelljs/src/to.js
new file mode 100644
index 0000000..f1355bf
--- /dev/null
+++ b/node_modules/cordova-common/node_modules/shelljs/src/to.js
@@ -0,0 +1,37 @@
+var common = require('./common');
... 68867 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[cordova-windows] 05/05: Revert "remove most existing devdeps for now"

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit 6b8e7e319c640645d07c3e8591396cc957b2b835
Author: Christopher J. Brody <br...@litehelpers.net>
AuthorDate: Wed Jun 13 18:45:27 2018 -0400

    Revert "remove most existing devdeps for now"
    
    This reverts commit ceaca3a668e8bfddcd6f89472fac28cbb28cace5.
---
 package.json | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/package.json b/package.json
index b55bb7d..69840fc 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,15 @@
     "winjs": "^4.4.3"
   },
   "devDependencies": {
+    "eslint": "^4.18.0",
+    "eslint-config-semistandard": "^11.0.0",
+    "eslint-config-standard": "^10.2.1",
+    "eslint-plugin-import": "^2.3.0",
+    "eslint-plugin-node": "^5.0.0",
+    "eslint-plugin-promise": "^3.5.0",
+    "eslint-plugin-standard": "^3.0.1",
+    "istanbul": "^0.4.0",
+    "jasmine": "^2.99.0",
     "rewire": "^2.5.1"
   },
   "bundledDependencies": [

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[cordova-windows] 01/05: remove most existing devdeps for now

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit ceaca3a668e8bfddcd6f89472fac28cbb28cace5
Author: Christopher J. Brody <br...@litehelpers.net>
AuthorDate: Wed Jun 13 18:34:53 2018 -0400

    remove most existing devdeps for now
---
 package.json | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/package.json b/package.json
index 42d8768..012a873 100644
--- a/package.json
+++ b/package.json
@@ -34,15 +34,6 @@
     "winjs": "^4.4.3"
   },
   "devDependencies": {
-    "eslint": "^4.18.0",
-    "eslint-config-semistandard": "^11.0.0",
-    "eslint-config-standard": "^10.2.1",
-    "eslint-plugin-import": "^2.3.0",
-    "eslint-plugin-node": "^5.0.0",
-    "eslint-plugin-promise": "^3.5.0",
-    "eslint-plugin-standard": "^3.0.1",
-    "istanbul": "^0.4.0",
-    "jasmine": "^2.99.0",
     "rewire": "^2.5.1"
   },
   "bundledDependencies": [

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[cordova-windows] 04/05: [squash] add node_modules/strip-bom

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brodybits pushed a commit to branch cb-update-wip1
in repository https://gitbox.apache.org/repos/asf/cordova-windows.git

commit af71d788c50adb52ecba6eabd75c08cc11457b8e
Author: Christopher J. Brody <br...@litehelpers.net>
AuthorDate: Wed Jun 13 18:42:20 2018 -0400

    [squash] add node_modules/strip-bom
---
 node_modules/strip-bom/index.js     | 14 ++++++++
 node_modules/strip-bom/license      | 21 +++++++++++
 node_modules/strip-bom/package.json | 72 +++++++++++++++++++++++++++++++++++++
 node_modules/strip-bom/readme.md    | 36 +++++++++++++++++++
 4 files changed, 143 insertions(+)

diff --git a/node_modules/strip-bom/index.js b/node_modules/strip-bom/index.js
new file mode 100644
index 0000000..b00feb9
--- /dev/null
+++ b/node_modules/strip-bom/index.js
@@ -0,0 +1,14 @@
+'use strict';
+module.exports = x => {
+	if (typeof x !== 'string') {
+		throw new TypeError('Expected a string, got ' + typeof x);
+	}
+
+	// Catches EFBBBF (UTF-8 BOM) because the buffer-to-string
+	// conversion translates it to FEFF (UTF-16 BOM)
+	if (x.charCodeAt(0) === 0xFEFF) {
+		return x.slice(1);
+	}
+
+	return x;
+};
diff --git a/node_modules/strip-bom/license b/node_modules/strip-bom/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/node_modules/strip-bom/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <si...@gmail.com> (sindresorhus.com)
+
+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.
diff --git a/node_modules/strip-bom/package.json b/node_modules/strip-bom/package.json
new file mode 100644
index 0000000..805abfc
--- /dev/null
+++ b/node_modules/strip-bom/package.json
@@ -0,0 +1,72 @@
+{
+  "_from": "strip-bom@^3.0.0",
+  "_id": "strip-bom@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+  "_location": "/strip-bom",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "strip-bom@^3.0.0",
+    "name": "strip-bom",
+    "escapedName": "strip-bom",
+    "rawSpec": "^3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.0.0"
+  },
+  "_requiredBy": [
+    "/cordova-common"
+  ],
+  "_resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+  "_shasum": "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3",
+  "_spec": "strip-bom@^3.0.0",
+  "_where": "/Users/brodybits/Documents/cbwork/cordova-windows/node_modules/cordova-common",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/strip-bom/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Strip UTF-8 byte order mark (BOM) from a string",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/strip-bom#readme",
+  "keywords": [
+    "strip",
+    "bom",
+    "byte",
+    "order",
+    "mark",
+    "unicode",
+    "utf8",
+    "utf-8",
+    "remove",
+    "delete",
+    "trim",
+    "text",
+    "string"
+  ],
+  "license": "MIT",
+  "name": "strip-bom",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/strip-bom.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
+}
diff --git a/node_modules/strip-bom/readme.md b/node_modules/strip-bom/readme.md
new file mode 100644
index 0000000..812a980
--- /dev/null
+++ b/node_modules/strip-bom/readme.md
@@ -0,0 +1,36 @@
+# strip-bom [![Build Status](https://travis-ci.org/sindresorhus/strip-bom.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-bom)
+
+> Strip UTF-8 [byte order mark](http://en.wikipedia.org/wiki/Byte_order_mark#UTF-8) (BOM) from a string
+
+From Wikipedia:
+
+> The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8.
+
+
+## Install
+
+```
+$ npm install --save strip-bom
+```
+
+
+## Usage
+
+```js
+const stripBom = require('strip-bom');
+
+stripBom('\uFEFFunicorn');
+//=> 'unicorn'
+```
+
+
+## Related
+
+- [strip-bom-cli](https://github.com/sindresorhus/strip-bom-cli) - CLI for this module
+- [strip-bom-buf](https://github.com/sindresorhus/strip-bom-buf) - Buffer version of this module
+- [strip-bom-stream](https://github.com/sindresorhus/strip-bom-stream) - Stream version of this module
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)

-- 
To stop receiving notification emails like this one, please contact
brodybits@apache.org.

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org