VYPR
Critical severityNVD Advisory· Published Dec 2, 2020· Updated Aug 4, 2024

CVE-2020-28273

CVE-2020-28273

Description

Prototype pollution in set-in 1.0.0–2.0.0 allows DoS or RCE by setting __proto__ or constructor.prototype in the path.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Prototype pollution in set-in 1.0.0–2.0.0 allows DoS or RCE by setting `__proto__` or `constructor.prototype` in the path.

Vulnerability

Overview The set-in npm package versions 1.0.0 through 2.0.0 contain a prototype pollution vulnerability. The function recursivelySetIn does not sanitize the path parameter, allowing keys like __proto__ or constructor.prototype to be used. This can pollute the base object prototype, leading to denial of service or remote code execution.

Exploitation

Details An attacker can supply a crafted path argument that includes __proto__ or constructor.prototype to set arbitrary properties on Object.prototype. No authentication is required; if the attacker controls the path parameter passed to setIn, they can trigger the vulnerability. The commit fix adds assertions to block these dangerous keys [1][2].

Impact

Successful exploitation can cause prototype pollution, which may result in denial of service or, in certain runtime contexts, remote code execution. The Mend (formerly WhiteSource) advisory confirms the DoS and potential RCE impact [3].

Mitigation

The vulnerability is fixed in commit e431effa00195a6f06b111e09733cd1445a91a88 [2]. Users should update to a patched version of set-in. No workarounds are documented; the safest mitigation is to upgrade.

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
set-innpm
< 2.0.12.0.1

Affected products

2

Patches

1
e431effa0019

fix prototype pollution vulnerability

