├── .babelrc ├── .eslintrc ├── .gitignore ├── .nvmrc ├── .travis.yml ├── README.md ├── assets ├── favicon.ico └── kraken.png ├── lib └── iban.js ├── logo.png ├── npm-shrinkwrap.json ├── package.json ├── src ├── client.jsx ├── components │ ├── Application.jsx │ ├── Balance.jsx │ ├── EnterAddress.jsx │ ├── EnterAmount.jsx │ ├── LoadWallet.jsx │ ├── Sent.jsx │ ├── Stage.jsx │ └── WalletPassword.jsx ├── decryptSeed.js ├── deposit.js ├── loadWallet.js ├── overrideSendTransaction.js ├── passwordToKey.js ├── privateKeyToPublicKey.js ├── publicKeyToAddress.js ├── seedToPrivateKey.js ├── sendIbanTransaction.js └── sha3.js ├── styles └── index.styl ├── tests ├── decryptSeed.js ├── deposit.js ├── index.js ├── integration │ ├── test.js │ └── wallet.json ├── passwordToKey.js ├── privateKeyToPublicKey.js ├── publicKeyToAddress.js ├── seedToPrivateKey.js └── txToRaw.js └── webpack ├── dev.config.js ├── hotDev.config.js ├── makeConfig.js ├── prod.config.js └── test.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "stage": 0 3 | } 4 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", // https://github.com/babel/babel-eslint 3 | "plugins": [ 4 | "react" // https://github.com/yannickcr/eslint-plugin-react 5 | ], 6 | "env": { // http://eslint.org/docs/user-guide/configuring.html#specifying-environments 7 | "browser": true, // browser global variables 8 | "node": true // Node.js global variables and Node.js-specific rules 9 | }, 10 | "ecmaFeatures": { 11 | "arrowFunctions": true, 12 | "blockBindings": true, 13 | "classes": true, 14 | "defaultParams": true, 15 | "destructuring": true, 16 | "forOf": true, 17 | "generators": false, 18 | "modules": true, 19 | "objectLiteralComputedProperties": true, 20 | "objectLiteralDuplicateProperties": false, 21 | "objectLiteralShorthandMethods": true, 22 | "objectLiteralShorthandProperties": true, 23 | "spread": true, 24 | "superInFunctions": true, 25 | "templateStrings": true, 26 | "jsx": true 27 | }, 28 | "rules": { 29 | /** 30 | * Strict mode 31 | */ 32 | // babel inserts "use strict"; for us 33 | "strict": [2, "never"], // http://eslint.org/docs/rules/strict 34 | 35 | /** 36 | * ES6 37 | */ 38 | "no-var": 2, // http://eslint.org/docs/rules/no-var 39 | "prefer-const": 2, // http://eslint.org/docs/rules/prefer-const 40 | 41 | /** 42 | * Variables 43 | */ 44 | "no-shadow": 2, // http://eslint.org/docs/rules/no-shadow 45 | "no-shadow-restricted-names": 2, // http://eslint.org/docs/rules/no-shadow-restricted-names 46 | "no-unused-vars": [2, { // http://eslint.org/docs/rules/no-unused-vars 47 | "vars": "local", 48 | "args": "after-used" 49 | }], 50 | "no-use-before-define": 2, // http://eslint.org/docs/rules/no-use-before-define 51 | 52 | /** 53 | * Possible errors 54 | */ 55 | "comma-dangle": [2, "always-multiline"], // http://eslint.org/docs/rules/comma-dangle 56 | "no-cond-assign": [2, "always"], // http://eslint.org/docs/rules/no-cond-assign 57 | "no-console": 1, // http://eslint.org/docs/rules/no-console 58 | "no-debugger": 1, // http://eslint.org/docs/rules/no-debugger 59 | "no-alert": 1, // http://eslint.org/docs/rules/no-alert 60 | "no-constant-condition": 1, // http://eslint.org/docs/rules/no-constant-condition 61 | "no-dupe-keys": 2, // http://eslint.org/docs/rules/no-dupe-keys 62 | "no-duplicate-case": 2, // http://eslint.org/docs/rules/no-duplicate-case 63 | "no-empty": 2, // http://eslint.org/docs/rules/no-empty 64 | "no-ex-assign": 2, // http://eslint.org/docs/rules/no-ex-assign 65 | "no-extra-boolean-cast": 0, // http://eslint.org/docs/rules/no-extra-boolean-cast 66 | "no-extra-semi": 2, // http://eslint.org/docs/rules/no-extra-semi 67 | "no-func-assign": 2, // http://eslint.org/docs/rules/no-func-assign 68 | "no-inner-declarations": 2, // http://eslint.org/docs/rules/no-inner-declarations 69 | "no-invalid-regexp": 2, // http://eslint.org/docs/rules/no-invalid-regexp 70 | "no-irregular-whitespace": 2, // http://eslint.org/docs/rules/no-irregular-whitespace 71 | "no-obj-calls": 2, // http://eslint.org/docs/rules/no-obj-calls 72 | "no-reserved-keys": 2, // http://eslint.org/docs/rules/no-reserved-keys 73 | "no-sparse-arrays": 2, // http://eslint.org/docs/rules/no-sparse-arrays 74 | "no-unreachable": 2, // http://eslint.org/docs/rules/no-unreachable 75 | "use-isnan": 2, // http://eslint.org/docs/rules/use-isnan 76 | "block-scoped-var": 2, // http://eslint.org/docs/rules/block-scoped-var 77 | 78 | /** 79 | * Best practices 80 | */ 81 | "consistent-return": 2, // http://eslint.org/docs/rules/consistent-return 82 | "curly": [2, "multi-line"], // http://eslint.org/docs/rules/curly 83 | "default-case": 2, // http://eslint.org/docs/rules/default-case 84 | "dot-notation": [2, { // http://eslint.org/docs/rules/dot-notation 85 | "allowKeywords": true 86 | }], 87 | "eqeqeq": 2, // http://eslint.org/docs/rules/eqeqeq 88 | "guard-for-in": 2, // http://eslint.org/docs/rules/guard-for-in 89 | "no-caller": 2, // http://eslint.org/docs/rules/no-caller 90 | "no-else-return": 2, // http://eslint.org/docs/rules/no-else-return 91 | "no-eq-null": 2, // http://eslint.org/docs/rules/no-eq-null 92 | "no-eval": 2, // http://eslint.org/docs/rules/no-eval 93 | "no-extend-native": 2, // http://eslint.org/docs/rules/no-extend-native 94 | "no-extra-bind": 2, // http://eslint.org/docs/rules/no-extra-bind 95 | "no-fallthrough": 2, // http://eslint.org/docs/rules/no-fallthrough 96 | "no-floating-decimal": 2, // http://eslint.org/docs/rules/no-floating-decimal 97 | "no-implied-eval": 2, // http://eslint.org/docs/rules/no-implied-eval 98 | "no-lone-blocks": 2, // http://eslint.org/docs/rules/no-lone-blocks 99 | "no-loop-func": 2, // http://eslint.org/docs/rules/no-loop-func 100 | "no-multi-str": 2, // http://eslint.org/docs/rules/no-multi-str 101 | "no-native-reassign": 2, // http://eslint.org/docs/rules/no-native-reassign 102 | "no-new": 2, // http://eslint.org/docs/rules/no-new 103 | "no-new-func": 2, // http://eslint.org/docs/rules/no-new-func 104 | "no-new-wrappers": 2, // http://eslint.org/docs/rules/no-new-wrappers 105 | "no-octal": 2, // http://eslint.org/docs/rules/no-octal 106 | "no-octal-escape": 2, // http://eslint.org/docs/rules/no-octal-escape 107 | "no-param-reassign": 2, // http://eslint.org/docs/rules/no-param-reassign 108 | "no-proto": 2, // http://eslint.org/docs/rules/no-proto 109 | "no-redeclare": 2, // http://eslint.org/docs/rules/no-redeclare 110 | "no-return-assign": 2, // http://eslint.org/docs/rules/no-return-assign 111 | "no-script-url": 2, // http://eslint.org/docs/rules/no-script-url 112 | "no-self-compare": 2, // http://eslint.org/docs/rules/no-self-compare 113 | "no-sequences": 2, // http://eslint.org/docs/rules/no-sequences 114 | "no-throw-literal": 2, // http://eslint.org/docs/rules/no-throw-literal 115 | "no-with": 2, // http://eslint.org/docs/rules/no-with 116 | "radix": 2, // http://eslint.org/docs/rules/radix 117 | "vars-on-top": 2, // http://eslint.org/docs/rules/vars-on-top 118 | "wrap-iife": [2, "any"], // http://eslint.org/docs/rules/wrap-iife 119 | "yoda": 2, // http://eslint.org/docs/rules/yoda 120 | 121 | /** 122 | * Style 123 | */ 124 | "indent": [2, 2], // http://eslint.org/docs/rules/indent 125 | "brace-style": [2, // http://eslint.org/docs/rules/brace-style 126 | "1tbs", { 127 | "allowSingleLine": true 128 | }], 129 | "quotes": [ 130 | 2, "single", "avoid-escape" // http://eslint.org/docs/rules/quotes 131 | ], 132 | "camelcase": [2, { // http://eslint.org/docs/rules/camelcase 133 | "properties": "never" 134 | }], 135 | "comma-spacing": [2, { // http://eslint.org/docs/rules/comma-spacing 136 | "before": false, 137 | "after": true 138 | }], 139 | "comma-style": [2, "last"], // http://eslint.org/docs/rules/comma-style 140 | "eol-last": 2, // http://eslint.org/docs/rules/eol-last 141 | "func-names": 1, // http://eslint.org/docs/rules/func-names 142 | "key-spacing": [2, { // http://eslint.org/docs/rules/key-spacing 143 | "beforeColon": false, 144 | "afterColon": true 145 | }], 146 | "new-cap": [2, { // http://eslint.org/docs/rules/new-cap 147 | "newIsCap": true 148 | }], 149 | "no-multiple-empty-lines": [2, { // http://eslint.org/docs/rules/no-multiple-empty-lines 150 | "max": 2 151 | }], 152 | "no-nested-ternary": 2, // http://eslint.org/docs/rules/no-nested-ternary 153 | "no-new-object": 2, // http://eslint.org/docs/rules/no-new-object 154 | "no-spaced-func": 2, // http://eslint.org/docs/rules/no-spaced-func 155 | "no-trailing-spaces": 2, // http://eslint.org/docs/rules/no-trailing-spaces 156 | "no-wrap-func": 2, // http://eslint.org/docs/rules/no-wrap-func 157 | "no-underscore-dangle": 0, // http://eslint.org/docs/rules/no-underscore-dangle 158 | "one-var": [2, "never"], // http://eslint.org/docs/rules/one-var 159 | "padded-blocks": [2, "never"], // http://eslint.org/docs/rules/padded-blocks 160 | "semi": [2, "always"], // http://eslint.org/docs/rules/semi 161 | "semi-spacing": [2, { // http://eslint.org/docs/rules/semi-spacing 162 | "before": false, 163 | "after": true 164 | }], 165 | "space-after-keywords": 2, // http://eslint.org/docs/rules/space-after-keywords 166 | "space-before-blocks": 2, // http://eslint.org/docs/rules/space-before-blocks 167 | "space-before-function-paren": [2, "never"], // http://eslint.org/docs/rules/space-before-function-paren 168 | "space-infix-ops": 2, // http://eslint.org/docs/rules/space-infix-ops 169 | "space-return-throw-case": 2, // http://eslint.org/docs/rules/space-return-throw-case 170 | "spaced-line-comment": 2, // http://eslint.org/docs/rules/spaced-line-comment 171 | 172 | /** 173 | * JSX style 174 | */ 175 | "react/display-name": 0, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/display-name.md 176 | "react/jsx-boolean-value": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md 177 | "react/jsx-quotes": [2, "double"], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-quotes.md 178 | "react/jsx-no-undef": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md 179 | "react/jsx-sort-props": 0, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md 180 | "react/jsx-sort-prop-types": 0, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-sort-prop-types.md 181 | "react/jsx-uses-react": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md 182 | "react/jsx-uses-vars": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md 183 | "react/no-did-mount-set-state": [2, "allow-in-func"], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md 184 | "react/no-did-update-set-state": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md 185 | "react/no-multi-comp": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md 186 | "react/no-unknown-property": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md 187 | "react/prop-types": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prop-types.md 188 | "react/react-in-jsx-scope": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md 189 | "react/self-closing-comp": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md 190 | "react/wrap-multilines": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/wrap-multilines.md 191 | "react/sort-comp": [2, { // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-comp.md 192 | "order": [ 193 | "displayName", 194 | "propTypes", 195 | "contextTypes", 196 | "childContextTypes", 197 | "mixins", 198 | "statics", 199 | "defaultProps", 200 | "constructor", 201 | "getDefaultProps", 202 | "getInitialState", 203 | "getChildContext", 204 | "componentWillMount", 205 | "componentDidMount", 206 | "componentWillReceiveProps", 207 | "shouldComponentUpdate", 208 | "componentWillUpdate", 209 | "componentDidUpdate", 210 | "componentWillUnmount", 211 | "/^on.+$/", 212 | "/^get.+$/", 213 | "/^render.+$/", 214 | "render" 215 | ] 216 | }] 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git 27 | node_modules 28 | 29 | build 30 | tmp 31 | vendor 32 | .DS_Store 33 | tools 34 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | iojs-v2.5.0 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.12" 4 | - "0.11" 5 | - "0.10" 6 | - "iojs-v2.5.0" 7 | env: 8 | - GETH_RPC_URL="https://geth.kraken.com:2096" KRAKEN_ADDRESS="2910543af39aba0cd09dbb2d50200b3e800a63d2" 9 | install: 10 | - mkdir travis-phantomjs 11 | - wget https://s3.amazonaws.com/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 12 | - tar -xvf $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -C $PWD/travis-phantomjs 13 | - export PATH=$PWD/travis-phantomjs:$PATH 14 | - npm install 15 | 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # swoop 2 | 3 | Ethreum pre-sale wallet importer. 4 | 5 | | Branch | Unit Tests | 6 | |------------|------------| 7 | | master | [![Build Status](https://travis-ci.org/krakenfx/swoop.svg)](https://travis-ci.org/krakenfx/swoop) | 8 | 9 | ![Swoop](https://github.com/krakenfx/swoop/raw/master/logo.png) 10 | 11 | ## Installing 12 | 13 | ``` 14 | git clone https://github.com/krakenfx/swoop.git 15 | ``` 16 | 17 | ## Running 18 | 19 | ``` 20 | GETH_RPC_URL=https://geth.kraken.com:2096 \ 21 | npm run hot 22 | ``` 23 | 24 | And open your browser to `http://localhost:8080` 25 | 26 | ## Building 27 | 28 | ### Local webserver with hot module reloading 29 | 30 | ``` 31 | GETH_RPC_URL=https://geth.kraken.com:2096 \ 32 | npm run hot 33 | ``` 34 | 35 | ### Development version 36 | 37 | ``` 38 | GETH_RPC_URL=https://geth.kraken.com:2096 \ 39 | npm run dev 40 | ``` 41 | 42 | ### Production version 43 | 44 | ``` 45 | GETH_RPC_URL=https://geth.kraken.com:2096 \ 46 | npm run prod 47 | ``` 48 | 49 | ## Tests 50 | 51 | `npm test` 52 | 53 | And integration tests: 54 | 55 | ``` 56 | GETH_RPC_URL=https://geth.kraken.com:2096 \ 57 | npm run integration 58 | ``` 59 | 60 | ## Author 61 | 62 | Andreas Brekken 63 | 64 | ## Acknowledgements 65 | 66 | - UX by [Nicolai R. Nielsen](https://twitter.com/nrnielsen) 67 | - Local signing by [Nick Dodson](https://github.com/SilentCicero) 68 | 69 | ## License 70 | 71 | ISC 72 | -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krakenfx/swoop/d2e9bbe6e69bd2507ffa6c1ef667e0d8c3c96bee/assets/favicon.ico -------------------------------------------------------------------------------- /assets/kraken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krakenfx/swoop/d2e9bbe6e69bd2507ffa6c1ef667e0d8c3c96bee/assets/kraken.png -------------------------------------------------------------------------------- /lib/iban.js: -------------------------------------------------------------------------------- 1 | let iban = {errors: {}}; 2 | 3 | function isIbanValid(iban) { 4 | 5 | if (typeof iban != 'string') { 6 | return false; 7 | } 8 | 9 | iban = iban.toUpperCase().replace(/[^A-Z0-9]/g, ''); 10 | let prepared = iso13616Prepare(`${iban}`); 11 | return iso7064Mod97_10(prepared) === 1; 12 | 13 | } 14 | 15 | /** 16 | * Prepare an IBAN for mod 97 computation by moving the first 4 chars to the end and transforming the letters to 17 | * numbers (A = 10, B = 11, ..., Z = 35), as specified in ISO13616. 18 | * 19 | * @param {string} iban the IBAN 20 | * @returns {string} the prepared IBAN 21 | */ 22 | function iso13616Prepare(iban) { 23 | var A = 'A'.charCodeAt(0), 24 | Z = 'Z'.charCodeAt(0); 25 | 26 | iban = iban.toUpperCase(); 27 | iban = iban.substr(4) + iban.substr(0,4); 28 | 29 | return iban.split('').map(function(n){ 30 | var code = n.charCodeAt(0); 31 | if (code >= A && code <= Z){ 32 | // A = 10, B = 11, ... Z = 35 33 | return code - A + 10; 34 | } else { 35 | return n; 36 | } 37 | }).join(''); 38 | } 39 | 40 | /** 41 | * Calculates the MOD 97 10 of the passed IBAN as specified in ISO7064. 42 | * 43 | * @param iban 44 | * @returns {number} 45 | */ 46 | function iso7064Mod97_10(iban) { 47 | var remainder = iban, 48 | block; 49 | 50 | while (remainder.length > 2){ 51 | block = remainder.slice(0, 9); 52 | remainder = parseInt(block, 10) % 97 + remainder.slice(block.length); 53 | } 54 | 55 | return parseInt(remainder, 10) % 97; 56 | } 57 | 58 | iban.isIbanValid = isIbanValid; 59 | 60 | export default iban; 61 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krakenfx/swoop/d2e9bbe6e69bd2507ffa6c1ef667e0d8c3c96bee/logo.png -------------------------------------------------------------------------------- /npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "swoop", 3 | "version": "1.0.2", 4 | "dependencies": { 5 | "babel-core": { 6 | "version": "5.8.19", 7 | "from": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.19.tgz", 8 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.19.tgz", 9 | "dependencies": { 10 | "babel-plugin-constant-folding": { 11 | "version": "1.0.1", 12 | "from": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", 13 | "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" 14 | }, 15 | "babel-plugin-dead-code-elimination": { 16 | "version": "1.0.2", 17 | "from": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", 18 | "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" 19 | }, 20 | "babel-plugin-eval": { 21 | "version": "1.0.1", 22 | "from": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", 23 | "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" 24 | }, 25 | "babel-plugin-inline-environment-variables": { 26 | "version": "1.0.1", 27 | "from": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", 28 | "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" 29 | }, 30 | "babel-plugin-jscript": { 31 | "version": "1.0.4", 32 | "from": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", 33 | "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" 34 | }, 35 | "babel-plugin-member-expression-literals": { 36 | "version": "1.0.1", 37 | "from": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", 38 | "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" 39 | }, 40 | "babel-plugin-property-literals": { 41 | "version": "1.0.1", 42 | "from": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", 43 | "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" 44 | }, 45 | "babel-plugin-proto-to-assign": { 46 | "version": "1.0.4", 47 | "from": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", 48 | "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz" 49 | }, 50 | "babel-plugin-react-constant-elements": { 51 | "version": "1.0.3", 52 | "from": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", 53 | "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" 54 | }, 55 | "babel-plugin-react-display-name": { 56 | "version": "1.0.3", 57 | "from": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", 58 | "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" 59 | }, 60 | "babel-plugin-remove-console": { 61 | "version": "1.0.1", 62 | "from": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", 63 | "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" 64 | }, 65 | "babel-plugin-remove-debugger": { 66 | "version": "1.0.1", 67 | "from": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", 68 | "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" 69 | }, 70 | "babel-plugin-runtime": { 71 | "version": "1.0.7", 72 | "from": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", 73 | "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz" 74 | }, 75 | "babel-plugin-undeclared-variables-check": { 76 | "version": "1.0.2", 77 | "from": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", 78 | "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", 79 | "dependencies": { 80 | "leven": { 81 | "version": "1.0.2", 82 | "from": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", 83 | "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" 84 | } 85 | } 86 | }, 87 | "babel-plugin-undefined-to-void": { 88 | "version": "1.1.6", 89 | "from": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", 90 | "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz" 91 | }, 92 | "babylon": { 93 | "version": "5.8.19", 94 | "from": "https://registry.npmjs.org/babylon/-/babylon-5.8.19.tgz", 95 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.19.tgz" 96 | }, 97 | "bluebird": { 98 | "version": "2.9.34", 99 | "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", 100 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" 101 | }, 102 | "chalk": { 103 | "version": "1.1.0", 104 | "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", 105 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", 106 | "dependencies": { 107 | "ansi-styles": { 108 | "version": "2.1.0", 109 | "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", 110 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" 111 | }, 112 | "escape-string-regexp": { 113 | "version": "1.0.3", 114 | "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", 115 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" 116 | }, 117 | "has-ansi": { 118 | "version": "2.0.0", 119 | "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 120 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 121 | "dependencies": { 122 | "ansi-regex": { 123 | "version": "2.0.0", 124 | "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", 125 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" 126 | } 127 | } 128 | }, 129 | "strip-ansi": { 130 | "version": "3.0.0", 131 | "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", 132 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", 133 | "dependencies": { 134 | "ansi-regex": { 135 | "version": "2.0.0", 136 | "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", 137 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" 138 | } 139 | } 140 | }, 141 | "supports-color": { 142 | "version": "2.0.0", 143 | "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 144 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 145 | } 146 | } 147 | }, 148 | "convert-source-map": { 149 | "version": "1.1.1", 150 | "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz", 151 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" 152 | }, 153 | "core-js": { 154 | "version": "0.9.18", 155 | "from": "https://registry.npmjs.org/core-js/-/core-js-0.9.18.tgz", 156 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.9.18.tgz" 157 | }, 158 | "detect-indent": { 159 | "version": "3.0.1", 160 | "from": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", 161 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", 162 | "dependencies": { 163 | "get-stdin": { 164 | "version": "4.0.1", 165 | "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 166 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" 167 | }, 168 | "minimist": { 169 | "version": "1.1.2", 170 | "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz", 171 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz" 172 | } 173 | } 174 | }, 175 | "esutils": { 176 | "version": "2.0.2", 177 | "from": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 178 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" 179 | }, 180 | "fs-readdir-recursive": { 181 | "version": "0.1.2", 182 | "from": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", 183 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" 184 | }, 185 | "globals": { 186 | "version": "6.4.1", 187 | "from": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", 188 | "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" 189 | }, 190 | "home-or-tmp": { 191 | "version": "1.0.0", 192 | "from": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", 193 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", 194 | "dependencies": { 195 | "os-tmpdir": { 196 | "version": "1.0.1", 197 | "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", 198 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" 199 | }, 200 | "user-home": { 201 | "version": "1.1.1", 202 | "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 203 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" 204 | } 205 | } 206 | }, 207 | "is-integer": { 208 | "version": "1.0.4", 209 | "from": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.4.tgz", 210 | "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.4.tgz", 211 | "dependencies": { 212 | "is-finite": { 213 | "version": "1.0.1", 214 | "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", 215 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", 216 | "dependencies": { 217 | "number-is-nan": { 218 | "version": "1.0.0", 219 | "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", 220 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" 221 | } 222 | } 223 | }, 224 | "is-nan": { 225 | "version": "1.1.0", 226 | "from": "https://registry.npmjs.org/is-nan/-/is-nan-1.1.0.tgz", 227 | "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.1.0.tgz", 228 | "dependencies": { 229 | "define-properties": { 230 | "version": "1.1.1", 231 | "from": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz", 232 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz", 233 | "dependencies": { 234 | "foreach": { 235 | "version": "2.0.5", 236 | "from": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 237 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" 238 | }, 239 | "object-keys": { 240 | "version": "1.0.7", 241 | "from": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz", 242 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz" 243 | } 244 | } 245 | } 246 | } 247 | } 248 | } 249 | }, 250 | "js-tokens": { 251 | "version": "1.0.1", 252 | "from": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", 253 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" 254 | }, 255 | "line-numbers": { 256 | "version": "0.2.0", 257 | "from": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", 258 | "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", 259 | "dependencies": { 260 | "left-pad": { 261 | "version": "0.0.3", 262 | "from": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz", 263 | "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" 264 | } 265 | } 266 | }, 267 | "minimatch": { 268 | "version": "2.0.10", 269 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 270 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 271 | "dependencies": { 272 | "brace-expansion": { 273 | "version": "1.1.0", 274 | "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", 275 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", 276 | "dependencies": { 277 | "balanced-match": { 278 | "version": "0.2.0", 279 | "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", 280 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" 281 | }, 282 | "concat-map": { 283 | "version": "0.0.1", 284 | "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 285 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 286 | } 287 | } 288 | } 289 | } 290 | }, 291 | "output-file-sync": { 292 | "version": "1.1.1", 293 | "from": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", 294 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", 295 | "dependencies": { 296 | "mkdirp": { 297 | "version": "0.5.1", 298 | "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 299 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 300 | "dependencies": { 301 | "minimist": { 302 | "version": "0.0.8", 303 | "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 304 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 305 | } 306 | } 307 | }, 308 | "xtend": { 309 | "version": "4.0.0", 310 | "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz", 311 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" 312 | } 313 | } 314 | }, 315 | "path-exists": { 316 | "version": "1.0.0", 317 | "from": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", 318 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz" 319 | }, 320 | "path-is-absolute": { 321 | "version": "1.0.0", 322 | "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", 323 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" 324 | }, 325 | "private": { 326 | "version": "0.1.6", 327 | "from": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", 328 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" 329 | }, 330 | "regenerator": { 331 | "version": "0.8.34", 332 | "from": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.34.tgz", 333 | "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.34.tgz", 334 | "dependencies": { 335 | "commoner": { 336 | "version": "0.10.3", 337 | "from": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", 338 | "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", 339 | "dependencies": { 340 | "q": { 341 | "version": "1.1.2", 342 | "from": "https://registry.npmjs.org/q/-/q-1.1.2.tgz", 343 | "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" 344 | }, 345 | "commander": { 346 | "version": "2.5.1", 347 | "from": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz", 348 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" 349 | }, 350 | "graceful-fs": { 351 | "version": "3.0.8", 352 | "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", 353 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" 354 | }, 355 | "glob": { 356 | "version": "4.2.2", 357 | "from": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", 358 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", 359 | "dependencies": { 360 | "inflight": { 361 | "version": "1.0.4", 362 | "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", 363 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", 364 | "dependencies": { 365 | "wrappy": { 366 | "version": "1.0.1", 367 | "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 368 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 369 | } 370 | } 371 | }, 372 | "inherits": { 373 | "version": "2.0.1", 374 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 375 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 376 | }, 377 | "minimatch": { 378 | "version": "1.0.0", 379 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", 380 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", 381 | "dependencies": { 382 | "lru-cache": { 383 | "version": "2.6.5", 384 | "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", 385 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" 386 | }, 387 | "sigmund": { 388 | "version": "1.0.1", 389 | "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 390 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" 391 | } 392 | } 393 | }, 394 | "once": { 395 | "version": "1.3.2", 396 | "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", 397 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", 398 | "dependencies": { 399 | "wrappy": { 400 | "version": "1.0.1", 401 | "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 402 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 403 | } 404 | } 405 | } 406 | } 407 | }, 408 | "mkdirp": { 409 | "version": "0.5.1", 410 | "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 411 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 412 | "dependencies": { 413 | "minimist": { 414 | "version": "0.0.8", 415 | "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 416 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 417 | } 418 | } 419 | }, 420 | "install": { 421 | "version": "0.1.8", 422 | "from": "https://registry.npmjs.org/install/-/install-0.1.8.tgz", 423 | "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" 424 | }, 425 | "iconv-lite": { 426 | "version": "0.4.11", 427 | "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", 428 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" 429 | } 430 | } 431 | }, 432 | "defs": { 433 | "version": "1.1.0", 434 | "from": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", 435 | "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", 436 | "dependencies": { 437 | "alter": { 438 | "version": "0.2.0", 439 | "from": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", 440 | "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", 441 | "dependencies": { 442 | "stable": { 443 | "version": "0.1.5", 444 | "from": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz", 445 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" 446 | } 447 | } 448 | }, 449 | "ast-traverse": { 450 | "version": "0.1.1", 451 | "from": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", 452 | "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" 453 | }, 454 | "breakable": { 455 | "version": "1.0.0", 456 | "from": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", 457 | "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" 458 | }, 459 | "esprima-fb": { 460 | "version": "8001.1001.0-dev-harmony-fb", 461 | "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz", 462 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" 463 | }, 464 | "simple-fmt": { 465 | "version": "0.1.0", 466 | "from": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", 467 | "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" 468 | }, 469 | "simple-is": { 470 | "version": "0.2.0", 471 | "from": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", 472 | "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" 473 | }, 474 | "stringmap": { 475 | "version": "0.2.2", 476 | "from": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", 477 | "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" 478 | }, 479 | "stringset": { 480 | "version": "0.2.1", 481 | "from": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", 482 | "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" 483 | }, 484 | "tryor": { 485 | "version": "0.1.2", 486 | "from": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", 487 | "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" 488 | }, 489 | "yargs": { 490 | "version": "1.3.3", 491 | "from": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", 492 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" 493 | } 494 | } 495 | }, 496 | "esprima-fb": { 497 | "version": "13001.1.0-dev-harmony-fb", 498 | "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1.0-dev-harmony-fb.tgz", 499 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1.0-dev-harmony-fb.tgz" 500 | }, 501 | "recast": { 502 | "version": "0.10.18", 503 | "from": "https://registry.npmjs.org/recast/-/recast-0.10.18.tgz", 504 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.18.tgz", 505 | "dependencies": { 506 | "esprima-fb": { 507 | "version": "14001.1.0-dev-harmony-fb", 508 | "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-14001.1.0-dev-harmony-fb.tgz", 509 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-14001.1.0-dev-harmony-fb.tgz" 510 | }, 511 | "ast-types": { 512 | "version": "0.8.2", 513 | "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.2.tgz", 514 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.2.tgz" 515 | } 516 | } 517 | }, 518 | "through": { 519 | "version": "2.3.8", 520 | "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 521 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 522 | } 523 | } 524 | }, 525 | "regexpu": { 526 | "version": "1.2.0", 527 | "from": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", 528 | "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", 529 | "dependencies": { 530 | "recast": { 531 | "version": "0.10.22", 532 | "from": "https://registry.npmjs.org/recast/-/recast-0.10.22.tgz", 533 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.22.tgz", 534 | "dependencies": { 535 | "esprima-fb": { 536 | "version": "15001.1.0-dev-harmony-fb", 537 | "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", 538 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" 539 | }, 540 | "ast-types": { 541 | "version": "0.8.3", 542 | "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.3.tgz", 543 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.3.tgz" 544 | } 545 | } 546 | }, 547 | "regenerate": { 548 | "version": "1.2.1", 549 | "from": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz", 550 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" 551 | }, 552 | "regjsgen": { 553 | "version": "0.2.0", 554 | "from": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 555 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" 556 | }, 557 | "regjsparser": { 558 | "version": "0.1.4", 559 | "from": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.4.tgz", 560 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.4.tgz", 561 | "dependencies": { 562 | "jsesc": { 563 | "version": "0.5.0", 564 | "from": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 565 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" 566 | } 567 | } 568 | } 569 | } 570 | }, 571 | "repeating": { 572 | "version": "1.1.3", 573 | "from": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", 574 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", 575 | "dependencies": { 576 | "is-finite": { 577 | "version": "1.0.1", 578 | "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", 579 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", 580 | "dependencies": { 581 | "number-is-nan": { 582 | "version": "1.0.0", 583 | "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", 584 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" 585 | } 586 | } 587 | } 588 | } 589 | }, 590 | "resolve": { 591 | "version": "1.1.6", 592 | "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz", 593 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" 594 | }, 595 | "shebang-regex": { 596 | "version": "1.0.0", 597 | "from": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 598 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" 599 | }, 600 | "slash": { 601 | "version": "1.0.0", 602 | "from": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 603 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" 604 | }, 605 | "source-map": { 606 | "version": "0.4.4", 607 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 608 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 609 | "dependencies": { 610 | "amdefine": { 611 | "version": "1.0.0", 612 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 613 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 614 | } 615 | } 616 | }, 617 | "source-map-support": { 618 | "version": "0.2.10", 619 | "from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", 620 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", 621 | "dependencies": { 622 | "source-map": { 623 | "version": "0.1.32", 624 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", 625 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", 626 | "dependencies": { 627 | "amdefine": { 628 | "version": "1.0.0", 629 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 630 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 631 | } 632 | } 633 | } 634 | } 635 | }, 636 | "strip-json-comments": { 637 | "version": "1.0.2", 638 | "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz", 639 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz" 640 | }, 641 | "to-fast-properties": { 642 | "version": "1.0.1", 643 | "from": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz", 644 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" 645 | }, 646 | "trim-right": { 647 | "version": "1.0.1", 648 | "from": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 649 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" 650 | }, 651 | "try-resolve": { 652 | "version": "1.0.1", 653 | "from": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", 654 | "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" 655 | } 656 | } 657 | }, 658 | "babel-loader": { 659 | "version": "5.3.2", 660 | "from": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", 661 | "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", 662 | "dependencies": { 663 | "loader-utils": { 664 | "version": "0.2.11", 665 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 666 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 667 | "dependencies": { 668 | "big.js": { 669 | "version": "3.1.3", 670 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 671 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 672 | }, 673 | "json5": { 674 | "version": "0.4.0", 675 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 676 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 677 | } 678 | } 679 | }, 680 | "object-assign": { 681 | "version": "3.0.0", 682 | "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 683 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" 684 | } 685 | } 686 | }, 687 | "babel-runtime": { 688 | "version": "5.8.19", 689 | "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.19.tgz", 690 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.19.tgz", 691 | "dependencies": { 692 | "core-js": { 693 | "version": "0.9.18", 694 | "from": "https://registry.npmjs.org/core-js/-/core-js-0.9.18.tgz", 695 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.9.18.tgz" 696 | } 697 | } 698 | }, 699 | "bigi": { 700 | "version": "1.4.0", 701 | "from": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz", 702 | "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz" 703 | }, 704 | "bitcoinjs-lib": { 705 | "version": "1.5.7", 706 | "from": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-1.5.7.tgz", 707 | "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-1.5.7.tgz", 708 | "dependencies": { 709 | "bs58check": { 710 | "version": "1.0.6", 711 | "from": "https://registry.npmjs.org/bs58check/-/bs58check-1.0.6.tgz", 712 | "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-1.0.6.tgz", 713 | "dependencies": { 714 | "bs58": { 715 | "version": "2.0.1", 716 | "from": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz", 717 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz" 718 | } 719 | } 720 | }, 721 | "create-hash": { 722 | "version": "1.1.1", 723 | "from": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.1.tgz", 724 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.1.tgz", 725 | "dependencies": { 726 | "inherits": { 727 | "version": "2.0.1", 728 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 729 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 730 | }, 731 | "ripemd160": { 732 | "version": "1.0.1", 733 | "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz", 734 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz" 735 | }, 736 | "sha.js": { 737 | "version": "2.4.2", 738 | "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.2.tgz", 739 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.2.tgz" 740 | } 741 | } 742 | }, 743 | "create-hmac": { 744 | "version": "1.1.3", 745 | "from": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.3.tgz", 746 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.3.tgz", 747 | "dependencies": { 748 | "inherits": { 749 | "version": "2.0.1", 750 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 751 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 752 | } 753 | } 754 | }, 755 | "ecurve": { 756 | "version": "1.0.1", 757 | "from": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.1.tgz", 758 | "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.1.tgz" 759 | }, 760 | "randombytes": { 761 | "version": "2.0.1", 762 | "from": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.1.tgz", 763 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.1.tgz" 764 | }, 765 | "typeforce": { 766 | "version": "1.1.4", 767 | "from": "https://registry.npmjs.org/typeforce/-/typeforce-1.1.4.tgz", 768 | "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.1.4.tgz" 769 | } 770 | } 771 | }, 772 | "css-loader": { 773 | "version": "0.15.6", 774 | "from": "https://registry.npmjs.org/css-loader/-/css-loader-0.15.6.tgz", 775 | "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.15.6.tgz", 776 | "dependencies": { 777 | "css-selector-tokenizer": { 778 | "version": "0.5.4", 779 | "from": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", 780 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", 781 | "dependencies": { 782 | "cssesc": { 783 | "version": "0.1.0", 784 | "from": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", 785 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz" 786 | }, 787 | "fastparse": { 788 | "version": "1.1.1", 789 | "from": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", 790 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz" 791 | } 792 | } 793 | }, 794 | "cssnano": { 795 | "version": "2.1.1", 796 | "from": "https://registry.npmjs.org/cssnano/-/cssnano-2.1.1.tgz", 797 | "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-2.1.1.tgz", 798 | "dependencies": { 799 | "autoprefixer-core": { 800 | "version": "5.2.1", 801 | "from": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.2.1.tgz", 802 | "resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.2.1.tgz", 803 | "dependencies": { 804 | "browserslist": { 805 | "version": "0.4.0", 806 | "from": "https://registry.npmjs.org/browserslist/-/browserslist-0.4.0.tgz", 807 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-0.4.0.tgz" 808 | }, 809 | "num2fraction": { 810 | "version": "1.1.0", 811 | "from": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.1.0.tgz", 812 | "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.1.0.tgz" 813 | }, 814 | "caniuse-db": { 815 | "version": "1.0.30000252", 816 | "from": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000252.tgz", 817 | "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000252.tgz" 818 | } 819 | } 820 | }, 821 | "balanced-match": { 822 | "version": "0.2.0", 823 | "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", 824 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" 825 | }, 826 | "css-list": { 827 | "version": "0.1.2", 828 | "from": "https://registry.npmjs.org/css-list/-/css-list-0.1.2.tgz", 829 | "resolved": "https://registry.npmjs.org/css-list/-/css-list-0.1.2.tgz" 830 | }, 831 | "flatten": { 832 | "version": "0.0.1", 833 | "from": "https://registry.npmjs.org/flatten/-/flatten-0.0.1.tgz", 834 | "resolved": "https://registry.npmjs.org/flatten/-/flatten-0.0.1.tgz" 835 | }, 836 | "indexes-of": { 837 | "version": "1.0.1", 838 | "from": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", 839 | "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" 840 | }, 841 | "minimist": { 842 | "version": "1.1.2", 843 | "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz", 844 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz" 845 | }, 846 | "postcss-calc": { 847 | "version": "4.1.0", 848 | "from": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-4.1.0.tgz", 849 | "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-4.1.0.tgz", 850 | "dependencies": { 851 | "postcss-message-helpers": { 852 | "version": "2.0.0", 853 | "from": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", 854 | "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" 855 | }, 856 | "reduce-css-calc": { 857 | "version": "1.2.0", 858 | "from": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.2.0.tgz", 859 | "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.2.0.tgz", 860 | "dependencies": { 861 | "balanced-match": { 862 | "version": "0.1.0", 863 | "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", 864 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" 865 | }, 866 | "reduce-function-call": { 867 | "version": "1.0.1", 868 | "from": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", 869 | "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz" 870 | } 871 | } 872 | } 873 | } 874 | }, 875 | "postcss-colormin": { 876 | "version": "1.2.3", 877 | "from": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-1.2.3.tgz", 878 | "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-1.2.3.tgz", 879 | "dependencies": { 880 | "color": { 881 | "version": "0.8.0", 882 | "from": "https://registry.npmjs.org/color/-/color-0.8.0.tgz", 883 | "resolved": "https://registry.npmjs.org/color/-/color-0.8.0.tgz", 884 | "dependencies": { 885 | "color-convert": { 886 | "version": "0.5.3", 887 | "from": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", 888 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" 889 | }, 890 | "color-string": { 891 | "version": "0.3.0", 892 | "from": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", 893 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", 894 | "dependencies": { 895 | "color-name": { 896 | "version": "1.0.0", 897 | "from": "https://registry.npmjs.org/color-name/-/color-name-1.0.0.tgz", 898 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.0.0.tgz" 899 | } 900 | } 901 | } 902 | } 903 | }, 904 | "colormin": { 905 | "version": "1.0.2", 906 | "from": "https://registry.npmjs.org/colormin/-/colormin-1.0.2.tgz", 907 | "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.0.2.tgz", 908 | "dependencies": { 909 | "color": { 910 | "version": "0.9.0", 911 | "from": "https://registry.npmjs.org/color/-/color-0.9.0.tgz", 912 | "resolved": "https://registry.npmjs.org/color/-/color-0.9.0.tgz", 913 | "dependencies": { 914 | "color-convert": { 915 | "version": "0.5.3", 916 | "from": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", 917 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" 918 | }, 919 | "color-string": { 920 | "version": "0.3.0", 921 | "from": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", 922 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", 923 | "dependencies": { 924 | "color-name": { 925 | "version": "1.0.0", 926 | "from": "https://registry.npmjs.org/color-name/-/color-name-1.0.0.tgz", 927 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.0.0.tgz" 928 | } 929 | } 930 | } 931 | } 932 | }, 933 | "css-color-names": { 934 | "version": "0.0.1", 935 | "from": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", 936 | "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz" 937 | } 938 | } 939 | }, 940 | "reduce-function-call": { 941 | "version": "1.0.1", 942 | "from": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", 943 | "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", 944 | "dependencies": { 945 | "balanced-match": { 946 | "version": "0.1.0", 947 | "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", 948 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" 949 | } 950 | } 951 | } 952 | } 953 | }, 954 | "postcss-convert-values": { 955 | "version": "1.2.4", 956 | "from": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-1.2.4.tgz", 957 | "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-1.2.4.tgz" 958 | }, 959 | "postcss-discard-comments": { 960 | "version": "1.2.0", 961 | "from": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-1.2.0.tgz", 962 | "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-1.2.0.tgz", 963 | "dependencies": { 964 | "node-balanced": { 965 | "version": "0.0.14", 966 | "from": "https://registry.npmjs.org/node-balanced/-/node-balanced-0.0.14.tgz", 967 | "resolved": "https://registry.npmjs.org/node-balanced/-/node-balanced-0.0.14.tgz" 968 | } 969 | } 970 | }, 971 | "postcss-discard-duplicates": { 972 | "version": "1.1.3", 973 | "from": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-1.1.3.tgz", 974 | "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-1.1.3.tgz" 975 | }, 976 | "postcss-discard-empty": { 977 | "version": "1.1.1", 978 | "from": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-1.1.1.tgz", 979 | "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-1.1.1.tgz" 980 | }, 981 | "postcss-discard-unused": { 982 | "version": "1.0.0", 983 | "from": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-1.0.0.tgz", 984 | "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-1.0.0.tgz", 985 | "dependencies": { 986 | "uniqs": { 987 | "version": "2.0.0", 988 | "from": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", 989 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" 990 | } 991 | } 992 | }, 993 | "postcss-font-family": { 994 | "version": "1.1.1", 995 | "from": "https://registry.npmjs.org/postcss-font-family/-/postcss-font-family-1.1.1.tgz", 996 | "resolved": "https://registry.npmjs.org/postcss-font-family/-/postcss-font-family-1.1.1.tgz", 997 | "dependencies": { 998 | "uniqs": { 999 | "version": "2.0.0", 1000 | "from": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", 1001 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" 1002 | } 1003 | } 1004 | }, 1005 | "postcss-merge-idents": { 1006 | "version": "1.0.1", 1007 | "from": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-1.0.1.tgz", 1008 | "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-1.0.1.tgz" 1009 | }, 1010 | "postcss-merge-rules": { 1011 | "version": "1.3.1", 1012 | "from": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-1.3.1.tgz", 1013 | "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-1.3.1.tgz" 1014 | }, 1015 | "postcss-minify-font-weight": { 1016 | "version": "1.0.1", 1017 | "from": "https://registry.npmjs.org/postcss-minify-font-weight/-/postcss-minify-font-weight-1.0.1.tgz", 1018 | "resolved": "https://registry.npmjs.org/postcss-minify-font-weight/-/postcss-minify-font-weight-1.0.1.tgz" 1019 | }, 1020 | "postcss-minify-selectors": { 1021 | "version": "1.4.3", 1022 | "from": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-1.4.3.tgz", 1023 | "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-1.4.3.tgz", 1024 | "dependencies": { 1025 | "javascript-natural-sort": { 1026 | "version": "0.7.1", 1027 | "from": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", 1028 | "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" 1029 | }, 1030 | "normalize-selector": { 1031 | "version": "0.0.3-a", 1032 | "from": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.0.3-a.tgz", 1033 | "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.0.3-a.tgz" 1034 | }, 1035 | "postcss-selector-parser": { 1036 | "version": "1.1.1", 1037 | "from": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.1.1.tgz", 1038 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.1.1.tgz", 1039 | "dependencies": { 1040 | "uniq": { 1041 | "version": "1.0.1", 1042 | "from": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 1043 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" 1044 | } 1045 | } 1046 | }, 1047 | "uniqs": { 1048 | "version": "2.0.0", 1049 | "from": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", 1050 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" 1051 | } 1052 | } 1053 | }, 1054 | "postcss-minify-trbl": { 1055 | "version": "1.0.0", 1056 | "from": "https://registry.npmjs.org/postcss-minify-trbl/-/postcss-minify-trbl-1.0.0.tgz", 1057 | "resolved": "https://registry.npmjs.org/postcss-minify-trbl/-/postcss-minify-trbl-1.0.0.tgz" 1058 | }, 1059 | "postcss-normalize-url": { 1060 | "version": "2.1.0", 1061 | "from": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-2.1.0.tgz", 1062 | "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-2.1.0.tgz", 1063 | "dependencies": { 1064 | "is-absolute-url": { 1065 | "version": "2.0.0", 1066 | "from": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.0.0.tgz", 1067 | "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.0.0.tgz" 1068 | }, 1069 | "normalize-url": { 1070 | "version": "1.3.0", 1071 | "from": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.3.0.tgz", 1072 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.3.0.tgz", 1073 | "dependencies": { 1074 | "prepend-http": { 1075 | "version": "1.0.2", 1076 | "from": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.2.tgz", 1077 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.2.tgz" 1078 | }, 1079 | "query-string": { 1080 | "version": "2.4.0", 1081 | "from": "https://registry.npmjs.org/query-string/-/query-string-2.4.0.tgz", 1082 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-2.4.0.tgz", 1083 | "dependencies": { 1084 | "strict-uri-encode": { 1085 | "version": "1.0.2", 1086 | "from": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.0.2.tgz", 1087 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.0.2.tgz" 1088 | } 1089 | } 1090 | }, 1091 | "sort-keys": { 1092 | "version": "1.1.1", 1093 | "from": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.1.tgz", 1094 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.1.tgz", 1095 | "dependencies": { 1096 | "is-plain-obj": { 1097 | "version": "1.0.0", 1098 | "from": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.0.0.tgz", 1099 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.0.0.tgz" 1100 | } 1101 | } 1102 | } 1103 | } 1104 | }, 1105 | "object-assign": { 1106 | "version": "3.0.0", 1107 | "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 1108 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" 1109 | } 1110 | } 1111 | }, 1112 | "postcss-pseudoelements": { 1113 | "version": "2.2.0", 1114 | "from": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-2.2.0.tgz", 1115 | "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-2.2.0.tgz" 1116 | }, 1117 | "postcss-reduce-idents": { 1118 | "version": "1.0.1", 1119 | "from": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-1.0.1.tgz", 1120 | "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-1.0.1.tgz", 1121 | "dependencies": { 1122 | "reduce-function-call": { 1123 | "version": "1.0.1", 1124 | "from": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", 1125 | "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", 1126 | "dependencies": { 1127 | "balanced-match": { 1128 | "version": "0.1.0", 1129 | "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", 1130 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz" 1131 | } 1132 | } 1133 | } 1134 | } 1135 | }, 1136 | "postcss-single-charset": { 1137 | "version": "0.3.0", 1138 | "from": "https://registry.npmjs.org/postcss-single-charset/-/postcss-single-charset-0.3.0.tgz", 1139 | "resolved": "https://registry.npmjs.org/postcss-single-charset/-/postcss-single-charset-0.3.0.tgz", 1140 | "dependencies": { 1141 | "fs-extra": { 1142 | "version": "0.14.0", 1143 | "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.14.0.tgz", 1144 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.14.0.tgz", 1145 | "dependencies": { 1146 | "ncp": { 1147 | "version": "1.0.1", 1148 | "from": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", 1149 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz" 1150 | }, 1151 | "jsonfile": { 1152 | "version": "2.2.1", 1153 | "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.1.tgz", 1154 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.1.tgz" 1155 | }, 1156 | "rimraf": { 1157 | "version": "2.4.2", 1158 | "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", 1159 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", 1160 | "dependencies": { 1161 | "glob": { 1162 | "version": "5.0.14", 1163 | "from": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", 1164 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", 1165 | "dependencies": { 1166 | "inflight": { 1167 | "version": "1.0.4", 1168 | "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", 1169 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", 1170 | "dependencies": { 1171 | "wrappy": { 1172 | "version": "1.0.1", 1173 | "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 1174 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 1175 | } 1176 | } 1177 | }, 1178 | "inherits": { 1179 | "version": "2.0.1", 1180 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1181 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1182 | }, 1183 | "minimatch": { 1184 | "version": "2.0.10", 1185 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1186 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1187 | "dependencies": { 1188 | "brace-expansion": { 1189 | "version": "1.1.0", 1190 | "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", 1191 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", 1192 | "dependencies": { 1193 | "concat-map": { 1194 | "version": "0.0.1", 1195 | "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1196 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 1197 | } 1198 | } 1199 | } 1200 | } 1201 | }, 1202 | "once": { 1203 | "version": "1.3.2", 1204 | "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", 1205 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", 1206 | "dependencies": { 1207 | "wrappy": { 1208 | "version": "1.0.1", 1209 | "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 1210 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 1211 | } 1212 | } 1213 | }, 1214 | "path-is-absolute": { 1215 | "version": "1.0.0", 1216 | "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", 1217 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" 1218 | } 1219 | } 1220 | } 1221 | } 1222 | } 1223 | } 1224 | } 1225 | } 1226 | }, 1227 | "postcss-unique-selectors": { 1228 | "version": "1.0.0", 1229 | "from": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-1.0.0.tgz", 1230 | "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-1.0.0.tgz", 1231 | "dependencies": { 1232 | "javascript-natural-sort": { 1233 | "version": "0.7.1", 1234 | "from": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", 1235 | "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" 1236 | }, 1237 | "uniqs": { 1238 | "version": "2.0.0", 1239 | "from": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", 1240 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" 1241 | } 1242 | } 1243 | }, 1244 | "postcss-zindex": { 1245 | "version": "1.1.2", 1246 | "from": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-1.1.2.tgz", 1247 | "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-1.1.2.tgz" 1248 | }, 1249 | "read-file-stdin": { 1250 | "version": "0.2.0", 1251 | "from": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.0.tgz", 1252 | "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.0.tgz", 1253 | "dependencies": { 1254 | "gather-stream": { 1255 | "version": "1.0.0", 1256 | "from": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", 1257 | "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz" 1258 | } 1259 | } 1260 | }, 1261 | "write-file-stdout": { 1262 | "version": "0.0.2", 1263 | "from": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz", 1264 | "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz" 1265 | } 1266 | } 1267 | }, 1268 | "loader-utils": { 1269 | "version": "0.2.11", 1270 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1271 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1272 | "dependencies": { 1273 | "big.js": { 1274 | "version": "3.1.3", 1275 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 1276 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 1277 | }, 1278 | "json5": { 1279 | "version": "0.4.0", 1280 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 1281 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 1282 | } 1283 | } 1284 | }, 1285 | "postcss": { 1286 | "version": "4.1.16", 1287 | "from": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz", 1288 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz", 1289 | "dependencies": { 1290 | "es6-promise": { 1291 | "version": "2.3.0", 1292 | "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", 1293 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz" 1294 | }, 1295 | "source-map": { 1296 | "version": "0.4.4", 1297 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 1298 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 1299 | "dependencies": { 1300 | "amdefine": { 1301 | "version": "1.0.0", 1302 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 1303 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1304 | } 1305 | } 1306 | }, 1307 | "js-base64": { 1308 | "version": "2.1.9", 1309 | "from": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", 1310 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz" 1311 | } 1312 | } 1313 | }, 1314 | "postcss-modules-extract-imports": { 1315 | "version": "0.0.5", 1316 | "from": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-0.0.5.tgz", 1317 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-0.0.5.tgz" 1318 | }, 1319 | "postcss-modules-local-by-default": { 1320 | "version": "0.0.11", 1321 | "from": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-0.0.11.tgz", 1322 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-0.0.11.tgz" 1323 | }, 1324 | "postcss-modules-scope": { 1325 | "version": "0.0.8", 1326 | "from": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-0.0.8.tgz", 1327 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-0.0.8.tgz" 1328 | }, 1329 | "source-list-map": { 1330 | "version": "0.1.5", 1331 | "from": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz", 1332 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" 1333 | } 1334 | } 1335 | }, 1336 | "debug": { 1337 | "version": "2.2.0", 1338 | "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 1339 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 1340 | "dependencies": { 1341 | "ms": { 1342 | "version": "0.7.1", 1343 | "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 1344 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" 1345 | } 1346 | } 1347 | }, 1348 | "ethereumjs-tx": { 1349 | "version": "0.7.3", 1350 | "from": "ethereumjs-tx@0.7.3", 1351 | "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-0.7.3.tgz", 1352 | "dependencies": { 1353 | "ethereum-common": { 1354 | "version": "0.0.16", 1355 | "from": "ethereum-common@0.0.16", 1356 | "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.16.tgz" 1357 | }, 1358 | "ethereumjs-util": { 1359 | "version": "4.5.0", 1360 | "from": "ethereumjs-util@>=4.0.0 <5.0.0", 1361 | "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", 1362 | "dependencies": { 1363 | "bn.js": { 1364 | "version": "4.11.6", 1365 | "from": "bn.js@>=4.8.0 <5.0.0", 1366 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" 1367 | }, 1368 | "create-hash": { 1369 | "version": "1.1.2", 1370 | "from": "create-hash@>=1.1.2 <2.0.0", 1371 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz", 1372 | "dependencies": { 1373 | "cipher-base": { 1374 | "version": "1.0.2", 1375 | "from": "cipher-base@>=1.0.1 <2.0.0", 1376 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" 1377 | }, 1378 | "inherits": { 1379 | "version": "2.0.1", 1380 | "from": "inherits@>=2.0.1 <3.0.0", 1381 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1382 | }, 1383 | "ripemd160": { 1384 | "version": "1.0.1", 1385 | "from": "ripemd160@>=1.0.0 <2.0.0", 1386 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz" 1387 | }, 1388 | "sha.js": { 1389 | "version": "2.4.5", 1390 | "from": "sha.js@>=2.3.6 <3.0.0", 1391 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" 1392 | } 1393 | } 1394 | }, 1395 | "keccakjs": { 1396 | "version": "0.2.1", 1397 | "from": "keccakjs@>=0.2.0 <0.3.0", 1398 | "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.1.tgz", 1399 | "dependencies": { 1400 | "browserify-sha3": { 1401 | "version": "0.0.1", 1402 | "from": "browserify-sha3@>=0.0.1 <0.0.2", 1403 | "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.1.tgz", 1404 | "dependencies": { 1405 | "js-sha3": { 1406 | "version": "0.3.1", 1407 | "from": "js-sha3@>=0.3.1 <0.4.0", 1408 | "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz" 1409 | } 1410 | } 1411 | }, 1412 | "sha3": { 1413 | "version": "1.2.0", 1414 | "from": "sha3@>=1.1.0 <2.0.0", 1415 | "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.0.tgz", 1416 | "dependencies": { 1417 | "nan": { 1418 | "version": "2.4.0", 1419 | "from": "nan@>=2.0.5 <3.0.0", 1420 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" 1421 | } 1422 | } 1423 | } 1424 | } 1425 | }, 1426 | "rlp": { 1427 | "version": "2.0.0", 1428 | "from": "rlp@>=2.0.0 <3.0.0", 1429 | "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz" 1430 | }, 1431 | "secp256k1": { 1432 | "version": "3.1.0", 1433 | "from": "secp256k1@>=3.0.1 <4.0.0", 1434 | "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.1.0.tgz", 1435 | "dependencies": { 1436 | "bindings": { 1437 | "version": "1.2.1", 1438 | "from": "bindings@>=1.2.1 <2.0.0", 1439 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" 1440 | }, 1441 | "bip66": { 1442 | "version": "1.1.4", 1443 | "from": "bip66@>=1.1.3 <2.0.0", 1444 | "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.4.tgz" 1445 | }, 1446 | "drbg.js": { 1447 | "version": "1.0.1", 1448 | "from": "drbg.js@>=1.0.1 <2.0.0", 1449 | "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", 1450 | "dependencies": { 1451 | "browserify-aes": { 1452 | "version": "1.0.6", 1453 | "from": "browserify-aes@>=1.0.6 <2.0.0", 1454 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", 1455 | "dependencies": { 1456 | "buffer-xor": { 1457 | "version": "1.0.3", 1458 | "from": "buffer-xor@>=1.0.2 <2.0.0", 1459 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" 1460 | }, 1461 | "cipher-base": { 1462 | "version": "1.0.2", 1463 | "from": "cipher-base@>=1.0.0 <2.0.0", 1464 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.2.tgz" 1465 | }, 1466 | "evp_bytestokey": { 1467 | "version": "1.0.0", 1468 | "from": "evp_bytestokey@>=1.0.0 <2.0.0", 1469 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" 1470 | }, 1471 | "inherits": { 1472 | "version": "2.0.1", 1473 | "from": "inherits@>=2.0.1 <3.0.0", 1474 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1475 | } 1476 | } 1477 | }, 1478 | "create-hmac": { 1479 | "version": "1.1.4", 1480 | "from": "create-hmac@>=1.1.4 <2.0.0", 1481 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz", 1482 | "dependencies": { 1483 | "inherits": { 1484 | "version": "2.0.1", 1485 | "from": "inherits@>=2.0.1 <3.0.0", 1486 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1487 | } 1488 | } 1489 | } 1490 | } 1491 | }, 1492 | "elliptic": { 1493 | "version": "6.3.1", 1494 | "from": "elliptic@>=6.2.3 <7.0.0", 1495 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", 1496 | "dependencies": { 1497 | "brorand": { 1498 | "version": "1.0.5", 1499 | "from": "brorand@>=1.0.1 <2.0.0", 1500 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" 1501 | }, 1502 | "hash.js": { 1503 | "version": "1.0.3", 1504 | "from": "hash.js@>=1.0.0 <2.0.0", 1505 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" 1506 | }, 1507 | "inherits": { 1508 | "version": "2.0.1", 1509 | "from": "inherits@>=2.0.1 <3.0.0", 1510 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1511 | } 1512 | } 1513 | }, 1514 | "nan": { 1515 | "version": "2.4.0", 1516 | "from": "nan@>=2.2.1 <3.0.0", 1517 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" 1518 | } 1519 | } 1520 | } 1521 | } 1522 | } 1523 | } 1524 | }, 1525 | "ethereumjs-util": { 1526 | "version": "1.3.5", 1527 | "from": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-1.3.5.tgz", 1528 | "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-1.3.5.tgz", 1529 | "dependencies": { 1530 | "bn.js": { 1531 | "version": "3.1.1", 1532 | "from": "https://registry.npmjs.org/bn.js/-/bn.js-3.1.1.tgz", 1533 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-3.1.1.tgz" 1534 | }, 1535 | "browserify-sha3": { 1536 | "version": "0.0.0", 1537 | "from": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.0.tgz", 1538 | "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.0.tgz", 1539 | "dependencies": { 1540 | "js-sha3": { 1541 | "version": "0.3.1", 1542 | "from": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz", 1543 | "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz" 1544 | } 1545 | } 1546 | }, 1547 | "elliptic": { 1548 | "version": "5.1.0", 1549 | "from": "https://registry.npmjs.org/elliptic/-/elliptic-5.1.0.tgz", 1550 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-5.1.0.tgz", 1551 | "dependencies": { 1552 | "brorand": { 1553 | "version": "1.0.5", 1554 | "from": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", 1555 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz" 1556 | }, 1557 | "hash.js": { 1558 | "version": "1.0.3", 1559 | "from": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", 1560 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" 1561 | }, 1562 | "inherits": { 1563 | "version": "2.0.1", 1564 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1565 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1566 | } 1567 | } 1568 | }, 1569 | "rlp": { 1570 | "version": "1.0.1", 1571 | "from": "https://registry.npmjs.org/rlp/-/rlp-1.0.1.tgz", 1572 | "resolved": "https://registry.npmjs.org/rlp/-/rlp-1.0.1.tgz" 1573 | }, 1574 | "sha3": { 1575 | "version": "1.1.0", 1576 | "from": "https://registry.npmjs.org/sha3/-/sha3-1.1.0.tgz", 1577 | "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.1.0.tgz", 1578 | "dependencies": { 1579 | "nan": { 1580 | "version": "1.9.0", 1581 | "from": "https://registry.npmjs.org/nan/-/nan-1.9.0.tgz", 1582 | "resolved": "https://registry.npmjs.org/nan/-/nan-1.9.0.tgz" 1583 | } 1584 | } 1585 | } 1586 | } 1587 | }, 1588 | "exports-loader": { 1589 | "version": "0.6.2", 1590 | "from": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.2.tgz", 1591 | "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.2.tgz", 1592 | "dependencies": { 1593 | "loader-utils": { 1594 | "version": "0.2.11", 1595 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1596 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1597 | "dependencies": { 1598 | "big.js": { 1599 | "version": "3.1.3", 1600 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 1601 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 1602 | }, 1603 | "json5": { 1604 | "version": "0.4.0", 1605 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 1606 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 1607 | } 1608 | } 1609 | }, 1610 | "source-map": { 1611 | "version": "0.1.43", 1612 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 1613 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 1614 | "dependencies": { 1615 | "amdefine": { 1616 | "version": "1.0.0", 1617 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 1618 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1619 | } 1620 | } 1621 | } 1622 | } 1623 | }, 1624 | "file-loader": { 1625 | "version": "0.8.4", 1626 | "from": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.4.tgz", 1627 | "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.4.tgz", 1628 | "dependencies": { 1629 | "loader-utils": { 1630 | "version": "0.2.11", 1631 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1632 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1633 | "dependencies": { 1634 | "big.js": { 1635 | "version": "3.1.3", 1636 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 1637 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 1638 | }, 1639 | "json5": { 1640 | "version": "0.4.0", 1641 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 1642 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 1643 | } 1644 | } 1645 | } 1646 | } 1647 | }, 1648 | "html-webpack-plugin": { 1649 | "version": "1.6.0", 1650 | "from": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-1.6.0.tgz", 1651 | "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-1.6.0.tgz", 1652 | "dependencies": { 1653 | "bluebird": { 1654 | "version": "2.9.34", 1655 | "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", 1656 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" 1657 | }, 1658 | "blueimp-tmpl": { 1659 | "version": "2.5.5", 1660 | "from": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-2.5.5.tgz", 1661 | "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-2.5.5.tgz" 1662 | }, 1663 | "html-minifier": { 1664 | "version": "0.7.2", 1665 | "from": "https://registry.npmjs.org/html-minifier/-/html-minifier-0.7.2.tgz", 1666 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-0.7.2.tgz", 1667 | "dependencies": { 1668 | "change-case": { 1669 | "version": "2.3.0", 1670 | "from": "https://registry.npmjs.org/change-case/-/change-case-2.3.0.tgz", 1671 | "resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.0.tgz", 1672 | "dependencies": { 1673 | "camel-case": { 1674 | "version": "1.1.2", 1675 | "from": "https://registry.npmjs.org/camel-case/-/camel-case-1.1.2.tgz", 1676 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.1.2.tgz" 1677 | }, 1678 | "constant-case": { 1679 | "version": "1.1.1", 1680 | "from": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.1.tgz", 1681 | "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.1.tgz" 1682 | }, 1683 | "dot-case": { 1684 | "version": "1.1.1", 1685 | "from": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.1.tgz", 1686 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.1.tgz" 1687 | }, 1688 | "is-lower-case": { 1689 | "version": "1.1.1", 1690 | "from": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.1.tgz", 1691 | "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.1.tgz" 1692 | }, 1693 | "is-upper-case": { 1694 | "version": "1.1.1", 1695 | "from": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.1.tgz", 1696 | "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.1.tgz" 1697 | }, 1698 | "lower-case": { 1699 | "version": "1.1.2", 1700 | "from": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.2.tgz", 1701 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.2.tgz" 1702 | }, 1703 | "lower-case-first": { 1704 | "version": "1.0.0", 1705 | "from": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.0.tgz", 1706 | "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.0.tgz" 1707 | }, 1708 | "param-case": { 1709 | "version": "1.1.1", 1710 | "from": "https://registry.npmjs.org/param-case/-/param-case-1.1.1.tgz", 1711 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.1.tgz" 1712 | }, 1713 | "pascal-case": { 1714 | "version": "1.1.1", 1715 | "from": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.1.tgz", 1716 | "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.1.tgz" 1717 | }, 1718 | "path-case": { 1719 | "version": "1.1.1", 1720 | "from": "https://registry.npmjs.org/path-case/-/path-case-1.1.1.tgz", 1721 | "resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.1.tgz" 1722 | }, 1723 | "sentence-case": { 1724 | "version": "1.1.2", 1725 | "from": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.2.tgz", 1726 | "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.2.tgz" 1727 | }, 1728 | "snake-case": { 1729 | "version": "1.1.1", 1730 | "from": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.1.tgz", 1731 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.1.tgz" 1732 | }, 1733 | "swap-case": { 1734 | "version": "1.1.1", 1735 | "from": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.1.tgz", 1736 | "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.1.tgz" 1737 | }, 1738 | "title-case": { 1739 | "version": "1.1.1", 1740 | "from": "https://registry.npmjs.org/title-case/-/title-case-1.1.1.tgz", 1741 | "resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.1.tgz" 1742 | }, 1743 | "upper-case": { 1744 | "version": "1.1.2", 1745 | "from": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.2.tgz", 1746 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.2.tgz" 1747 | }, 1748 | "upper-case-first": { 1749 | "version": "1.1.1", 1750 | "from": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.1.tgz", 1751 | "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.1.tgz" 1752 | } 1753 | } 1754 | }, 1755 | "clean-css": { 1756 | "version": "3.1.9", 1757 | "from": "https://registry.npmjs.org/clean-css/-/clean-css-3.1.9.tgz", 1758 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.1.9.tgz", 1759 | "dependencies": { 1760 | "commander": { 1761 | "version": "2.6.0", 1762 | "from": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", 1763 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz" 1764 | }, 1765 | "source-map": { 1766 | "version": "0.1.43", 1767 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 1768 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 1769 | "dependencies": { 1770 | "amdefine": { 1771 | "version": "1.0.0", 1772 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 1773 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1774 | } 1775 | } 1776 | } 1777 | } 1778 | }, 1779 | "cli": { 1780 | "version": "0.6.6", 1781 | "from": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", 1782 | "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", 1783 | "dependencies": { 1784 | "glob": { 1785 | "version": "3.2.11", 1786 | "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 1787 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 1788 | "dependencies": { 1789 | "inherits": { 1790 | "version": "2.0.1", 1791 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1792 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1793 | }, 1794 | "minimatch": { 1795 | "version": "0.3.0", 1796 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 1797 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 1798 | "dependencies": { 1799 | "lru-cache": { 1800 | "version": "2.6.5", 1801 | "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", 1802 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" 1803 | }, 1804 | "sigmund": { 1805 | "version": "1.0.1", 1806 | "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 1807 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" 1808 | } 1809 | } 1810 | } 1811 | } 1812 | }, 1813 | "exit": { 1814 | "version": "0.1.2", 1815 | "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 1816 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" 1817 | } 1818 | } 1819 | }, 1820 | "concat-stream": { 1821 | "version": "1.4.10", 1822 | "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", 1823 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", 1824 | "dependencies": { 1825 | "inherits": { 1826 | "version": "2.0.1", 1827 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1828 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1829 | }, 1830 | "typedarray": { 1831 | "version": "0.0.6", 1832 | "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1833 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" 1834 | }, 1835 | "readable-stream": { 1836 | "version": "1.1.13", 1837 | "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", 1838 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", 1839 | "dependencies": { 1840 | "core-util-is": { 1841 | "version": "1.0.1", 1842 | "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", 1843 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" 1844 | }, 1845 | "isarray": { 1846 | "version": "0.0.1", 1847 | "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1848 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 1849 | }, 1850 | "string_decoder": { 1851 | "version": "0.10.31", 1852 | "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1853 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 1854 | } 1855 | } 1856 | } 1857 | } 1858 | }, 1859 | "uglify-js": { 1860 | "version": "2.4.24", 1861 | "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", 1862 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", 1863 | "dependencies": { 1864 | "async": { 1865 | "version": "0.2.10", 1866 | "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 1867 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" 1868 | }, 1869 | "source-map": { 1870 | "version": "0.1.34", 1871 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", 1872 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", 1873 | "dependencies": { 1874 | "amdefine": { 1875 | "version": "1.0.0", 1876 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 1877 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1878 | } 1879 | } 1880 | }, 1881 | "uglify-to-browserify": { 1882 | "version": "1.0.2", 1883 | "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 1884 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" 1885 | }, 1886 | "yargs": { 1887 | "version": "3.5.4", 1888 | "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", 1889 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", 1890 | "dependencies": { 1891 | "camelcase": { 1892 | "version": "1.2.0", 1893 | "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.0.tgz", 1894 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.0.tgz" 1895 | }, 1896 | "decamelize": { 1897 | "version": "1.0.0", 1898 | "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz", 1899 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" 1900 | }, 1901 | "window-size": { 1902 | "version": "0.1.0", 1903 | "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 1904 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" 1905 | }, 1906 | "wordwrap": { 1907 | "version": "0.0.2", 1908 | "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 1909 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" 1910 | } 1911 | } 1912 | } 1913 | } 1914 | }, 1915 | "relateurl": { 1916 | "version": "0.2.6", 1917 | "from": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.6.tgz", 1918 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.6.tgz" 1919 | } 1920 | } 1921 | }, 1922 | "lodash": { 1923 | "version": "3.9.3", 1924 | "from": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", 1925 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz" 1926 | } 1927 | } 1928 | }, 1929 | "json-loader": { 1930 | "version": "0.5.2", 1931 | "from": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.2.tgz", 1932 | "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.2.tgz" 1933 | }, 1934 | "lodash": { 1935 | "version": "3.10.0", 1936 | "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz", 1937 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" 1938 | }, 1939 | "react": { 1940 | "version": "0.13.3", 1941 | "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", 1942 | "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", 1943 | "dependencies": { 1944 | "envify": { 1945 | "version": "3.4.0", 1946 | "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", 1947 | "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", 1948 | "dependencies": { 1949 | "through": { 1950 | "version": "2.3.8", 1951 | "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1952 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1953 | }, 1954 | "jstransform": { 1955 | "version": "10.1.0", 1956 | "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", 1957 | "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", 1958 | "dependencies": { 1959 | "base62": { 1960 | "version": "0.1.1", 1961 | "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", 1962 | "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" 1963 | }, 1964 | "esprima-fb": { 1965 | "version": "13001.1001.0-dev-harmony-fb", 1966 | "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", 1967 | "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" 1968 | }, 1969 | "source-map": { 1970 | "version": "0.1.31", 1971 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", 1972 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", 1973 | "dependencies": { 1974 | "amdefine": { 1975 | "version": "1.0.0", 1976 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 1977 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 1978 | } 1979 | } 1980 | } 1981 | } 1982 | } 1983 | } 1984 | } 1985 | } 1986 | }, 1987 | "style-loader": { 1988 | "version": "0.12.3", 1989 | "from": "https://registry.npmjs.org/style-loader/-/style-loader-0.12.3.tgz", 1990 | "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.12.3.tgz", 1991 | "dependencies": { 1992 | "loader-utils": { 1993 | "version": "0.2.11", 1994 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1995 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 1996 | "dependencies": { 1997 | "big.js": { 1998 | "version": "3.1.3", 1999 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 2000 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 2001 | }, 2002 | "json5": { 2003 | "version": "0.4.0", 2004 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 2005 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 2006 | } 2007 | } 2008 | } 2009 | } 2010 | }, 2011 | "stylus-loader": { 2012 | "version": "1.2.1", 2013 | "from": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-1.2.1.tgz", 2014 | "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-1.2.1.tgz", 2015 | "dependencies": { 2016 | "loader-utils": { 2017 | "version": "0.2.11", 2018 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 2019 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 2020 | "dependencies": { 2021 | "big.js": { 2022 | "version": "3.1.3", 2023 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 2024 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 2025 | }, 2026 | "json5": { 2027 | "version": "0.4.0", 2028 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 2029 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 2030 | } 2031 | } 2032 | }, 2033 | "stylus": { 2034 | "version": "0.49.3", 2035 | "from": "https://registry.npmjs.org/stylus/-/stylus-0.49.3.tgz", 2036 | "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.49.3.tgz", 2037 | "dependencies": { 2038 | "css-parse": { 2039 | "version": "1.7.0", 2040 | "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", 2041 | "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz" 2042 | }, 2043 | "mkdirp": { 2044 | "version": "0.3.5", 2045 | "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", 2046 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" 2047 | }, 2048 | "sax": { 2049 | "version": "0.5.8", 2050 | "from": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", 2051 | "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz" 2052 | }, 2053 | "glob": { 2054 | "version": "3.2.11", 2055 | "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 2056 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", 2057 | "dependencies": { 2058 | "inherits": { 2059 | "version": "2.0.1", 2060 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2061 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2062 | }, 2063 | "minimatch": { 2064 | "version": "0.3.0", 2065 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 2066 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", 2067 | "dependencies": { 2068 | "lru-cache": { 2069 | "version": "2.6.5", 2070 | "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", 2071 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" 2072 | }, 2073 | "sigmund": { 2074 | "version": "1.0.1", 2075 | "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2076 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" 2077 | } 2078 | } 2079 | } 2080 | } 2081 | }, 2082 | "source-map": { 2083 | "version": "0.1.43", 2084 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 2085 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 2086 | "dependencies": { 2087 | "amdefine": { 2088 | "version": "1.0.0", 2089 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 2090 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 2091 | } 2092 | } 2093 | } 2094 | } 2095 | }, 2096 | "when": { 2097 | "version": "3.6.4", 2098 | "from": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", 2099 | "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz" 2100 | } 2101 | } 2102 | }, 2103 | "url-loader": { 2104 | "version": "0.5.6", 2105 | "from": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.6.tgz", 2106 | "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.6.tgz", 2107 | "dependencies": { 2108 | "loader-utils": { 2109 | "version": "0.2.11", 2110 | "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 2111 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", 2112 | "dependencies": { 2113 | "big.js": { 2114 | "version": "3.1.3", 2115 | "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", 2116 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 2117 | }, 2118 | "json5": { 2119 | "version": "0.4.0", 2120 | "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 2121 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" 2122 | } 2123 | } 2124 | }, 2125 | "mime": { 2126 | "version": "1.2.11", 2127 | "from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", 2128 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" 2129 | } 2130 | } 2131 | }, 2132 | "web3": { 2133 | "version": "0.10.0", 2134 | "from": "https://registry.npmjs.org/web3/-/web3-0.10.0.tgz", 2135 | "resolved": "https://registry.npmjs.org/web3/-/web3-0.10.0.tgz", 2136 | "dependencies": { 2137 | "bignumber.js": { 2138 | "version": "2.0.7", 2139 | "from": "git://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", 2140 | "resolved": "git://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" 2141 | }, 2142 | "crypto-js": { 2143 | "version": "3.1.5", 2144 | "from": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.5.tgz", 2145 | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.5.tgz" 2146 | }, 2147 | "xmlhttprequest": { 2148 | "version": "1.7.0", 2149 | "from": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.7.0.tgz", 2150 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.7.0.tgz" 2151 | } 2152 | } 2153 | }, 2154 | "webpack": { 2155 | "version": "1.10.5", 2156 | "from": "https://registry.npmjs.org/webpack/-/webpack-1.10.5.tgz", 2157 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.10.5.tgz", 2158 | "dependencies": { 2159 | "async": { 2160 | "version": "1.4.0", 2161 | "from": "https://registry.npmjs.org/async/-/async-1.4.0.tgz", 2162 | "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz" 2163 | }, 2164 | "clone": { 2165 | "version": "1.0.2", 2166 | "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", 2167 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" 2168 | }, 2169 | "enhanced-resolve": { 2170 | "version": "0.9.0", 2171 | "from": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", 2172 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", 2173 | "dependencies": { 2174 | "graceful-fs": { 2175 | "version": "3.0.8", 2176 | "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", 2177 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" 2178 | } 2179 | } 2180 | }, 2181 | "esprima": { 2182 | "version": "1.2.5", 2183 | "from": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", 2184 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz" 2185 | }, 2186 | "interpret": { 2187 | "version": "0.6.5", 2188 | "from": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz", 2189 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" 2190 | }, 2191 | "memory-fs": { 2192 | "version": "0.2.0", 2193 | "from": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", 2194 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" 2195 | }, 2196 | "mkdirp": { 2197 | "version": "0.5.1", 2198 | "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2199 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2200 | "dependencies": { 2201 | "minimist": { 2202 | "version": "0.0.8", 2203 | "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2204 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 2205 | } 2206 | } 2207 | }, 2208 | "node-libs-browser": { 2209 | "version": "0.5.2", 2210 | "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", 2211 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", 2212 | "dependencies": { 2213 | "assert": { 2214 | "version": "1.3.0", 2215 | "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", 2216 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" 2217 | }, 2218 | "browserify-zlib": { 2219 | "version": "0.1.4", 2220 | "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", 2221 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", 2222 | "dependencies": { 2223 | "pako": { 2224 | "version": "0.2.7", 2225 | "from": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz", 2226 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz" 2227 | } 2228 | } 2229 | }, 2230 | "buffer": { 2231 | "version": "3.3.1", 2232 | "from": "https://registry.npmjs.org/buffer/-/buffer-3.3.1.tgz", 2233 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.3.1.tgz", 2234 | "dependencies": { 2235 | "base64-js": { 2236 | "version": "0.0.8", 2237 | "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", 2238 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" 2239 | }, 2240 | "ieee754": { 2241 | "version": "1.1.6", 2242 | "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", 2243 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" 2244 | }, 2245 | "is-array": { 2246 | "version": "1.0.1", 2247 | "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", 2248 | "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" 2249 | } 2250 | } 2251 | }, 2252 | "console-browserify": { 2253 | "version": "1.1.0", 2254 | "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 2255 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 2256 | "dependencies": { 2257 | "date-now": { 2258 | "version": "0.1.4", 2259 | "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 2260 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" 2261 | } 2262 | } 2263 | }, 2264 | "constants-browserify": { 2265 | "version": "0.0.1", 2266 | "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", 2267 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" 2268 | }, 2269 | "crypto-browserify": { 2270 | "version": "3.2.8", 2271 | "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", 2272 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", 2273 | "dependencies": { 2274 | "pbkdf2-compat": { 2275 | "version": "2.0.1", 2276 | "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", 2277 | "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" 2278 | }, 2279 | "ripemd160": { 2280 | "version": "0.2.0", 2281 | "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", 2282 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" 2283 | }, 2284 | "sha.js": { 2285 | "version": "2.2.6", 2286 | "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", 2287 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" 2288 | } 2289 | } 2290 | }, 2291 | "domain-browser": { 2292 | "version": "1.1.4", 2293 | "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", 2294 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" 2295 | }, 2296 | "events": { 2297 | "version": "1.0.2", 2298 | "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", 2299 | "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" 2300 | }, 2301 | "http-browserify": { 2302 | "version": "1.7.0", 2303 | "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", 2304 | "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", 2305 | "dependencies": { 2306 | "Base64": { 2307 | "version": "0.2.1", 2308 | "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", 2309 | "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" 2310 | }, 2311 | "inherits": { 2312 | "version": "2.0.1", 2313 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2314 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2315 | } 2316 | } 2317 | }, 2318 | "https-browserify": { 2319 | "version": "0.0.0", 2320 | "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", 2321 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" 2322 | }, 2323 | "os-browserify": { 2324 | "version": "0.1.2", 2325 | "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", 2326 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" 2327 | }, 2328 | "path-browserify": { 2329 | "version": "0.0.0", 2330 | "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", 2331 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" 2332 | }, 2333 | "process": { 2334 | "version": "0.11.1", 2335 | "from": "https://registry.npmjs.org/process/-/process-0.11.1.tgz", 2336 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.1.tgz" 2337 | }, 2338 | "punycode": { 2339 | "version": "1.3.2", 2340 | "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2341 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" 2342 | }, 2343 | "querystring-es3": { 2344 | "version": "0.2.1", 2345 | "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2346 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" 2347 | }, 2348 | "readable-stream": { 2349 | "version": "1.1.13", 2350 | "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", 2351 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", 2352 | "dependencies": { 2353 | "core-util-is": { 2354 | "version": "1.0.1", 2355 | "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", 2356 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" 2357 | }, 2358 | "isarray": { 2359 | "version": "0.0.1", 2360 | "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2361 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 2362 | }, 2363 | "inherits": { 2364 | "version": "2.0.1", 2365 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2366 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2367 | } 2368 | } 2369 | }, 2370 | "stream-browserify": { 2371 | "version": "1.0.0", 2372 | "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", 2373 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", 2374 | "dependencies": { 2375 | "inherits": { 2376 | "version": "2.0.1", 2377 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2378 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2379 | } 2380 | } 2381 | }, 2382 | "string_decoder": { 2383 | "version": "0.10.31", 2384 | "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2385 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 2386 | }, 2387 | "timers-browserify": { 2388 | "version": "1.4.1", 2389 | "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", 2390 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" 2391 | }, 2392 | "tty-browserify": { 2393 | "version": "0.0.0", 2394 | "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 2395 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" 2396 | }, 2397 | "url": { 2398 | "version": "0.10.3", 2399 | "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 2400 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 2401 | "dependencies": { 2402 | "querystring": { 2403 | "version": "0.2.0", 2404 | "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2405 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" 2406 | } 2407 | } 2408 | }, 2409 | "util": { 2410 | "version": "0.10.3", 2411 | "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 2412 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 2413 | "dependencies": { 2414 | "inherits": { 2415 | "version": "2.0.1", 2416 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2417 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2418 | } 2419 | } 2420 | }, 2421 | "vm-browserify": { 2422 | "version": "0.0.4", 2423 | "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", 2424 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", 2425 | "dependencies": { 2426 | "indexof": { 2427 | "version": "0.0.1", 2428 | "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 2429 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" 2430 | } 2431 | } 2432 | } 2433 | } 2434 | }, 2435 | "optimist": { 2436 | "version": "0.6.1", 2437 | "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 2438 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 2439 | "dependencies": { 2440 | "wordwrap": { 2441 | "version": "0.0.3", 2442 | "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 2443 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" 2444 | }, 2445 | "minimist": { 2446 | "version": "0.0.10", 2447 | "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 2448 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" 2449 | } 2450 | } 2451 | }, 2452 | "supports-color": { 2453 | "version": "3.1.0", 2454 | "from": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.0.tgz", 2455 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.0.tgz", 2456 | "dependencies": { 2457 | "has-flag": { 2458 | "version": "1.0.0", 2459 | "from": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 2460 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" 2461 | } 2462 | } 2463 | }, 2464 | "tapable": { 2465 | "version": "0.1.9", 2466 | "from": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz", 2467 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" 2468 | }, 2469 | "uglify-js": { 2470 | "version": "2.4.24", 2471 | "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", 2472 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", 2473 | "dependencies": { 2474 | "async": { 2475 | "version": "0.2.10", 2476 | "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 2477 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" 2478 | }, 2479 | "source-map": { 2480 | "version": "0.1.34", 2481 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", 2482 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", 2483 | "dependencies": { 2484 | "amdefine": { 2485 | "version": "1.0.0", 2486 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 2487 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 2488 | } 2489 | } 2490 | }, 2491 | "uglify-to-browserify": { 2492 | "version": "1.0.2", 2493 | "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 2494 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" 2495 | }, 2496 | "yargs": { 2497 | "version": "3.5.4", 2498 | "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", 2499 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", 2500 | "dependencies": { 2501 | "camelcase": { 2502 | "version": "1.1.0", 2503 | "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz", 2504 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" 2505 | }, 2506 | "decamelize": { 2507 | "version": "1.0.0", 2508 | "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz", 2509 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" 2510 | }, 2511 | "window-size": { 2512 | "version": "0.1.0", 2513 | "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 2514 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" 2515 | }, 2516 | "wordwrap": { 2517 | "version": "0.0.2", 2518 | "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 2519 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" 2520 | } 2521 | } 2522 | } 2523 | } 2524 | }, 2525 | "watchpack": { 2526 | "version": "0.2.8", 2527 | "from": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", 2528 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", 2529 | "dependencies": { 2530 | "async": { 2531 | "version": "0.9.2", 2532 | "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 2533 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" 2534 | }, 2535 | "chokidar": { 2536 | "version": "1.0.5", 2537 | "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", 2538 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", 2539 | "dependencies": { 2540 | "anymatch": { 2541 | "version": "1.3.0", 2542 | "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 2543 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 2544 | "dependencies": { 2545 | "micromatch": { 2546 | "version": "2.2.0", 2547 | "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", 2548 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", 2549 | "dependencies": { 2550 | "arr-diff": { 2551 | "version": "1.0.1", 2552 | "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.0.1.tgz", 2553 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.0.1.tgz", 2554 | "dependencies": { 2555 | "array-slice": { 2556 | "version": "0.2.3", 2557 | "from": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", 2558 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" 2559 | } 2560 | } 2561 | }, 2562 | "array-unique": { 2563 | "version": "0.2.1", 2564 | "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 2565 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" 2566 | }, 2567 | "braces": { 2568 | "version": "1.8.0", 2569 | "from": "https://registry.npmjs.org/braces/-/braces-1.8.0.tgz", 2570 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.0.tgz", 2571 | "dependencies": { 2572 | "expand-range": { 2573 | "version": "1.8.1", 2574 | "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", 2575 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", 2576 | "dependencies": { 2577 | "fill-range": { 2578 | "version": "2.2.2", 2579 | "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", 2580 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", 2581 | "dependencies": { 2582 | "is-number": { 2583 | "version": "1.1.2", 2584 | "from": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz", 2585 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz" 2586 | }, 2587 | "isobject": { 2588 | "version": "1.0.2", 2589 | "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", 2590 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" 2591 | }, 2592 | "randomatic": { 2593 | "version": "1.1.0", 2594 | "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz", 2595 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" 2596 | }, 2597 | "repeat-string": { 2598 | "version": "1.5.2", 2599 | "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz", 2600 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" 2601 | } 2602 | } 2603 | } 2604 | } 2605 | }, 2606 | "preserve": { 2607 | "version": "0.2.0", 2608 | "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2609 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" 2610 | }, 2611 | "repeat-element": { 2612 | "version": "1.1.2", 2613 | "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2614 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" 2615 | } 2616 | } 2617 | }, 2618 | "expand-brackets": { 2619 | "version": "0.1.2", 2620 | "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.2.tgz", 2621 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.2.tgz" 2622 | }, 2623 | "extglob": { 2624 | "version": "0.3.0", 2625 | "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.0.tgz", 2626 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.0.tgz", 2627 | "dependencies": { 2628 | "is-extglob": { 2629 | "version": "1.0.0", 2630 | "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 2631 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 2632 | } 2633 | } 2634 | }, 2635 | "filename-regex": { 2636 | "version": "2.0.0", 2637 | "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", 2638 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" 2639 | }, 2640 | "kind-of": { 2641 | "version": "1.1.0", 2642 | "from": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", 2643 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" 2644 | }, 2645 | "object.omit": { 2646 | "version": "1.1.0", 2647 | "from": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", 2648 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", 2649 | "dependencies": { 2650 | "for-own": { 2651 | "version": "0.1.3", 2652 | "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", 2653 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", 2654 | "dependencies": { 2655 | "for-in": { 2656 | "version": "0.1.4", 2657 | "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz", 2658 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" 2659 | } 2660 | } 2661 | }, 2662 | "isobject": { 2663 | "version": "1.0.2", 2664 | "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", 2665 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" 2666 | } 2667 | } 2668 | }, 2669 | "parse-glob": { 2670 | "version": "3.0.2", 2671 | "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", 2672 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", 2673 | "dependencies": { 2674 | "glob-base": { 2675 | "version": "0.2.0", 2676 | "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz", 2677 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" 2678 | }, 2679 | "is-dotfile": { 2680 | "version": "1.0.1", 2681 | "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz", 2682 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" 2683 | }, 2684 | "is-extglob": { 2685 | "version": "1.0.0", 2686 | "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 2687 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 2688 | } 2689 | } 2690 | }, 2691 | "regex-cache": { 2692 | "version": "0.4.2", 2693 | "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", 2694 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", 2695 | "dependencies": { 2696 | "is-equal-shallow": { 2697 | "version": "0.1.3", 2698 | "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 2699 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" 2700 | }, 2701 | "is-primitive": { 2702 | "version": "2.0.0", 2703 | "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 2704 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" 2705 | } 2706 | } 2707 | } 2708 | } 2709 | } 2710 | } 2711 | }, 2712 | "arrify": { 2713 | "version": "1.0.0", 2714 | "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz", 2715 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" 2716 | }, 2717 | "async-each": { 2718 | "version": "0.1.6", 2719 | "from": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", 2720 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" 2721 | }, 2722 | "glob-parent": { 2723 | "version": "1.2.0", 2724 | "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz", 2725 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" 2726 | }, 2727 | "is-binary-path": { 2728 | "version": "1.0.1", 2729 | "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2730 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2731 | "dependencies": { 2732 | "binary-extensions": { 2733 | "version": "1.3.1", 2734 | "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz", 2735 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" 2736 | } 2737 | } 2738 | }, 2739 | "is-glob": { 2740 | "version": "1.1.3", 2741 | "from": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz", 2742 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" 2743 | }, 2744 | "path-is-absolute": { 2745 | "version": "1.0.0", 2746 | "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", 2747 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" 2748 | }, 2749 | "readdirp": { 2750 | "version": "1.4.0", 2751 | "from": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", 2752 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", 2753 | "dependencies": { 2754 | "graceful-fs": { 2755 | "version": "4.1.2", 2756 | "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz", 2757 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" 2758 | }, 2759 | "minimatch": { 2760 | "version": "0.2.14", 2761 | "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 2762 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 2763 | "dependencies": { 2764 | "lru-cache": { 2765 | "version": "2.6.5", 2766 | "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", 2767 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" 2768 | }, 2769 | "sigmund": { 2770 | "version": "1.0.1", 2771 | "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2772 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" 2773 | } 2774 | } 2775 | }, 2776 | "readable-stream": { 2777 | "version": "1.0.33", 2778 | "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", 2779 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", 2780 | "dependencies": { 2781 | "core-util-is": { 2782 | "version": "1.0.1", 2783 | "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", 2784 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" 2785 | }, 2786 | "isarray": { 2787 | "version": "0.0.1", 2788 | "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2789 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 2790 | }, 2791 | "string_decoder": { 2792 | "version": "0.10.31", 2793 | "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2794 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 2795 | }, 2796 | "inherits": { 2797 | "version": "2.0.1", 2798 | "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 2799 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 2800 | } 2801 | } 2802 | } 2803 | } 2804 | }, 2805 | "fsevents": { 2806 | "version": "0.3.6", 2807 | "from": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.6.tgz", 2808 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.6.tgz", 2809 | "dependencies": { 2810 | "nan": { 2811 | "version": "1.8.4", 2812 | "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", 2813 | "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" 2814 | } 2815 | } 2816 | } 2817 | } 2818 | }, 2819 | "graceful-fs": { 2820 | "version": "3.0.8", 2821 | "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", 2822 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" 2823 | } 2824 | } 2825 | }, 2826 | "webpack-core": { 2827 | "version": "0.6.6", 2828 | "from": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", 2829 | "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", 2830 | "dependencies": { 2831 | "source-map": { 2832 | "version": "0.4.4", 2833 | "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 2834 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 2835 | "dependencies": { 2836 | "amdefine": { 2837 | "version": "1.0.0", 2838 | "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", 2839 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" 2840 | } 2841 | } 2842 | }, 2843 | "source-list-map": { 2844 | "version": "0.1.5", 2845 | "from": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz", 2846 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" 2847 | } 2848 | } 2849 | } 2850 | } 2851 | } 2852 | } 2853 | } 2854 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "swoop", 3 | "version": "1.0.2", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "clean": "rm -rf build tmp", 8 | "hot": " babel-node node_modules/.bin/webpack-dev-server --config webpack/hotDev.config.js --hot --progress --colors --inline", 9 | "test": "babel-node node_modules/.bin/webpack --config webpack/test.config.js && cat build/tests.js | tape-run", 10 | "dev": "([ -d build/dev ] && rm build/dev/*) ; babel-node node_modules/.bin/webpack --config webpack/dev.config.js", 11 | "prod": "([ -d build/prod ] && rm build/prod/*) ; babel-node node_modules/.bin/webpack --config webpack/prod.config.js", 12 | "integration": "babel-node node_modules/.bin/webpack --config webpack/test.config.js && cat build/integration.js | tape-run", 13 | "cryptojs": "[ -d vendor/cryptojs ] || (mkdir -p vendor && wget -O vendor/cryptojs.zip 'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/crypto-js/CryptoJS%20v3.1.2.zip' && unzip -d vendor/cryptojs vendor/cryptojs.zip && rm vendor/cryptojs.zip)", 14 | "install": "npm run cryptojs" 15 | }, 16 | "author": "Andreas Brekken ", 17 | "license": "ISC", 18 | "devDependencies": { 19 | "babel": "5.8.19", 20 | "http-proxy": "1.11.1", 21 | "react-hot-loader": "1.2.8", 22 | "tape": "4.0.1", 23 | "tape-catch": "1.0.4", 24 | "tape-run": "1.1.0", 25 | "webpack-dev-server": "1.10.1" 26 | }, 27 | "dependencies": { 28 | "babel-core": "5.8.19", 29 | "babel-loader": "5.3.2", 30 | "babel-runtime": "5.8.19", 31 | "bigi": "1.4.0", 32 | "bitcoinjs-lib": "1.5.7", 33 | "css-loader": "0.15.6", 34 | "debug": "2.2.0", 35 | "ethereumjs-tx": "0.7.3", 36 | "ethereumjs-util": "1.3.5", 37 | "exports-loader": "0.6.2", 38 | "file-loader": "0.8.4", 39 | "html-webpack-plugin": "1.6.0", 40 | "json-loader": "0.5.2", 41 | "lodash": "3.10.0", 42 | "react": "0.13.3", 43 | "style-loader": "0.12.3", 44 | "stylus-loader": "1.2.1", 45 | "url-loader": "0.5.6", 46 | "web3": "0.10.0", 47 | "webpack": "1.10.5" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/client.jsx: -------------------------------------------------------------------------------- 1 | /* global GETH_RPC_URL */ 2 | import React from 'react'; 3 | import Application from './components/Application'; 4 | import web3 from 'web3'; 5 | import '../styles/index.styl'; 6 | 7 | const provider = new web3.providers.HttpProvider(GETH_RPC_URL); 8 | web3.setProvider(provider); 9 | 10 | React.render( 11 | , 12 | document.body 13 | ); 14 | -------------------------------------------------------------------------------- /src/components/Application.jsx: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import LoadWallet from './LoadWallet'; 3 | import WalletPassword from './WalletPassword'; 4 | import EnterAmount from './EnterAmount'; 5 | import web3 from 'web3'; 6 | import EnterAddress from './EnterAddress'; 7 | import overrideSendTransaction from '../overrideSendTransaction'; 8 | import Stage from './Stage'; 9 | import Sent from './Sent'; 10 | 11 | export default class Application extends Component { 12 | componentWillMount() { 13 | overrideSendTransaction(web3.eth, () => { 14 | return this.state.wallet.privKey; 15 | }); 16 | } 17 | 18 | componentDidUpdate(prevProps, prevState) { 19 | if (prevState.stage !== this.state.stage) { 20 | const ref = this.refs[`${this.state.stage}-stage`]; 21 | if (!ref) { return; } 22 | const node = React.findDOMNode(ref); 23 | if (!node.scrollIntoView) { return; } 24 | node.scrollIntoView(false); 25 | } 26 | } 27 | 28 | onLoadWallet = (wallet) => { 29 | this.setState({ 30 | stage: 'decrypt-wallet', 31 | originalWallet: wallet, 32 | }); 33 | } 34 | 35 | onWalletPassword = (wallet) => { 36 | this.setState({ 37 | wallet, 38 | stage: 'amount', 39 | }); 40 | } 41 | 42 | onEnterAmount = (amount) => { 43 | this.setState({ 44 | amount, 45 | stage: 'address', 46 | }); 47 | } 48 | 49 | onSent = (hash) => { 50 | this.setState({ 51 | stage: 'sent', 52 | hash, 53 | }); 54 | 55 | // Scroll to bottom 56 | setTimeout(() => { 57 | window.scrollTo(0, document.body.scrollHeight); 58 | }, 50); 59 | } 60 | 61 | onClickRestart = (event) => { 62 | event.preventDefault(); 63 | window.scrollTo(0, 0); 64 | location.reload(); 65 | } 66 | 67 | render() { 68 | return ( 69 |
70 | 73 |
74 | 75 |

Claim your ether pre-sale wallet

76 |

77 | Use this open source tool to send ethers from your pre-sale wallet to Kraken. 78 |

79 |
80 | 81 |
82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | {this.state.stage === 'sent' && 95 | 96 | } 97 |
98 |
99 | ); 100 | } 101 | 102 | state = { 103 | stage: 'load-wallet', 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/components/Balance.jsx: -------------------------------------------------------------------------------- 1 | import React, { PropTypes, Component } from 'react'; 2 | import web3 from 'web3'; 3 | 4 | export default class Balance extends Component { 5 | static propTypes = { 6 | address: PropTypes.string.isRequired, 7 | } 8 | 9 | constructor(props) { 10 | super(props); 11 | if (props.address) { this.fetch(); } 12 | } 13 | 14 | componentDidReceiveProps(prevProps) { 15 | if (prevProps.address !== this.props.address) { 16 | this.fetch(); 17 | } 18 | } 19 | 20 | fetch() { 21 | this.setState({ loading: true, error: null, balance: null }); 22 | 23 | web3.eth.getBalance(this.props.address, (error, balance) => { 24 | this.setState({ loading: false }); 25 | if (error) { this.setState({ error }); } 26 | this.setState({ balance }); 27 | }); 28 | } 29 | 30 | render() { 31 | if (this.state.loading) { 32 | return Fetching balance...; 33 | } 34 | 35 | if (this.state.error) { 36 | return Could not fetch balance; 37 | } 38 | 39 | // Convert to ETH and round down. 40 | const ethBalance = web3.fromWei(web3.toBigNumber(this.state.balance), 'ether').toFixed(2, 1); 41 | 42 | return You have {ethBalance} ETH; 43 | } 44 | 45 | state = { 46 | error: null, 47 | loading: false, 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/components/EnterAddress.jsx: -------------------------------------------------------------------------------- 1 | import React, { PropTypes, Component } from 'react'; 2 | import deposit from '../../src/deposit'; 3 | 4 | function isAddressValid(address) { 5 | return !!address.match(/^0x[a-fA-F0-9]{40}$/); 6 | } 7 | 8 | export default class EnterAddress extends Component { 9 | static propTypes = { 10 | onSent: PropTypes.func.isRequired, 11 | wallet: PropTypes.object, 12 | amount: PropTypes.string, 13 | } 14 | 15 | onSubmit = (event) => { 16 | event.preventDefault(); 17 | 18 | const { address } = this.state; 19 | 20 | if (!isAddressValid(address)) { 21 | this.setState({ 22 | error: 'Invalid deposit address', 23 | }); 24 | return; 25 | } 26 | 27 | deposit( 28 | this.props.wallet.address, 29 | address, 30 | this.props.amount, 31 | (err, hash) => { 32 | if (err) { 33 | this.setState({ error: `Deposit failed: ${err.message}` }); 34 | return; 35 | } 36 | this.props.onSent(hash); 37 | } 38 | ); 39 | } 40 | 41 | render() { 42 | return ( 43 |
44 |
45 | 46 |

47 | You can find this under Funding, Deposit, Ether 48 | on kraken.com. (Starts with 0x) 49 |

50 | this.setState({ address: e.target.value, error: null })} 55 | /> 56 |
57 | 58 | {this.state.error &&
{this.state.error}
} 59 |
60 | ); 61 | } 62 | 63 | state = { 64 | address: '', 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/components/EnterAmount.jsx: -------------------------------------------------------------------------------- 1 | import React, { PropTypes, Component } from 'react'; 2 | import web3 from 'web3'; 3 | import Balance from './Balance'; 4 | 5 | export default class EnterAmount extends Component { 6 | static propTypes = { 7 | onAmount: PropTypes.func.isRequired, 8 | address: PropTypes.string, 9 | } 10 | 11 | state = { 12 | error: null, 13 | } 14 | 15 | onSubmit = (event) => { 16 | event.preventDefault(); 17 | const amount = web3.toWei(this.state.amount, 'ether'); 18 | this.props.onAmount(amount); 19 | } 20 | 21 | render() { 22 | return ( 23 |
24 |
25 | 26 | this.setState({ amount: e.target.value })} 30 | /> 31 | ETH 32 | {this.props.address && } 33 |
34 | 35 | {this.state.error &&
{this.state.error}
} 36 |
37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/components/LoadWallet.jsx: -------------------------------------------------------------------------------- 1 | import React, { PropTypes, Component } from 'react'; 2 | 3 | export default class LoadWallet extends Component { 4 | static propTypes = { 5 | onLoad: PropTypes.func.isRequired, 6 | } 7 | 8 | onChangeFile = (event) => { 9 | this.setState({ error: null }); 10 | 11 | const file = event.target.files[0]; 12 | if (!file) { return; } 13 | 14 | if (typeof FileReader !== 'function') { 15 | this.setState({ error: 'Browser too old. Try Chrome.' }); 16 | return; 17 | } 18 | 19 | const reader = new FileReader(); 20 | 21 | reader.onload = (e) => { 22 | let wallet; 23 | 24 | try { 25 | wallet = JSON.parse(e.target.result); 26 | } catch (err) { 27 | this.setState({ error: 'File is not an Ethereum wallet.json' }); 28 | return; 29 | } 30 | 31 | if (!wallet || !wallet.encseed) { 32 | this.setState({ error: 'File is not an Ethereum wallet.json' }); 33 | return; 34 | } 35 | 36 | this.props.onLoad(wallet); 37 | }; 38 | 39 | reader.onerror = () => { 40 | this.setState({ error: `Failed to read file: ${reader.error.message}` }); 41 | }; 42 | 43 | reader.readAsText(file); 44 | } 45 | 46 | render() { 47 | return ( 48 |
49 | 50 |

Choose the wallet.json file from the pre-sale.

51 | 52 | {this.state.error &&
{this.state.error}
} 53 |
54 | ); 55 | } 56 | 57 | state = {} 58 | } 59 | -------------------------------------------------------------------------------- /src/components/Sent.jsx: -------------------------------------------------------------------------------- 1 | import React, { Component, PropTypes } from 'react'; 2 | 3 | export default class Sent extends Component { 4 | static propTypes = { 5 | hash: PropTypes.string.isRequired, 6 | } 7 | 8 | componentDidMount() { 9 | this.timer = setInterval(() => { 10 | const secondsRemaining = this.state.secondsRemaining - 1; 11 | this.setState({ secondsRemaining }); 12 | if (!secondsRemaining) { 13 | clearInterval(this.timer); 14 | this.timer = null; 15 | } 16 | }, 1e3); 17 | } 18 | 19 | componentWillUnmount() { 20 | if (this.timer) { 21 | clearInterval(this.timer); 22 | this.timer = null; 23 | } 24 | } 25 | 26 | render() { 27 | return ( 28 |
29 | 32 | 33 |

34 | Your deposit will be available on Kraken in a few minutes. The link below will work 35 | in around 30 seconds. 36 |

37 | 38 |

39 | 0} 44 | > 45 | View in block explorer 46 | {this.state.secondsRemaining > 0 && 47 | {' '}({this.state.secondsRemaining}) 48 | } 49 | 50 |

51 |
52 | ); 53 | } 54 | 55 | state = { 56 | secondsRemaining: 30, 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/components/Stage.jsx: -------------------------------------------------------------------------------- 1 | import React, { Component, PropTypes } from 'react'; 2 | 3 | export default class Stage extends Component { 4 | static propTypes = { 5 | active: PropTypes.bool.isRequired, 6 | children: PropTypes.any.isRequired, 7 | number: PropTypes.string, 8 | } 9 | 10 | componentDidUpdate(prevProps) { 11 | if (prevProps.active !== this.props.active && this.props.active) { 12 | this.focusFirstInput(); 13 | } 14 | } 15 | 16 | render() { 17 | return ( 18 |
19 | {this.props.number &&

{this.props.number}

} 20 | {this.props.children} 21 |
22 | ); 23 | } 24 | 25 | focusFirstInput() { 26 | const node = this.refs.stage.getDOMNode(); 27 | const input = node.querySelector('input').focus(); 28 | if (!input) { return; } 29 | input.focus(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/components/WalletPassword.jsx: -------------------------------------------------------------------------------- 1 | import React, { PropTypes, Component } from 'react'; 2 | import loadWallet from '../loadWallet'; 3 | 4 | export default class DecryptWallet extends Component { 5 | static propTypes = { 6 | onPassword: PropTypes.func.isRequired, 7 | wallet: PropTypes.object, 8 | } 9 | 10 | onSubmit = (event) => { 11 | event.preventDefault(); 12 | 13 | this.setState({ error: null }); 14 | 15 | let wallet; 16 | 17 | try { 18 | wallet = loadWallet(this.props.wallet, this.state.password); 19 | } catch (e) { 20 | console.trace(e); 21 | this.setState({ 22 | error: 'Decrypt failed. Wrong password?', 23 | }); 24 | return; 25 | } 26 | 27 | this.setState({ state: this.state.password.replace(/./g, '-') }); 28 | 29 | this.props.onPassword(wallet); 30 | } 31 | 32 | render() { 33 | return ( 34 |
35 |
36 | 37 |

Your password is never sent outside of your browser.

38 | this.setState({ password: e.target.value, error: null })} 42 | /> 43 |
44 | 45 | {this.state.error &&
{this.state.error}
} 46 |
47 | ); 48 | } 49 | 50 | state = { 51 | password: '', 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/decryptSeed.js: -------------------------------------------------------------------------------- 1 | import CryptoJS from 'exports?CryptoJS!../vendor/cryptojs/rollups/aes'; 2 | import assert from 'assert'; 3 | 4 | function bufferToCryptoJs(x) { 5 | return CryptoJS.enc.Hex.parse(x.toString('hex')); 6 | } 7 | 8 | function cryptoJsToBuffer(x) { 9 | return new Buffer(CryptoJS.enc.Hex.stringify(x), 'hex'); 10 | } 11 | 12 | export default function decryptSeed(key, encryptedSeed) { 13 | assert(Buffer.isBuffer(key), 'key must be Buffer'); 14 | assert(Buffer.isBuffer(encryptedSeed), 'encryptedSeed must be Buffer'); 15 | 16 | const iv = bufferToCryptoJs(encryptedSeed.slice(0, 16)); 17 | const ciphertext = bufferToCryptoJs(encryptedSeed.slice(16)); 18 | 19 | const cleartext = cryptoJsToBuffer(CryptoJS.AES.decrypt({ 20 | ciphertext: ciphertext, 21 | }, 22 | bufferToCryptoJs(key), 23 | { 24 | iv: iv, 25 | mode: CryptoJS.mode.CBC, 26 | padding: CryptoJS.pad.Pkcs7, 27 | })); 28 | 29 | if (cleartext.length === 64) { 30 | return new Buffer(cleartext.toString(), 'hex'); 31 | } 32 | 33 | return cleartext; 34 | } 35 | -------------------------------------------------------------------------------- /src/deposit.js: -------------------------------------------------------------------------------- 1 | import web3, { eth } from 'web3'; 2 | 3 | export default function deposit(from, to, amount, callback) { 4 | return eth.sendTransaction({ 5 | from, 6 | to, 7 | value: amount, 8 | }, callback); 9 | } 10 | -------------------------------------------------------------------------------- /src/loadWallet.js: -------------------------------------------------------------------------------- 1 | import decryptSeed from './decryptSeed'; 2 | import seedToPrivateKey from './seedToPrivateKey'; 3 | import privateKeyToPublicKey from './privateKeyToPublicKey'; 4 | import publicKeyToAddress from './publicKeyToAddress'; 5 | import passwordToKey from './passwordToKey'; 6 | import assert from 'assert'; 7 | 8 | export default function loadWallet(wallet, password, quirk = false) { 9 | assert.equal(typeof password, 'string'); 10 | 11 | const { encseed, ethaddr } = wallet; 12 | if (!encseed) { throw new Error('encseed field missing from wallet.'); } 13 | if (!ethaddr) { throw new Error('ethaddr field missing from wallet.'); } 14 | 15 | const key = passwordToKey(password); 16 | let seed; 17 | 18 | try { 19 | seed = decryptSeed(key, new Buffer(wallet.encseed, 'hex')); 20 | } catch(e) { 21 | throw new Error(`Failed to decrypt wallet. Bad password? ${e.message}`); 22 | } 23 | 24 | const privKey = seedToPrivateKey(seed, quirk); 25 | const pubKey = privateKeyToPublicKey(privKey); 26 | const address = publicKeyToAddress(pubKey); 27 | 28 | if (address !== ethaddr) { 29 | if (quirk) { 30 | throw new Error('Address from wallet seed not matching address in wallet. Bad password?'); 31 | } 32 | return loadWallet(wallet, password, true); 33 | } 34 | 35 | return { privKey, pubKey, address }; 36 | } 37 | -------------------------------------------------------------------------------- /src/overrideSendTransaction.js: -------------------------------------------------------------------------------- 1 | // From https://github.com/SilentCicero/ethereumjs-accounts/blob/master/index.js#L547 2 | import web3 from 'web3'; 3 | import lodash from 'lodash'; 4 | import Tx from 'ethereumjs-tx'; 5 | const debug = console.log.bind(console); 6 | 7 | const GAS_FOR_TRANSACTION = 21000; 8 | 9 | export function sendTransactionWithKey(tx, privKey, callback) { 10 | debug(`transaction: ${JSON.stringify(tx, null, 4)}`); 11 | debug(`fetching transaction count for ${tx.from}...`); 12 | 13 | web3.eth.getTransactionCount(`0x${tx.from}`, (err, nonce) => { 14 | if (err) { return callback(err); } 15 | debug(`got nonce, ${nonce}`); 16 | 17 | debug('looking up current gas price...'); 18 | web3.eth.getGasPrice((innerErr, gasPrice) => { 19 | if (innerErr) { return callback(innerErr); } 20 | 21 | const txValues = { 22 | nonce, 23 | value: web3.toHex(tx.value), 24 | to: web3.toHex(tx.to), 25 | gasPrice: web3.toHex(gasPrice), 26 | gasLimit: web3.toHex(GAS_FOR_TRANSACTION), 27 | }; 28 | 29 | const txToSign = new Tx(txValues); 30 | 31 | txToSign.sign(privKey); 32 | 33 | const serializedTx = '0x' + txToSign.serialize().toString('hex'); 34 | debug(`serialized transaction: ${serializedTx}`); 35 | 36 | web3.eth.sendRawTransaction(serializedTx, callback); 37 | }); 38 | }); 39 | } 40 | 41 | export default function overrideSendTransaction(eth, lookupPrivKey) { 42 | const real = eth.sendTransaction; 43 | 44 | eth.sendTransaction = lodash.wrap(eth.sendTransaction, (sendTransaction, tx, callback) => { 45 | const privKey = lookupPrivKey(tx.from); 46 | if (!privKey) { 47 | throw new Error(`Private key for ${tx.from} not found.`); 48 | } 49 | sendTransactionWithKey(tx, privKey, callback); 50 | }); 51 | 52 | eth.sendTransaction.real = real; 53 | } 54 | -------------------------------------------------------------------------------- /src/passwordToKey.js: -------------------------------------------------------------------------------- 1 | import { pbkdf2Sync } from 'crypto'; 2 | 3 | /** 4 | * Derive key from the specified password. Magic constants courtesy of 5 | * https://github.com/ethereum/pyethsaletool/blob/master/pyethsaletool.py#L43 6 | */ 7 | export default function passwordToKey(password) { 8 | return pbkdf2Sync(password, password, 2000, 256, 'sha256').slice(0, 16); 9 | } 10 | -------------------------------------------------------------------------------- /src/privateKeyToPublicKey.js: -------------------------------------------------------------------------------- 1 | import BigInteger from 'bigi'; 2 | import ECKey from 'bitcoinjs-lib/src/eckey'; 3 | 4 | export default function privateKeyToPublicKey(privKey) { 5 | const d = BigInteger.fromBuffer(privKey); 6 | const Q = ECKey.curve.G.multiply(d); 7 | const result = Q.getEncoded(false); 8 | return result; 9 | } 10 | -------------------------------------------------------------------------------- /src/publicKeyToAddress.js: -------------------------------------------------------------------------------- 1 | import sha3 from './sha3'; 2 | 3 | export default function publicKeyToAddress(pubKey) { 4 | const input = pubKey.slice(1, 65); 5 | return sha3(input).slice(12).toString('hex'); 6 | } 7 | -------------------------------------------------------------------------------- /src/seedToPrivateKey.js: -------------------------------------------------------------------------------- 1 | import CryptoJS from 'exports?CryptoJS!../vendor/cryptojs/rollups/sha3'; 2 | import sha3 from 'web3/lib/utils/sha3'; 3 | import assert from 'assert'; 4 | 5 | export default function seedToPrivateKey(seed, quirk) { 6 | assert(Buffer.isBuffer(seed)); 7 | 8 | const seedWords = CryptoJS.enc.Hex.parse(seed.toString('hex')); 9 | 10 | if (quirk) { 11 | const result = CryptoJS.SHA3(seed.toString('hex'), { 12 | outputLength: 256, 13 | }); 14 | return new Buffer(CryptoJS.enc.Hex.stringify(result), 'hex'); 15 | } 16 | 17 | return new Buffer(CryptoJS.SHA3(seedWords, { outputLength: 256 }).toString(), 'hex'); 18 | } 19 | -------------------------------------------------------------------------------- /src/sendIbanTransaction.js: -------------------------------------------------------------------------------- 1 | import { eth } from 'web3'; 2 | 3 | export default function sendIbanTransaction(from, iban, amount, callback) { 4 | if (!iban.match(/^XE83ETHKRAKEN/)) { 5 | throw new Error('Institution must be KRAKEN'); 6 | } 7 | 8 | return eth.sendIBANTransaction(from, iban, amount, callback); 9 | } 10 | -------------------------------------------------------------------------------- /src/sha3.js: -------------------------------------------------------------------------------- 1 | import CryptoJS from 'exports?CryptoJS!../vendor/cryptojs/rollups/sha3'; 2 | 3 | const toHex = CryptoJS.enc.Hex.stringify; 4 | const fromHex = CryptoJS.enc.Hex.parse; 5 | 6 | export default function sha3(buffer, length = 256) { 7 | const shad = CryptoJS.SHA3(fromHex(buffer.toString('hex')), { 8 | outputLength: length, 9 | }); 10 | 11 | return new Buffer(toHex(shad), 'hex'); 12 | } 13 | -------------------------------------------------------------------------------- /styles/index.styl: -------------------------------------------------------------------------------- 1 | body 2 | margin: 0px 3 | 4 | p 5 | font-style: normal 6 | font-size: 18px 7 | color: #777 8 | margin: 5px 9 | 10 | img 11 | width: 300px 12 | 13 | .semi_info, .after_input 14 | font-size: 14px 15 | color: #777 16 | letter-spacing: normal 17 | display: block 18 | 19 | .after_input 20 | display: inline-block 21 | margin-left: 10px 22 | 23 | .custom-file-input 24 | border: 0px 25 | 26 | .custom-file-input::-webkit-file-upload-button 27 | visibility: hidden 28 | 29 | .custom-file-input::before 30 | content: 'Select your wallet' 31 | display: inline-block 32 | border: none 33 | color: #FFF 34 | padding: 10px 20px 35 | margin-left: 50px 36 | background-color: #000 37 | border-radius: 1.5em 38 | letter-spacing: 2px 39 | font-size: 11px 40 | text-transform: uppercase 41 | cursor: pointer 42 | 43 | .custom-file-input:hover::before 44 | color: #000 45 | background-color: #f5d327 46 | 47 | label 48 | display: block 49 | font-weight: bold 50 | 51 | input 52 | padding: 10px 53 | font-size: 16px 54 | margin: 10px 0 10px 55 | border-radius: 4px 56 | border: 1px solid #CCC 57 | 58 | h1, h2, h3, label 59 | font-family: Raleway,Raleway,Arial,Helvetica,sans-serif 60 | font-size: 1.9em 61 | letter-spacing: 2px 62 | 63 | h1 64 | margin: 0 65 | margin-top: 50px 66 | text-align: center 67 | font-size: 2em 68 | 69 | h2 70 | font-size: 4em 71 | position: absolute 72 | top: 0px 73 | left: 0px 74 | margin: 20px 20px 20px 20px 75 | 76 | .button 77 | border: none 78 | color: #FFF 79 | padding: 10px 20px 80 | background-color: #000 81 | border-radius: 1.5em 82 | letter-spacing: 2px 83 | text-transform: uppercase 84 | cursor: pointer 85 | margin-top: 10px 86 | &:hover 87 | color: #000 88 | background-color: #f5d327 89 | 90 | .error_message 91 | position: absolute 92 | bottom: 15px 93 | left: 0px 94 | color: rgb(250, 102, 102) 95 | text-align: center 96 | width: 100% 97 | 98 | .application 99 | margin: 0 auto 100 | padding-top: 50px 101 | background-color: #f8f8f8 102 | color: #506e82 103 | font-family: "Helvetic Neue",Helvetica,Arial,sans-serif 104 | text-align: center 105 | 106 | .stages 107 | width: 600px 108 | text-align: center 109 | margin: 0 auto 110 | 111 | .stage 112 | display: inline-block 113 | position: relative 114 | width: 100% 115 | box-sizing: border-box 116 | -webkit-box-sizing: border-box 117 | padding: 40px 100px 118 | margin: 50px 0 119 | background-color: #FFF 120 | border: 1px solid #E4E4E4 121 | border-width: 0px 1px 1px 0px 122 | border-radius: 10px 123 | 124 | @media only screen and (max-device-width: 600px) 125 | .stages 126 | width: 300px 127 | .stage 128 | padding: 20px 129 | h2 130 | display: none 131 | 132 | .stage:not(.active) 133 | opacity: 0.3 134 | pointer-events none 135 | 136 | .application 137 | padding-bottom 100px 138 | 139 | a.button 140 | text-decoration none 141 | font-size 0.6em 142 | display inline-block 143 | 144 | button.restart 145 | position fixed 146 | top 20px 147 | left 20px 148 | font-size 0.75em 149 | background #eee 150 | color #333 151 | border solid 1px #ccc 152 | 153 | 154 | .stage.active 155 | border 2px solid #506e82 156 | padding 39px 75px 157 | 158 | a.button[disabled] 159 | pointer-events none 160 | background #aaa 161 | -------------------------------------------------------------------------------- /tests/decryptSeed.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import decryptSeed from '../src/decryptSeed'; 3 | 4 | test('decryptSeed', t => { 5 | const examples = [ 6 | { 7 | encseed: new Buffer('b393b9b161a6828f1b1d664f943455af5b679304a5f4e4a6b3b609bc048d4fe4c6c3e274a84007a670a156373ac2d6128132d0a3399b053ca2adadd36209a6976d9923acbb94d1121d32e0b476804a7303d3b0507fe7bc1519827bf085ceeaba', 'hex'), 8 | key: new Buffer('460a1521cb4fba8c9891f3c7160727fa', 'hex'), 9 | seed: new Buffer('805b7b7a081f8d0837312d458580a7b19894269b3cdcb4e2cb698bb85c7c943f', 'hex'), 10 | }, 11 | { 12 | encseed: new Buffer('6c982a05d54c3fb4ecc61140859cf5c0ff6579b126855be4c907f9baa68e436a08f4779b1e5b30e739c82052abbe31e62e4b09f64dcd0ef5bf9131847de9f6fdf8eba7dd7c36810cff1146f270728f6135f22e3e383dee686054bcd094459948', 'hex'), 13 | key: new Buffer('a59569f77b0975b60d5f1b43a02a8755', 'hex'), 14 | seed: new Buffer('b37824c01b0d359db00a0b6e6dc518871c6659d22ee76b1fe6467a3d189a6f45', 'hex'), 15 | }, 16 | { 17 | encseed: new Buffer('0df0d17bc0409b0d407b784fc40f0a857bf1242c5597e0714279edc6d12ac2b01f9e4e5bbf3d034e7ac46f29cb25cccac5387149a1012cf99b228e75ff8ce5022b8765932e6528d12e793eaad14d7dff317c637e3d979091c6f9d116f091fc7d', 'hex'), 18 | key: new Buffer('aa95826f1b929689a4d0010ae909ef88', 'hex'), 19 | seed: new Buffer('2a1f8358cc3e2ab77600974d3d601ba086b0ae0671c24314280c70e3a1005663', 'hex'), 20 | }, 21 | ]; 22 | 23 | t.plan(Object.keys(examples).length); 24 | 25 | for (const example of examples) { 26 | const actual = decryptSeed(example.key, example.encseed).toString('hex'); 27 | t.equal(actual, example.seed.toString('hex')); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /tests/deposit.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import deposit from '../src/deposit'; 3 | 4 | test('deposit', t => { 5 | t.plan(1); 6 | 7 | t.throws(() => { 8 | deposit('0x1234', 'XE74ETHKRABEN0003088'); 9 | }, /institution/i, 'should reject institution other than KRAKEN'); 10 | }); 11 | -------------------------------------------------------------------------------- /tests/index.js: -------------------------------------------------------------------------------- 1 | require('./passwordToKey'); 2 | require('./decryptSeed'); 3 | require('./seedToPrivateKey'); 4 | require('./privateKeyToPublicKey'); 5 | require('./publicKeyToAddress'); 6 | require('./txToRaw'); 7 | require('./deposit'); 8 | -------------------------------------------------------------------------------- /tests/integration/test.js: -------------------------------------------------------------------------------- 1 | /* global GETH_RPC_URL */ 2 | import web3, { eth } from 'web3'; 3 | import test from 'tape-catch'; 4 | import loadWallet from '../../src/loadWallet'; 5 | import overrideSendTransaction from '../../src/overrideSendTransaction'; 6 | import deposit from '../../src/deposit'; 7 | 8 | /** 9 | * This test requires the account in wallet.json to be funded. 10 | */ 11 | test('sweep wallet', t => { 12 | t.plan(1); 13 | 14 | const wallet = loadWallet(require('./wallet.json'), 'derp'); 15 | 16 | const provider = new web3.providers.HttpProvider(GETH_RPC_URL); 17 | web3.setProvider(provider); 18 | 19 | overrideSendTransaction(web3.eth, (addr) => { 20 | if (`${wallet.address}` !== addr) { 21 | throw new Error('Sending where? ' + addr); 22 | } 23 | return wallet.privKey; 24 | }); 25 | 26 | deposit( 27 | wallet.address, 28 | 'XE83ETHKRAKEN3CBX0BG', 29 | 0.1e18, 30 | (err, hash) => { 31 | if (err) { return t.fail(err.message); } 32 | 33 | // Example: 0xeac9aa4ba29955c413b5048de2b9805662cafeb27c3045ff2505b9d4bf0475fb 34 | t.equal(new Buffer(hash.slice(2), 'hex').length, 32, 'should return a transaction hash'); 35 | 36 | console.log(`sent as ${hash}`); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /tests/integration/wallet.json: -------------------------------------------------------------------------------- 1 | { 2 | "encseed": "6c982a05d54c3fb4ecc61140859cf5c0ff6579b126855be4c907f9baa68e436a08f4779b1e5b30e739c82052abbe31e62e4b09f64dcd0ef5bf9131847de9f6fdf8eba7dd7c36810cff1146f270728f6135f22e3e383dee686054bcd094459948", 3 | "ethaddr": "588b34c4337729266426e914469f3c7246240545", 4 | "email": "herp@derp.com", 5 | "btcaddr": "18rPEe1SCwHxisHqCGjHyp28bMeZ9PbwZJ" 6 | } 7 | -------------------------------------------------------------------------------- /tests/passwordToKey.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import passwordToKey from '../src/passwordToKey'; 3 | 4 | test('passwordToKey', t => { 5 | const examples = [ 6 | ['test', '460a1521cb4fba8c9891f3c7160727fa'], 7 | ['', '2a18d75c980f0f5444343e4b4a9461a9'], 8 | ['this is a much longer password than most people will have', 'b25f8f2dab7c41a5c617173f8b060bd8'], 9 | ['フロンティア。', '3e3b27428192f621833959ca8073b814'], 10 | ['t35!?t', '6113938522df9c5953addba65e8ad358'], 11 | ['derp', 'a59569f77b0975b60d5f1b43a02a8755'], 12 | ['hello kitty', 'aa95826f1b929689a4d0010ae909ef88'], 13 | ]; 14 | 15 | t.plan(Object.keys(examples).length); 16 | 17 | for (const example of examples) { 18 | const [password, expected] = example; 19 | const actual = passwordToKey(password).toString('hex'); 20 | t.equal(actual, expected); 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /tests/privateKeyToPublicKey.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import privateKeyToPublicKey from '../src/privateKeyToPublicKey'; 3 | 4 | test('privateKeyToPublicKey', t => { 5 | const examples = [ 6 | { 7 | priv: new Buffer('89325ec0cda3fac3dc2d9b24e7a84e78e96a24c322e94fe5cb6e33a0e3438c04', 'hex'), 8 | pub: new Buffer('0499891f4b603630f0746db525220e9a1ecf69160ee0e141d0b8350f9c16a901251b1b6b58d4c4cac90351863637dd86a06e62f90de036f91af1973f5e25ca5d07', 'hex'), 9 | }, 10 | { 11 | priv: new Buffer('9fe89798dbb91be4846154c97a1cb6d7f70953117db8ad4c308e672f2a581b8f', 'hex'), 12 | pub: new Buffer('04e8f075d0d73c01e585a82aaee321b600451c10cfe96703da1f7207d489993924d46f4575d3dd63eaaffd96ea2af5ad91f1b4185d739a8e95bf92196c6e445ea1', 'hex'), 13 | }, 14 | ]; 15 | 16 | t.plan(Object.keys(examples).length); 17 | 18 | for (const example of examples) { 19 | const { priv, pub } = example; 20 | const actual = privateKeyToPublicKey(priv); 21 | t.equal(actual.toString('hex'), pub.toString('hex')); 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /tests/publicKeyToAddress.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import publicKeyToAddress from '../src/publicKeyToAddress'; 3 | 4 | test('publicKeyToAddress', t => { 5 | const examples = [ 6 | { 7 | pub: new Buffer('0499891f4b603630f0746db525220e9a1ecf69160ee0e141d0b8350f9c16a901251b1b6b58d4c4cac90351863637dd86a06e62f90de036f91af1973f5e25ca5d07', 'hex'), 8 | addr: 'eed700c57d04f8bd850c4fa2d7338ba89b0bb8c0', 9 | }, 10 | { 11 | pub: new Buffer('04e8f075d0d73c01e585a82aaee321b600451c10cfe96703da1f7207d489993924d46f4575d3dd63eaaffd96ea2af5ad91f1b4185d739a8e95bf92196c6e445ea1', 'hex'), 12 | addr: '588b34c4337729266426e914469f3c7246240545', 13 | }, 14 | ]; 15 | 16 | t.plan(Object.keys(examples).length); 17 | 18 | for (const example of examples) { 19 | const { pub, addr } = example; 20 | const actual = publicKeyToAddress(pub); 21 | t.equal(actual, addr); 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /tests/seedToPrivateKey.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import seedToPrivateKey from '../src/seedToPrivateKey'; 3 | 4 | test('seedToPrivateKey', t => { 5 | const examples = [ 6 | { 7 | seed: new Buffer('805b7b7a081f8d0837312d458580a7b19894269b3cdcb4e2cb698bb85c7c943f', 'hex'), 8 | priv: new Buffer('89325ec0cda3fac3dc2d9b24e7a84e78e96a24c322e94fe5cb6e33a0e3438c04', 'hex'), 9 | quirk: true, 10 | }, 11 | { 12 | seed: new Buffer('b37824c01b0d359db00a0b6e6dc518871c6659d22ee76b1fe6467a3d189a6f45', 'hex'), 13 | priv: new Buffer('9fe89798dbb91be4846154c97a1cb6d7f70953117db8ad4c308e672f2a581b8f', 'hex'), 14 | quirk: true, 15 | }, 16 | ]; 17 | 18 | t.plan(Object.keys(examples).length); 19 | 20 | for (const example of examples) { 21 | const { seed, priv, quirk } = example; 22 | const actual = seedToPrivateKey(seed, quirk); 23 | t.equal(actual.toString('hex'), priv.toString('hex')); 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /tests/txToRaw.js: -------------------------------------------------------------------------------- 1 | import test from 'tape-catch'; 2 | import txToRaw from '../src/txToRaw'; 3 | 4 | test('txToRaw rejects invalid to-addresses', t => { 5 | t.plan(1); 6 | 7 | const tx = { 8 | to: 'herp derp', 9 | }; 10 | 11 | t.throws(() => txToRaw(tx), /to /); 12 | }); 13 | -------------------------------------------------------------------------------- /webpack/dev.config.js: -------------------------------------------------------------------------------- 1 | var makeConfig = require('./makeConfig'); 2 | 3 | module.exports = makeConfig({ 4 | debug: true, 5 | devtool: 'eval', 6 | entry: { 7 | app: ['./src/client'], 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /webpack/hotDev.config.js: -------------------------------------------------------------------------------- 1 | var makeConfig = require('./makeConfig'); 2 | 3 | module.exports = makeConfig({ 4 | debug: true, 5 | devtool: 'eval', 6 | hotComponents: true, 7 | entry: { 8 | app: ['./src/client'], 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /webpack/makeConfig.js: -------------------------------------------------------------------------------- 1 | // Idea from: https://github.com/webpack/react-starter/blob/master/make-webpack-config.js 2 | var webpack = require('webpack'); 3 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 4 | var lodash = require('lodash'); 5 | 6 | module.exports = function(options) { 7 | options = lodash.extend({ 8 | target: 'web', 9 | debug: options.debug, 10 | devtool: 'source-map', 11 | entry: { 12 | app: ['./src/client'], 13 | tests: ['./tests/index'], 14 | integration: ['./tests/integration/test'], 15 | }, 16 | output: { 17 | path: './build', 18 | filename: '[name].js', 19 | pathinfo: options.debug, 20 | publicPath: '/' 21 | }, 22 | node: { 23 | fs: 'empty', 24 | net: 'empty', 25 | }, 26 | resolve: { 27 | modulesDirectories: ['node_modules'], 28 | extensions: ['', '.js', '.jsx', '.json'] 29 | }, 30 | module: { 31 | loaders: [ 32 | { test: /\.json/, loader: "json-loader" }, 33 | // { test: /\.css/, loader: "style-loader!css-loader" }, 34 | { test: /\.styl$/, loader: 'style-loader!css-loader!stylus-loader' }, 35 | // { test: /\.less$/, loader: "style-loader!css-loader!less-loader" }, 36 | { test: /\.jsx$/, exclude: /node_modules|bower_components/, loaders: ['react-hot', 'babel-loader?stage=0&optional=runtime'] }, 37 | { test: /\.js$/, exclude: /node_modules|bower_components/, loaders: ['babel-loader?stage=0&optional=runtime'] }, 38 | { test: /\.png/, loader: 'url-loader' }, 39 | // { test: /\.gif/, loader: "url-loader?limit=100000&mimetype=image/gif" }, 40 | // { test: /\.jpg/, loader: "file-loader" }, 41 | // { test: /\.woff(2)?(\?.*)?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" }, 42 | // { test: /\.(ttf|eot|svg)(\?.*)?$/, loader: "file-loader" } 43 | ] 44 | }, 45 | }, options); 46 | 47 | options.plugins = [ 48 | new HtmlWebpackPlugin({ 49 | title: 'Claim your ether pre-sale wallet', 50 | hash: true, 51 | }), 52 | new webpack.DefinePlugin({ 53 | GETH_RPC_URL: `"${options.gethRpcUrl || process.env.GETH_RPC_URL}"`, 54 | }), 55 | ]; 56 | 57 | if (!options.debug) { 58 | options.plugins.push( 59 | new webpack.optimize.UglifyJsPlugin(), 60 | new webpack.optimize.DedupePlugin() 61 | ); 62 | } 63 | 64 | return options; 65 | }; 66 | -------------------------------------------------------------------------------- /webpack/prod.config.js: -------------------------------------------------------------------------------- 1 | var makeConfig = require('./makeConfig'); 2 | 3 | module.exports = makeConfig({ 4 | debug: false, 5 | entry: { 6 | app: ['./src/client'], 7 | }, 8 | output: { 9 | path: './build/prod', 10 | filename: '[name]-[hash].js', 11 | pathinfo: false, 12 | publicPath: '/', 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /webpack/test.config.js: -------------------------------------------------------------------------------- 1 | var makeConfig = require('./makeConfig'); 2 | 3 | module.exports = makeConfig({ 4 | debug: true, 5 | devtool: 'eval', 6 | entry: { 7 | tests: ['./tests/index'], 8 | integration: ['./tests/integration/test'], 9 | }, 10 | }); 11 | --------------------------------------------------------------------------------