https://github.com/ahdinosaur/set-inMichael WilliamsNov 23, 2020via ghsa
3 files changed · +2765 3
  • index.js+18 0 modified
    @@ -16,13 +16,31 @@ function recursivelySetIn (object, path, value, index) {
     
       object = object || {}
     
    +  // https://stackoverflow.com/a/60850027
    +  assert.ok(
    +    path[index] !== '__proto__',
    +    'setIn: "__proto__" is disallowed in path due to possible prototype pollution attack.'
    +  )
    +  if (index < path.length - 1) {
    +    assert.ok(
    +      path[index] !== 'constructor' && path[index + 1] !== 'prototype',
    +      'setIn: ["constructor", "prototype"] is disallowed in path due to possible prototype pollution attack.'
    +    )
    +  }
    +
       var key = path[index]
     
       if (key === '-') {
         assert.ok(Array.isArray(object), 'setIn: "-" in path must correspond to array.')
         key = object.length
       }
     
    +  if (
    +    key === '__proto__' ||
    +    (key === 'constructor' && path[index + 1] === 'prototype')) {
    +
    +  }
    +
       var next = recursivelySetIn(object[key], path, value, ++index)
     
       return set(object, key, next)
    
  • package-lock.json+2732 0 added
    @@ -0,0 +1,2732 @@
    +{
    +  "name": "set-in",
    +  "version": "2.0.0",
    +  "lockfileVersion": 1,
    +  "requires": true,
    +  "dependencies": {
    +    "abbrev": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
    +      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
    +      "dev": true
    +    },
    +    "acorn": {
    +      "version": "5.7.4",
    +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
    +      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
    +      "dev": true
    +    },
    +    "acorn-to-esprima": {
    +      "version": "2.0.8",
    +      "resolved": "https://registry.npmjs.org/acorn-to-esprima/-/acorn-to-esprima-2.0.8.tgz",
    +      "integrity": "sha1-AD8MZC65ITL0F9NwjxStqCrfLrE=",
    +      "dev": true
    +    },
    +    "align-text": {
    +      "version": "0.1.4",
    +      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
    +      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
    +      "dev": true,
    +      "requires": {
    +        "kind-of": "^3.0.2",
    +        "longest": "^1.0.1",
    +        "repeat-string": "^1.5.2"
    +      }
    +    },
    +    "alter": {
    +      "version": "0.2.0",
    +      "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz",
    +      "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=",
    +      "dev": true,
    +      "requires": {
    +        "stable": "~0.1.3"
    +      }
    +    },
    +    "amdefine": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
    +      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
    +      "dev": true
    +    },
    +    "ansi-regex": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
    +      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
    +      "dev": true
    +    },
    +    "ansi-styles": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
    +      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
    +      "dev": true
    +    },
    +    "argparse": {
    +      "version": "1.0.10",
    +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
    +      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
    +      "dev": true,
    +      "requires": {
    +        "sprintf-js": "~1.0.2"
    +      }
    +    },
    +    "asap": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
    +      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
    +      "dev": true
    +    },
    +    "ast-traverse": {
    +      "version": "0.1.1",
    +      "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz",
    +      "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=",
    +      "dev": true
    +    },
    +    "ast-types": {
    +      "version": "0.9.6",
    +      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
    +      "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=",
    +      "dev": true
    +    },
    +    "babel-code-frame": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
    +      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
    +      "dev": true,
    +      "requires": {
    +        "chalk": "^1.1.3",
    +        "esutils": "^2.0.2",
    +        "js-tokens": "^3.0.2"
    +      },
    +      "dependencies": {
    +        "esutils": {
    +          "version": "2.0.3",
    +          "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
    +          "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
    +          "dev": true
    +        },
    +        "js-tokens": {
    +          "version": "3.0.2",
    +          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
    +          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "babel-core": {
    +      "version": "5.8.38",
    +      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.38.tgz",
    +      "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=",
    +      "dev": true,
    +      "requires": {
    +        "babel-plugin-constant-folding": "^1.0.1",
    +        "babel-plugin-dead-code-elimination": "^1.0.2",
    +        "babel-plugin-eval": "^1.0.1",
    +        "babel-plugin-inline-environment-variables": "^1.0.1",
    +        "babel-plugin-jscript": "^1.0.4",
    +        "babel-plugin-member-expression-literals": "^1.0.1",
    +        "babel-plugin-property-literals": "^1.0.1",
    +        "babel-plugin-proto-to-assign": "^1.0.3",
    +        "babel-plugin-react-constant-elements": "^1.0.3",
    +        "babel-plugin-react-display-name": "^1.0.3",
    +        "babel-plugin-remove-console": "^1.0.1",
    +        "babel-plugin-remove-debugger": "^1.0.1",
    +        "babel-plugin-runtime": "^1.0.7",
    +        "babel-plugin-undeclared-variables-check": "^1.0.2",
    +        "babel-plugin-undefined-to-void": "^1.1.6",
    +        "babylon": "^5.8.38",
    +        "bluebird": "^2.9.33",
    +        "chalk": "^1.0.0",
    +        "convert-source-map": "^1.1.0",
    +        "core-js": "^1.0.0",
    +        "debug": "^2.1.1",
    +        "detect-indent": "^3.0.0",
    +        "esutils": "^2.0.0",
    +        "fs-readdir-recursive": "^0.1.0",
    +        "globals": "^6.4.0",
    +        "home-or-tmp": "^1.0.0",
    +        "is-integer": "^1.0.4",
    +        "js-tokens": "1.0.1",
    +        "json5": "^0.4.0",
    +        "lodash": "^3.10.0",
    +        "minimatch": "^2.0.3",
    +        "output-file-sync": "^1.1.0",
    +        "path-exists": "^1.0.0",
    +        "path-is-absolute": "^1.0.0",
    +        "private": "^0.1.6",
    +        "regenerator": "0.8.40",
    +        "regexpu": "^1.3.0",
    +        "repeating": "^1.1.2",
    +        "resolve": "^1.1.6",
    +        "shebang-regex": "^1.0.0",
    +        "slash": "^1.0.0",
    +        "source-map": "^0.5.0",
    +        "source-map-support": "^0.2.10",
    +        "to-fast-properties": "^1.0.0",
    +        "trim-right": "^1.0.0",
    +        "try-resolve": "^1.0.0"
    +      },
    +      "dependencies": {
    +        "esutils": {
    +          "version": "2.0.3",
    +          "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
    +          "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "babel-messages": {
    +      "version": "6.23.0",
    +      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
    +      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
    +      "dev": true,
    +      "requires": {
    +        "babel-runtime": "^6.22.0"
    +      }
    +    },
    +    "babel-plugin-constant-folding": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz",
    +      "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4=",
    +      "dev": true
    +    },
    +    "babel-plugin-dead-code-elimination": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz",
    +      "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U=",
    +      "dev": true
    +    },
    +    "babel-plugin-eval": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz",
    +      "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo=",
    +      "dev": true
    +    },
    +    "babel-plugin-inline-environment-variables": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz",
    +      "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4=",
    +      "dev": true
    +    },
    +    "babel-plugin-jscript": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz",
    +      "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w=",
    +      "dev": true
    +    },
    +    "babel-plugin-member-expression-literals": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz",
    +      "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM=",
    +      "dev": true
    +    },
    +    "babel-plugin-property-literals": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz",
    +      "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY=",
    +      "dev": true
    +    },
    +    "babel-plugin-proto-to-assign": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz",
    +      "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=",
    +      "dev": true,
    +      "requires": {
    +        "lodash": "^3.9.3"
    +      }
    +    },
    +    "babel-plugin-react-constant-elements": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz",
    +      "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o=",
    +      "dev": true
    +    },
    +    "babel-plugin-react-display-name": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz",
    +      "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw=",
    +      "dev": true
    +    },
    +    "babel-plugin-remove-console": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz",
    +      "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c=",
    +      "dev": true
    +    },
    +    "babel-plugin-remove-debugger": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz",
    +      "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc=",
    +      "dev": true
    +    },
    +    "babel-plugin-runtime": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz",
    +      "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8=",
    +      "dev": true
    +    },
    +    "babel-plugin-undeclared-variables-check": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz",
    +      "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=",
    +      "dev": true,
    +      "requires": {
    +        "leven": "^1.0.2"
    +      }
    +    },
    +    "babel-plugin-undefined-to-void": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz",
    +      "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E=",
    +      "dev": true
    +    },
    +    "babel-runtime": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
    +      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
    +      "dev": true,
    +      "requires": {
    +        "core-js": "^2.4.0",
    +        "regenerator-runtime": "^0.11.0"
    +      },
    +      "dependencies": {
    +        "core-js": {
    +          "version": "2.6.11",
    +          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
    +          "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "babel-traverse": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
    +      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
    +      "dev": true,
    +      "requires": {
    +        "babel-code-frame": "^6.26.0",
    +        "babel-messages": "^6.23.0",
    +        "babel-runtime": "^6.26.0",
    +        "babel-types": "^6.26.0",
    +        "babylon": "^6.18.0",
    +        "debug": "^2.6.8",
    +        "globals": "^9.18.0",
    +        "invariant": "^2.2.2",
    +        "lodash": "^4.17.4"
    +      },
    +      "dependencies": {
    +        "babylon": {
    +          "version": "6.18.0",
    +          "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
    +          "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
    +          "dev": true
    +        },
    +        "globals": {
    +          "version": "9.18.0",
    +          "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
    +          "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
    +          "dev": true
    +        },
    +        "lodash": {
    +          "version": "4.17.20",
    +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
    +          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "babel-types": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
    +      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
    +      "dev": true,
    +      "requires": {
    +        "babel-runtime": "^6.26.0",
    +        "esutils": "^2.0.2",
    +        "lodash": "^4.17.4",
    +        "to-fast-properties": "^1.0.3"
    +      },
    +      "dependencies": {
    +        "esutils": {
    +          "version": "2.0.3",
    +          "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
    +          "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
    +          "dev": true
    +        },
    +        "lodash": {
    +          "version": "4.17.20",
    +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
    +          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "babylon": {
    +      "version": "5.8.38",
    +      "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz",
    +      "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0=",
    +      "dev": true
    +    },
    +    "balanced-match": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
    +      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
    +      "dev": true
    +    },
    +    "bluebird": {
    +      "version": "2.11.0",
    +      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
    +      "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
    +      "dev": true
    +    },
    +    "brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "dev": true,
    +      "requires": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "breakable": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz",
    +      "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=",
    +      "dev": true
    +    },
    +    "buffer-from": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
    +      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
    +      "dev": true
    +    },
    +    "call-bind": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz",
    +      "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==",
    +      "dev": true,
    +      "requires": {
    +        "function-bind": "^1.1.1",
    +        "get-intrinsic": "^1.0.0"
    +      }
    +    },
    +    "camelcase": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
    +      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
    +      "dev": true
    +    },
    +    "center-align": {
    +      "version": "0.1.3",
    +      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
    +      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
    +      "dev": true,
    +      "requires": {
    +        "align-text": "^0.1.3",
    +        "lazy-cache": "^1.0.3"
    +      }
    +    },
    +    "chalk": {
    +      "version": "1.1.3",
    +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
    +      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
    +      "dev": true,
    +      "requires": {
    +        "ansi-styles": "^2.2.1",
    +        "escape-string-regexp": "^1.0.2",
    +        "has-ansi": "^2.0.0",
    +        "strip-ansi": "^3.0.0",
    +        "supports-color": "^2.0.0"
    +      }
    +    },
    +    "cli-width": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz",
    +      "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=",
    +      "dev": true
    +    },
    +    "cliui": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
    +      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
    +      "dev": true,
    +      "requires": {
    +        "center-align": "^0.1.1",
    +        "right-align": "^0.1.1",
    +        "wordwrap": "0.0.2"
    +      },
    +      "dependencies": {
    +        "wordwrap": {
    +          "version": "0.0.2",
    +          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
    +          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "commander": {
    +      "version": "2.20.3",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
    +      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
    +      "dev": true
    +    },
    +    "commoner": {
    +      "version": "0.10.8",
    +      "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz",
    +      "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=",
    +      "dev": true,
    +      "requires": {
    +        "commander": "^2.5.0",
    +        "detective": "^4.3.1",
    +        "glob": "^5.0.15",
    +        "graceful-fs": "^4.1.2",
    +        "iconv-lite": "^0.4.5",
    +        "mkdirp": "^0.5.0",
    +        "private": "^0.1.6",
    +        "q": "^1.1.2",
    +        "recast": "^0.11.17"
    +      },
    +      "dependencies": {
    +        "esprima": {
    +          "version": "3.1.3",
    +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
    +          "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
    +          "dev": true
    +        },
    +        "recast": {
    +          "version": "0.11.23",
    +          "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
    +          "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
    +          "dev": true,
    +          "requires": {
    +            "ast-types": "0.9.6",
    +            "esprima": "~3.1.0",
    +            "private": "~0.1.5",
    +            "source-map": "~0.5.0"
    +          }
    +        }
    +      }
    +    },
    +    "concat-map": {
    +      "version": "0.0.1",
    +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
    +      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
    +      "dev": true
    +    },
    +    "concat-stream": {
    +      "version": "1.6.2",
    +      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
    +      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
    +      "dev": true,
    +      "requires": {
    +        "buffer-from": "^1.0.0",
    +        "inherits": "^2.0.3",
    +        "readable-stream": "^2.2.2",
    +        "typedarray": "^0.0.6"
    +      }
    +    },
    +    "config-chain": {
    +      "version": "1.1.12",
    +      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
    +      "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
    +      "dev": true,
    +      "requires": {
    +        "ini": "^1.3.4",
    +        "proto-list": "~1.2.1"
    +      }
    +    },
    +    "convert-source-map": {
    +      "version": "1.7.0",
    +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
    +      "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
    +      "dev": true,
    +      "requires": {
    +        "safe-buffer": "~5.1.1"
    +      }
    +    },
    +    "core-js": {
    +      "version": "1.2.7",
    +      "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
    +      "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
    +      "dev": true
    +    },
    +    "core-util-is": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
    +      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
    +      "dev": true
    +    },
    +    "d": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
    +      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
    +      "dev": true,
    +      "requires": {
    +        "es5-ext": "^0.10.50",
    +        "type": "^1.0.1"
    +      }
    +    },
    +    "debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "dev": true,
    +      "requires": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "debug-log": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
    +      "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
    +      "dev": true
    +    },
    +    "decamelize": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
    +      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
    +      "dev": true
    +    },
    +    "deep-equal": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
    +      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
    +      "dev": true,
    +      "requires": {
    +        "is-arguments": "^1.0.4",
    +        "is-date-object": "^1.0.1",
    +        "is-regex": "^1.0.4",
    +        "object-is": "^1.0.1",
    +        "object-keys": "^1.1.1",
    +        "regexp.prototype.flags": "^1.2.0"
    +      }
    +    },
    +    "deep-is": {
    +      "version": "0.1.3",
    +      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
    +      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
    +      "dev": true
    +    },
    +    "define-properties": {
    +      "version": "1.1.3",
    +      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
    +      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
    +      "dev": true,
    +      "requires": {
    +        "object-keys": "^1.0.12"
    +      }
    +    },
    +    "defined": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
    +      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
    +      "dev": true
    +    },
    +    "defs": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz",
    +      "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=",
    +      "dev": true,
    +      "requires": {
    +        "alter": "~0.2.0",
    +        "ast-traverse": "~0.1.1",
    +        "breakable": "~1.0.0",
    +        "esprima-fb": "~15001.1001.0-dev-harmony-fb",
    +        "simple-fmt": "~0.1.0",
    +        "simple-is": "~0.2.0",
    +        "stringmap": "~0.2.2",
    +        "stringset": "~0.2.1",
    +        "tryor": "~0.1.2",
    +        "yargs": "~3.27.0"
    +      },
    +      "dependencies": {
    +        "esprima-fb": {
    +          "version": "15001.1001.0-dev-harmony-fb",
    +          "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
    +          "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "deglob": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/deglob/-/deglob-1.1.2.tgz",
    +      "integrity": "sha1-dtV3wl/j9zKUEqK1nq3qV6xQDj8=",
    +      "dev": true,
    +      "requires": {
    +        "find-root": "^1.0.0",
    +        "glob": "^7.0.5",
    +        "ignore": "^3.0.9",
    +        "pkg-config": "^1.1.0",
    +        "run-parallel": "^1.1.2",
    +        "uniq": "^1.0.1",
    +        "xtend": "^4.0.0"
    +      },
    +      "dependencies": {
    +        "find-root": {
    +          "version": "1.1.0",
    +          "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
    +          "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
    +          "dev": true
    +        },
    +        "glob": {
    +          "version": "7.1.6",
    +          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
    +          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
    +          "dev": true,
    +          "requires": {
    +            "fs.realpath": "^1.0.0",
    +            "inflight": "^1.0.4",
    +            "inherits": "2",
    +            "minimatch": "^3.0.4",
    +            "once": "^1.3.0",
    +            "path-is-absolute": "^1.0.0"
    +          }
    +        },
    +        "minimatch": {
    +          "version": "3.0.4",
    +          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
    +          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
    +          "dev": true,
    +          "requires": {
    +            "brace-expansion": "^1.1.7"
    +          }
    +        }
    +      }
    +    },
    +    "detect-indent": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz",
    +      "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=",
    +      "dev": true,
    +      "requires": {
    +        "get-stdin": "^4.0.1",
    +        "minimist": "^1.1.0",
    +        "repeating": "^1.1.0"
    +      }
    +    },
    +    "detective": {
    +      "version": "4.7.1",
    +      "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
    +      "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
    +      "dev": true,
    +      "requires": {
    +        "acorn": "^5.2.1",
    +        "defined": "^1.0.0"
    +      }
    +    },
    +    "dezalgo": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
    +      "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
    +      "dev": true,
    +      "requires": {
    +        "asap": "^2.0.0",
    +        "wrappy": "1"
    +      }
    +    },
    +    "diff": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
    +      "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
    +      "dev": true
    +    },
    +    "disparity": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/disparity/-/disparity-2.0.0.tgz",
    +      "integrity": "sha1-V92stHMkrl9Y0swNqIbbTOnutxg=",
    +      "dev": true,
    +      "requires": {
    +        "ansi-styles": "^2.0.1",
    +        "diff": "^1.3.2"
    +      }
    +    },
    +    "doctrine": {
    +      "version": "0.6.4",
    +      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.6.4.tgz",
    +      "integrity": "sha1-gUKEkalC7xiwSSBW7aOADu5X1h0=",
    +      "dev": true,
    +      "requires": {
    +        "esutils": "^1.1.6",
    +        "isarray": "0.0.1"
    +      },
    +      "dependencies": {
    +        "isarray": {
    +          "version": "0.0.1",
    +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
    +          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "dotignore": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
    +      "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
    +      "dev": true,
    +      "requires": {
    +        "minimatch": "^3.0.4"
    +      },
    +      "dependencies": {
    +        "minimatch": {
    +          "version": "3.0.4",
    +          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
    +          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
    +          "dev": true,
    +          "requires": {
    +            "brace-expansion": "^1.1.7"
    +          }
    +        }
    +      }
    +    },
    +    "editorconfig": {
    +      "version": "0.15.3",
    +      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
    +      "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
    +      "dev": true,
    +      "requires": {
    +        "commander": "^2.19.0",
    +        "lru-cache": "^4.1.5",
    +        "semver": "^5.6.0",
    +        "sigmund": "^1.0.1"
    +      },
    +      "dependencies": {
    +        "semver": {
    +          "version": "5.7.1",
    +          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
    +          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "es-abstract": {
    +      "version": "1.18.0-next.1",
    +      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
    +      "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
    +      "dev": true,
    +      "requires": {
    +        "es-to-primitive": "^1.2.1",
    +        "function-bind": "^1.1.1",
    +        "has": "^1.0.3",
    +        "has-symbols": "^1.0.1",
    +        "is-callable": "^1.2.2",
    +        "is-negative-zero": "^2.0.0",
    +        "is-regex": "^1.1.1",
    +        "object-inspect": "^1.8.0",
    +        "object-keys": "^1.1.1",
    +        "object.assign": "^4.1.1",
    +        "string.prototype.trimend": "^1.0.1",
    +        "string.prototype.trimstart": "^1.0.1"
    +      },
    +      "dependencies": {
    +        "is-regex": {
    +          "version": "1.1.1",
    +          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
    +          "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
    +          "dev": true,
    +          "requires": {
    +            "has-symbols": "^1.0.1"
    +          }
    +        },
    +        "object-inspect": {
    +          "version": "1.8.0",
    +          "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
    +          "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "es-to-primitive": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
    +      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
    +      "dev": true,
    +      "requires": {
    +        "is-callable": "^1.1.4",
    +        "is-date-object": "^1.0.1",
    +        "is-symbol": "^1.0.2"
    +      }
    +    },
    +    "es5-ext": {
    +      "version": "0.10.53",
    +      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
    +      "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
    +      "dev": true,
    +      "requires": {
    +        "es6-iterator": "~2.0.3",
    +        "es6-symbol": "~3.1.3",
    +        "next-tick": "~1.0.0"
    +      }
    +    },
    +    "es6-iterator": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
    +      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
    +      "dev": true,
    +      "requires": {
    +        "d": "1",
    +        "es5-ext": "^0.10.35",
    +        "es6-symbol": "^3.1.1"
    +      }
    +    },
    +    "es6-map": {
    +      "version": "0.1.5",
    +      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
    +      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
    +      "dev": true,
    +      "requires": {
    +        "d": "1",
    +        "es5-ext": "~0.10.14",
    +        "es6-iterator": "~2.0.1",
    +        "es6-set": "~0.1.5",
    +        "es6-symbol": "~3.1.1",
    +        "event-emitter": "~0.3.5"
    +      }
    +    },
    +    "es6-set": {
    +      "version": "0.1.5",
    +      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
    +      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
    +      "dev": true,
    +      "requires": {
    +        "d": "1",
    +        "es5-ext": "~0.10.14",
    +        "es6-iterator": "~2.0.1",
    +        "es6-symbol": "3.1.1",
    +        "event-emitter": "~0.3.5"
    +      },
    +      "dependencies": {
    +        "es6-symbol": {
    +          "version": "3.1.1",
    +          "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
    +          "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
    +          "dev": true,
    +          "requires": {
    +            "d": "1",
    +            "es5-ext": "~0.10.14"
    +          }
    +        }
    +      }
    +    },
    +    "es6-symbol": {
    +      "version": "3.1.3",
    +      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
    +      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
    +      "dev": true,
    +      "requires": {
    +        "d": "^1.0.1",
    +        "ext": "^1.1.2"
    +      }
    +    },
    +    "es6-weak-map": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
    +      "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
    +      "dev": true,
    +      "requires": {
    +        "d": "1",
    +        "es5-ext": "^0.10.46",
    +        "es6-iterator": "^2.0.3",
    +        "es6-symbol": "^3.1.1"
    +      }
    +    },
    +    "escape-string-regexp": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
    +      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
    +      "dev": true
    +    },
    +    "escope": {
    +      "version": "3.6.0",
    +      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
    +      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
    +      "dev": true,
    +      "requires": {
    +        "es6-map": "^0.1.3",
    +        "es6-weak-map": "^2.0.1",
    +        "esrecurse": "^4.1.0",
    +        "estraverse": "^4.1.1"
    +      },
    +      "dependencies": {
    +        "estraverse": {
    +          "version": "4.3.0",
    +          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
    +          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "esformatter": {
    +      "version": "0.8.2",
    +      "resolved": "https://registry.npmjs.org/esformatter/-/esformatter-0.8.2.tgz",
    +      "integrity": "sha1-e6mIKqPtMIOfivds3fTxLaM3084=",
    +      "dev": true,
    +      "requires": {
    +        "debug": "^0.7.4",
    +        "disparity": "^2.0.0",
    +        "espree": "^2.2.4",
    +        "glob": "^5.0.3",
    +        "minimist": "^1.1.1",
    +        "mout": ">=0.9 <2.0",
    +        "npm-run": "^2.0.0",
    +        "resolve": "^1.1.5",
    +        "rocambole": ">=0.7 <2.0",
    +        "rocambole-indent": "^2.0.4",
    +        "rocambole-linebreak": "^1.0.0",
    +        "rocambole-node": "~1.0",
    +        "rocambole-token": "^1.1.2",
    +        "rocambole-whitespace": "^1.0.0",
    +        "stdin": "*",
    +        "strip-json-comments": "~0.1.1",
    +        "supports-color": "^1.3.1",
    +        "user-home": "^2.0.0"
    +      },
    +      "dependencies": {
    +        "debug": {
    +          "version": "0.7.4",
    +          "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
    +          "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
    +          "dev": true
    +        },
    +        "strip-json-comments": {
    +          "version": "0.1.3",
    +          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz",
    +          "integrity": "sha1-Fkxk43Coo8wAyeAbU55WmCPw7lQ=",
    +          "dev": true
    +        },
    +        "supports-color": {
    +          "version": "1.3.1",
    +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz",
    +          "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=",
    +          "dev": true
    +        },
    +        "user-home": {
    +          "version": "2.0.0",
    +          "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
    +          "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
    +          "dev": true,
    +          "requires": {
    +            "os-homedir": "^1.0.0"
    +          }
    +        }
    +      }
    +    },
    +    "esformatter-eol-last": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/esformatter-eol-last/-/esformatter-eol-last-1.0.0.tgz",
    +      "integrity": "sha1-RaeP9GIrHUnkT1a0mQV2amMpDAc=",
    +      "dev": true,
    +      "requires": {
    +        "string.prototype.endswith": "^0.2.0"
    +      }
    +    },
    +    "esformatter-ignore": {
    +      "version": "0.1.3",
    +      "resolved": "https://registry.npmjs.org/esformatter-ignore/-/esformatter-ignore-0.1.3.tgz",
    +      "integrity": "sha1-BNO4db+knd4ATMWN9va7w8BWfx4=",
    +      "dev": true
    +    },
    +    "esformatter-jsx": {
    +      "version": "2.3.11",
    +      "resolved": "https://registry.npmjs.org/esformatter-jsx/-/esformatter-jsx-2.3.11.tgz",
    +      "integrity": "sha1-QRxE7TJHVK+VquXe2FbVp+78td8=",
    +      "dev": true,
    +      "requires": {
    +        "babel-core": "^5.8.34",
    +        "esformatter-ignore": "^0.1.3",
    +        "extend": "^2.0.1",
    +        "fresh-falafel": "^1.2.0",
    +        "js-beautify": "^1.5.10"
    +      }
    +    },
    +    "esformatter-literal-notation": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/esformatter-literal-notation/-/esformatter-literal-notation-1.0.1.tgz",
    +      "integrity": "sha1-cQ57QgF1/j9+WvrVu60ykQOELi8=",
    +      "dev": true,
    +      "requires": {
    +        "rocambole": "^0.3.6",
    +        "rocambole-token": "^1.2.1"
    +      },
    +      "dependencies": {
    +        "esprima": {
    +          "version": "1.0.4",
    +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
    +          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
    +          "dev": true
    +        },
    +        "rocambole": {
    +          "version": "0.3.6",
    +          "resolved": "https://registry.npmjs.org/rocambole/-/rocambole-0.3.6.tgz",
    +          "integrity": "sha1-Teu/WUMUS8e2AG2Vvo+swLdDUqc=",
    +          "dev": true,
    +          "requires": {
    +            "esprima": "~1.0"
    +          }
    +        }
    +      }
    +    },
    +    "esformatter-parser": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/esformatter-parser/-/esformatter-parser-1.0.0.tgz",
    +      "integrity": "sha1-CFQHLQSHU57TnK442KVDLBfsEdM=",
    +      "dev": true,
    +      "requires": {
    +        "acorn-to-esprima": "^2.0.8",
    +        "babel-traverse": "^6.9.0",
    +        "babylon": "^6.8.0",
    +        "rocambole": "^0.7.0"
    +      },
    +      "dependencies": {
    +        "babylon": {
    +          "version": "6.18.0",
    +          "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
    +          "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "esformatter-quotes": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/esformatter-quotes/-/esformatter-quotes-1.1.0.tgz",
    +      "integrity": "sha1-4ixsRFx/MGBB2BybnlH8psv6yoI=",
    +      "dev": true
    +    },
    +    "esformatter-semicolon-first": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/esformatter-semicolon-first/-/esformatter-semicolon-first-1.2.0.tgz",
    +      "integrity": "sha1-47US0dTgcxDqvKv1cnfqfIpW4kI=",
    +      "dev": true,
    +      "requires": {
    +        "esformatter-parser": "^1.0",
    +        "rocambole": ">=0.6.0 <2.0",
    +        "rocambole-linebreak": "^1.0.2",
    +        "rocambole-token": "^1.2.1"
    +      }
    +    },
    +    "esformatter-spaced-lined-comment": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/esformatter-spaced-lined-comment/-/esformatter-spaced-lined-comment-2.0.1.tgz",
    +      "integrity": "sha1-3F80B/k8KV4eVkRr00RWDaXm3Kw=",
    +      "dev": true
    +    },
    +    "eslint": {
    +      "version": "0.21.2",
    +      "resolved": "https://registry.npmjs.org/eslint/-/eslint-0.21.2.tgz",
    +      "integrity": "sha1-vt3yR4ANSGf2sQUdIkvbg8LSAcc=",
    +      "dev": true,
    +      "requires": {
    +        "chalk": "^1.0.0",
    +        "concat-stream": "^1.4.6",
    +        "debug": "^2.1.1",
    +        "doctrine": "^0.6.2",
    +        "escape-string-regexp": "^1.0.2",
    +        "escope": "^3.0.1",
    +        "espree": "^2.0.1",
    +        "estraverse": "^2.0.0",
    +        "estraverse-fb": "^1.3.1",
    +        "globals": "^6.1.0",
    +        "inquirer": "^0.8.2",
    +        "js-yaml": "^3.2.5",
    +        "minimatch": "^2.0.1",
    +        "mkdirp": "^0.5.0",
    +        "object-assign": "^2.0.0",
    +        "optionator": "^0.5.0",
    +        "path-is-absolute": "^1.0.0",
    +        "strip-json-comments": "~1.0.1",
    +        "text-table": "~0.2.0",
    +        "user-home": "^1.0.0",
    +        "xml-escape": "~1.0.0"
    +      }
    +    },
    +    "eslint-config-standard": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-1.3.1.tgz",
    +      "integrity": "sha1-8WFzxKvrtWn58KWE/Kk6UOrG+ME=",
    +      "dev": true
    +    },
    +    "eslint-plugin-react": {
    +      "version": "2.7.1",
    +      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-2.7.1.tgz",
    +      "integrity": "sha1-XW8bylB9E4e2WTwjCZivBPC5rtY=",
    +      "dev": true
    +    },
    +    "espree": {
    +      "version": "2.2.5",
    +      "resolved": "https://registry.npmjs.org/espree/-/espree-2.2.5.tgz",
    +      "integrity": "sha1-32kbkxCIlAKuspzAZnCMVmkLhUs=",
    +      "dev": true
    +    },
    +    "esrecurse": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
    +      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
    +      "dev": true,
    +      "requires": {
    +        "estraverse": "^5.2.0"
    +      },
    +      "dependencies": {
    +        "estraverse": {
    +          "version": "5.2.0",
    +          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
    +          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "estraverse": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-2.0.0.tgz",
    +      "integrity": "sha1-WuRpYyQ2ACBmdMyySgnhZnT83KE=",
    +      "dev": true
    +    },
    +    "estraverse-fb": {
    +      "version": "1.3.2",
    +      "resolved": "https://registry.npmjs.org/estraverse-fb/-/estraverse-fb-1.3.2.tgz",
    +      "integrity": "sha1-0yOky15awzHOoDNBOpJT4WQ+B8Q=",
    +      "dev": true
    +    },
    +    "esutils": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz",
    +      "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=",
    +      "dev": true
    +    },
    +    "event-emitter": {
    +      "version": "0.3.5",
    +      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
    +      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
    +      "dev": true,
    +      "requires": {
    +        "d": "1",
    +        "es5-ext": "~0.10.14"
    +      }
    +    },
    +    "ext": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
    +      "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
    +      "dev": true,
    +      "requires": {
    +        "type": "^2.0.0"
    +      },
    +      "dependencies": {
    +        "type": {
    +          "version": "2.1.0",
    +          "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
    +          "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "extend": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.2.tgz",
    +      "integrity": "sha512-AgFD4VU+lVLP6vjnlNfF7OeInLTyeyckCNPEsuxz1vi786UuK/nk6ynPuhn/h+Ju9++TQyr5EpLRI14fc1QtTQ==",
    +      "dev": true
    +    },
    +    "fast-levenshtein": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz",
    +      "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=",
    +      "dev": true
    +    },
    +    "figures": {
    +      "version": "1.7.0",
    +      "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
    +      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
    +      "dev": true,
    +      "requires": {
    +        "escape-string-regexp": "^1.0.5",
    +        "object-assign": "^4.1.0"
    +      },
    +      "dependencies": {
    +        "object-assign": {
    +          "version": "4.1.1",
    +          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
    +          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "find-root": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz",
    +      "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=",
    +      "dev": true
    +    },
    +    "for-each": {
    +      "version": "0.3.3",
    +      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
    +      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
    +      "dev": true,
    +      "requires": {
    +        "is-callable": "^1.1.3"
    +      }
    +    },
    +    "foreach": {
    +      "version": "2.0.5",
    +      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
    +      "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
    +      "dev": true
    +    },
    +    "fresh-falafel": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/fresh-falafel/-/fresh-falafel-1.2.0.tgz",
    +      "integrity": "sha1-WWbe6V+zXSopsS0vJRaLFyJeS2w=",
    +      "dev": true,
    +      "requires": {
    +        "acorn": "^1.0.3",
    +        "foreach": "^2.0.5",
    +        "isarray": "0.0.1",
    +        "object-keys": "^1.0.6"
    +      },
    +      "dependencies": {
    +        "acorn": {
    +          "version": "1.2.2",
    +          "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
    +          "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=",
    +          "dev": true
    +        },
    +        "isarray": {
    +          "version": "0.0.1",
    +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
    +          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "fs-readdir-recursive": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz",
    +      "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=",
    +      "dev": true
    +    },
    +    "fs.realpath": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
    +      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
    +      "dev": true
    +    },
    +    "function-bind": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
    +      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
    +      "dev": true
    +    },
    +    "get-intrinsic": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz",
    +      "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==",
    +      "dev": true,
    +      "requires": {
    +        "function-bind": "^1.1.1",
    +        "has": "^1.0.3",
    +        "has-symbols": "^1.0.1"
    +      }
    +    },
    +    "get-stdin": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
    +      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
    +      "dev": true
    +    },
    +    "glob": {
    +      "version": "5.0.15",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
    +      "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
    +      "dev": true,
    +      "requires": {
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "2 || 3",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      }
    +    },
    +    "globals": {
    +      "version": "6.4.1",
    +      "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz",
    +      "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08=",
    +      "dev": true
    +    },
    +    "graceful-fs": {
    +      "version": "4.2.4",
    +      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
    +      "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
    +      "dev": true
    +    },
    +    "has": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
    +      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
    +      "dev": true,
    +      "requires": {
    +        "function-bind": "^1.1.1"
    +      }
    +    },
    +    "has-ansi": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
    +      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
    +      "dev": true,
    +      "requires": {
    +        "ansi-regex": "^2.0.0"
    +      }
    +    },
    +    "has-symbols": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
    +      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
    +      "dev": true
    +    },
    +    "home-or-tmp": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz",
    +      "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=",
    +      "dev": true,
    +      "requires": {
    +        "os-tmpdir": "^1.0.1",
    +        "user-home": "^1.1.1"
    +      }
    +    },
    +    "iconv-lite": {
    +      "version": "0.4.24",
    +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
    +      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
    +      "dev": true,
    +      "requires": {
    +        "safer-buffer": ">= 2.1.2 < 3"
    +      }
    +    },
    +    "ignore": {
    +      "version": "3.3.10",
    +      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
    +      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
    +      "dev": true
    +    },
    +    "inflight": {
    +      "version": "1.0.6",
    +      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
    +      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
    +      "dev": true,
    +      "requires": {
    +        "once": "^1.3.0",
    +        "wrappy": "1"
    +      }
    +    },
    +    "inherits": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
    +      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
    +      "dev": true
    +    },
    +    "ini": {
    +      "version": "1.3.5",
    +      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
    +      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
    +      "dev": true
    +    },
    +    "inquirer": {
    +      "version": "0.8.5",
    +      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.8.5.tgz",
    +      "integrity": "sha1-29dAz2yjtzEpamPOb22WGFHzNt8=",
    +      "dev": true,
    +      "requires": {
    +        "ansi-regex": "^1.1.1",
    +        "chalk": "^1.0.0",
    +        "cli-width": "^1.0.1",
    +        "figures": "^1.3.5",
    +        "lodash": "^3.3.1",
    +        "readline2": "^0.1.1",
    +        "rx": "^2.4.3",
    +        "through": "^2.3.6"
    +      },
    +      "dependencies": {
    +        "ansi-regex": {
    +          "version": "1.1.1",
    +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz",
    +          "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "invariant": {
    +      "version": "2.2.4",
    +      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
    +      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
    +      "dev": true,
    +      "requires": {
    +        "loose-envify": "^1.0.0"
    +      }
    +    },
    +    "invert-kv": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
    +      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
    +      "dev": true
    +    },
    +    "is-arguments": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
    +      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
    +      "dev": true
    +    },
    +    "is-buffer": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
    +      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
    +      "dev": true
    +    },
    +    "is-callable": {
    +      "version": "1.2.2",
    +      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
    +      "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==",
    +      "dev": true
    +    },
    +    "is-core-module": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
    +      "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
    +      "dev": true,
    +      "requires": {
    +        "has": "^1.0.3"
    +      }
    +    },
    +    "is-date-object": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
    +      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
    +      "dev": true
    +    },
    +    "is-finite": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
    +      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
    +      "dev": true
    +    },
    +    "is-integer": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz",
    +      "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=",
    +      "dev": true,
    +      "requires": {
    +        "is-finite": "^1.0.0"
    +      }
    +    },
    +    "is-negative-zero": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz",
    +      "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=",
    +      "dev": true
    +    },
    +    "is-regex": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
    +      "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
    +      "dev": true,
    +      "requires": {
    +        "has": "^1.0.3"
    +      }
    +    },
    +    "is-symbol": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
    +      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
    +      "dev": true,
    +      "requires": {
    +        "has-symbols": "^1.0.1"
    +      }
    +    },
    +    "isarray": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
    +      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
    +      "dev": true
    +    },
    +    "isexe": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
    +      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
    +      "dev": true
    +    },
    +    "js-beautify": {
    +      "version": "1.13.0",
    +      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.0.tgz",
    +      "integrity": "sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA==",
    +      "dev": true,
    +      "requires": {
    +        "config-chain": "^1.1.12",
    +        "editorconfig": "^0.15.3",
    +        "glob": "^7.1.3",
    +        "mkdirp": "^1.0.4",
    +        "nopt": "^5.0.0"
    +      },
    +      "dependencies": {
    +        "glob": {
    +          "version": "7.1.6",
    +          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
    +          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
    +          "dev": true,
    +          "requires": {
    +            "fs.realpath": "^1.0.0",
    +            "inflight": "^1.0.4",
    +            "inherits": "2",
    +            "minimatch": "^3.0.4",
    +            "once": "^1.3.0",
    +            "path-is-absolute": "^1.0.0"
    +          }
    +        },
    +        "minimatch": {
    +          "version": "3.0.4",
    +          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
    +          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
    +          "dev": true,
    +          "requires": {
    +            "brace-expansion": "^1.1.7"
    +          }
    +        },
    +        "mkdirp": {
    +          "version": "1.0.4",
    +          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
    +          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "js-tokens": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz",
    +      "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=",
    +      "dev": true
    +    },
    +    "js-yaml": {
    +      "version": "3.14.0",
    +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
    +      "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
    +      "dev": true,
    +      "requires": {
    +        "argparse": "^1.0.7",
    +        "esprima": "^4.0.0"
    +      },
    +      "dependencies": {
    +        "esprima": {
    +          "version": "4.0.1",
    +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
    +          "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "jsesc": {
    +      "version": "0.5.0",
    +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
    +      "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
    +      "dev": true
    +    },
    +    "json5": {
    +      "version": "0.4.0",
    +      "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz",
    +      "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=",
    +      "dev": true
    +    },
    +    "kind-of": {
    +      "version": "3.2.2",
    +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
    +      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
    +      "dev": true,
    +      "requires": {
    +        "is-buffer": "^1.1.5"
    +      }
    +    },
    +    "lazy-cache": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
    +      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
    +      "dev": true
    +    },
    +    "lcid": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
    +      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
    +      "dev": true,
    +      "requires": {
    +        "invert-kv": "^1.0.0"
    +      }
    +    },
    +    "leven": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz",
    +      "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=",
    +      "dev": true
    +    },
    +    "levn": {
    +      "version": "0.2.5",
    +      "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz",
    +      "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=",
    +      "dev": true,
    +      "requires": {
    +        "prelude-ls": "~1.1.0",
    +        "type-check": "~0.3.1"
    +      }
    +    },
    +    "lodash": {
    +      "version": "3.10.1",
    +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
    +      "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
    +      "dev": true
    +    },
    +    "longest": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
    +      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
    +      "dev": true
    +    },
    +    "loose-envify": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
    +      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
    +      "dev": true,
    +      "requires": {
    +        "js-tokens": "^3.0.0 || ^4.0.0"
    +      },
    +      "dependencies": {
    +        "js-tokens": {
    +          "version": "4.0.0",
    +          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
    +          "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
    +          "dev": true
    +        }
    +      }
    +    },
    +    "lru-cache": {
    +      "version": "4.1.5",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
    +      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
    +      "dev": true,
    +      "requires": {
    +        "pseudomap": "^1.0.2",
    +        "yallist": "^2.1.2"
    +      }
    +    },
    +    "minimatch": {
    +      "version": "2.0.10",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
    +      "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
    +      "dev": true,
    +      "requires": {
    +        "brace-expansion": "^1.0.0"
    +      }
    +    },
    +    "minimist": {
    +      "version": "1.2.5",
    +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
    +      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
    +      "dev": true
    +    },
    +    "mkdirp": {
    +      "version": "0.5.5",
    +      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
    +      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
    +      "dev": true,
    +      "requires": {
    +        "minimist": "^1.2.5"
    +      }
    +    },
    +    "mout": {
    +      "version": "1.2.2",
    +      "resolved": "https://registry.npmjs.org/mout/-/mout-1.2.2.tgz",
    +      "integrity": "sha512-w0OUxFEla6z3d7sVpMZGBCpQvYh8PHS1wZ6Wu9GNKHMpAHWJ0if0LsQZh3DlOqw55HlhJEOMLpFnwtxp99Y5GA==",
    +      "dev": true
    +    },
    +    "ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
    +      "dev": true
    +    },
    +    "mute-stream": {
    +      "version": "0.0.4",
    +      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz",
    +      "integrity": "sha1-qSGZYKbV1dBGWXruUSUsZlX3F34=",
    +      "dev": true
    +    },
    +    "next-tick": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
    +      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
    +      "dev": true
    +    },
    +    "nopt": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
    +      "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
    +      "dev": true,
    +      "requires": {
    +        "abbrev": "1"
    +      }
    +    },
    +    "npm-path": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-1.1.0.tgz",
    +      "integrity": "sha1-BHSuAEGcMn1UcBt88s0F3Ii+EUA=",
    +      "dev": true,
    +      "requires": {
    +        "which": "^1.2.4"
    +      }
    +    },
    +    "npm-run": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/npm-run/-/npm-run-2.0.0.tgz",
    +      "integrity": "sha1-KN/ArV4uRv4ISOK9WN3wAue3PBU=",
    +      "dev": true,
    +      "requires": {
    +        "minimist": "^1.1.1",
    +        "npm-path": "^1.0.1",
    +        "npm-which": "^2.0.0",
    +        "serializerr": "^1.0.1",
    +        "spawn-sync": "^1.0.5",
    +        "sync-exec": "^0.5.0"
    +      }
    +    },
    +    "npm-which": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-2.0.0.tgz",
    +      "integrity": "sha1-DEaYIWC3gwk2YdHQG9RJbS/qu6w=",
    +      "dev": true,
    +      "requires": {
    +        "commander": "^2.2.0",
    +        "npm-path": "^1.0.0",
    
    ... [truncated]
    
  • test/index.js+15 3 modified
    @@ -2,9 +2,9 @@ const test = require('tape')
     const setIn = require('../')
     
     test('non-Array path', function (t) {
    -  t.throws(() => setIn({ 'a': { 'b': 'c' }}, undefined))
    -  t.throws(() => setIn({ 'a': { 'b': 'c' }}, 'a.b'))
    -  t.throws(() => setIn({ 'a': { 'b': 'c' }}, { 'a': 'b'}))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, undefined, 'x'))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, 'a.b', 'x'))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, { 'a': 'b'}, 'x'))
       t.end()
     })
     
    @@ -175,3 +175,15 @@ test('object with custom get function', function (t) {
       t.end()
     })
     */
    +
    +test('prototype pollution', function (t) {
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, ['__proto__'], { a: 'x' }))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, ['__proto__', 'a'], 'x'))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, ['a', '__proto__'], 'x'))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, ['constructor', 'prototype'], { a: 'x' }))
    +  t.throws(() => setIn({ 'a': { 'b': 'c' }}, ['constructor', 'prototype', 'a'], 'x'))
    +  setIn({ 'a': { 'b': 'c' }}, ['prototype', 'a'], 'x')
    +  setIn({ 'a': { 'b': 'c' }}, ['constructor'], 'x')
    +  t.end()
    +})
    +
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.