├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── constructors ├── p2p_exchange_constructor.py └── swap_registry_constructor.py ├── contracts ├── AtomicSwapRegistry.sol ├── Exchange.sol └── Migrations.sol ├── migrations └── _1_initial_migration.js ├── package.json ├── presentation.odp ├── test ├── AtomicSwapRegistry.js ├── Exchange.js └── helpers │ ├── EVMSnapshots.js │ ├── assertBigNumbersEqual.js │ └── expectThrow.js ├── truffle.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2", "stage-3"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /.idea/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Vladimir Khramov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hackathon_karma2 2 | h.karma.red hackathon, stage 2 3 | 4 | https://docs.google.com/presentation/d/1PUQUMwmedZePC9_1vvK8ALeiVr9B5Ui2N6bu0zROoho/edit?usp=sharing 5 | -------------------------------------------------------------------------------- /constructors/p2p_exchange_constructor.py: -------------------------------------------------------------------------------- 1 | #P2p multichain exchange 2 | 3 | from smartz.api.constructor_engine import ConstructorInstance 4 | 5 | 6 | class Constructor(ConstructorInstance): 7 | 8 | def get_version(self): 9 | return { 10 | "result": "success", 11 | "version": 1 12 | } 13 | 14 | def get_params(self): 15 | json_schema = { 16 | "type": "object", 17 | "required": ['address'], 18 | "additionalProperties": False, 19 | 20 | "properties": { 21 | 'address': { 22 | "title": "Address of Swap registry contract", 23 | "$ref": "#/definitions/address" 24 | } 25 | } 26 | } 27 | 28 | ui_schema = { 29 | } 30 | 31 | return { 32 | "result": "success", 33 | 'schema': json_schema, 34 | 'ui_schema': ui_schema 35 | } 36 | 37 | def construct(self, fields): 38 | return { 39 | 'result': "success", 40 | 'source': self.__class__._TEMPLATE.replace('%address%', fields['address']), 41 | 'contract_name': "ExchangeConstructed" 42 | } 43 | 44 | def post_construct(self, fields, abi_array): 45 | 46 | function_specs = { 47 | 'myDeposit': { 48 | 'title': 'My deposit', 49 | 'ui:widget': 'ethCount', 50 | 'ui:widget_options': { 51 | 'show_currency': 'USD' 52 | }, 53 | }, 54 | 'myHashesCount': { 55 | 'title': 'Count of sent hashes', 56 | }, 57 | 58 | 59 | 'orders': { 60 | 'title': 'Order info', 61 | 'description': 'Show info about existing order', 62 | 'inputs': [ 63 | {'title': 'Second blockchain ID', 'description': 'ETH = 1; ETH_KOVAN = 2; ETH_RINKEBY = 3; EOS = 4; BITCOIN = 5;'}, 64 | {'title': 'Order ID',}, 65 | ], 66 | 'outputs': [ 67 | {'title': 'Order creator'}, 68 | {'title': 'Second blockchain currency amount (in minimal particles, eg satoshi, wei)'}, 69 | {'title': 'Price in wei of one currency unit (bitcoin, ether)'}, 70 | {'title': 'Order type (Buy=0, Sell=1)'}, 71 | {'title': 'Is filled'}, 72 | {'title': 'Hash of secret for atomic swap'}, 73 | ], 74 | 75 | 'sorting_order': 10 76 | }, 77 | 78 | 'addHashes': { 79 | 'title': 'Add new hashes', 80 | 'description': 'For using in atomic swaps', 81 | 'inputs': [ 82 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 83 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 84 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 85 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 86 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 87 | 88 | ], 89 | 90 | 'sorting_order': 20 91 | }, 92 | 'deposit': { 93 | 'title': 'Deposit ether', 94 | 'sorting_order': 30 95 | }, 96 | 97 | 'withdraw': { 98 | 'title': 'Withdraw ether', 99 | 'inputs': [ 100 | {'title': 'Eth amount', 'ui:widget': 'ethCount'}, 101 | ], 102 | 'sorting_order': 40 103 | }, 104 | 105 | 106 | 'buy': { 107 | 'title': 'Buy', 108 | 'description': 'You will send ether and will get second blockchain currency', 109 | 110 | 'inputs': [ 111 | {'title': 'Second blockchain ID', 'description': 'ETH = 1; ETH_KOVAN = 2; ETH_RINKEBY = 3; EOS = 4; BITCOIN = 5;'}, 112 | {'title': 'Second blockchain currency amount (in minimal particles, eg satoshi, wei)'}, 113 | {'title': 'Price of one currency unit (bitcoin, ether)', 'ui:widget': 'ethCount'}, 114 | ], 115 | 116 | 'sorting_order': 100 117 | }, 118 | 119 | 'sell': { 120 | 'title': 'Sell', 121 | 'description': 'You will send second blockchain currency and will get ether', 122 | 123 | 'inputs': [ 124 | {'title': 'Second blockchain ID', 125 | 'description': 'ETH = 1; ETH_KOVAN = 2; ETH_RINKEBY = 3; EOS = 4; BITCOIN = 5;'}, 126 | {'title': 'Second blockchain currency amount (in minimal particles, eg satoshi, wei)'}, 127 | {'title': 'Price of one currency unit (bitcoin, ether)', 'ui:widget': 'ethCount'}, 128 | ], 129 | 130 | 'sorting_order': 110 131 | }, 132 | } 133 | 134 | return { 135 | "result": "success", 136 | 'function_specs': function_specs, 137 | 'dashboard_functions': ['m_numOwners', 'm_multiOwnedRequired'] 138 | } 139 | 140 | 141 | # language=Solidity 142 | _TEMPLATE = """ 143 | /** 144 | * 145 | * MIT License 146 | * 147 | * Copyright (c) 2018 Vladimir Khramov 148 | * 149 | * Permission is hereby granted, free of charge, to any person obtaining a copy 150 | * of this software and associated documentation files (the "Software"), to deal 151 | * in the Software without restriction, including without limitation the rights 152 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 153 | * copies of the Software, and to permit persons to whom the Software is 154 | * furnished to do so, subject to the following conditions: 155 | * 156 | * The above copyright notice and this permission notice shall be included in all 157 | * copies or substantial portions of the Software. 158 | * 159 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 160 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 161 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 162 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 163 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 164 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 165 | * SOFTWARE. 166 | */ 167 | 168 | pragma solidity ^0.4.17; 169 | 170 | /** 171 | * @title SafeMath 172 | * @dev Math operations with safety checks that throw on error 173 | */ 174 | library SafeMath { 175 | 176 | /** 177 | * @dev Multiplies two numbers, throws on overflow. 178 | */ 179 | function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { 180 | if (a == 0) { 181 | return 0; 182 | } 183 | c = a * b; 184 | assert(c / a == b); 185 | return c; 186 | } 187 | 188 | /** 189 | * @dev Integer division of two numbers, truncating the quotient. 190 | */ 191 | function div(uint256 a, uint256 b) internal pure returns (uint256) { 192 | // assert(b > 0); // Solidity automatically throws when dividing by 0 193 | // uint256 c = a / b; 194 | // assert(a == b * c + a % b); // There is no case in which this doesn't hold 195 | return a / b; 196 | } 197 | 198 | /** 199 | * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). 200 | */ 201 | function sub(uint256 a, uint256 b) internal pure returns (uint256) { 202 | assert(b <= a); 203 | return a - b; 204 | } 205 | 206 | /** 207 | * @dev Adds two numbers, throws on overflow. 208 | */ 209 | function add(uint256 a, uint256 b) internal pure returns (uint256 c) { 210 | c = a + b; 211 | assert(c >= a); 212 | return c; 213 | } 214 | } 215 | 216 | contract AtomicSwapRegistry { 217 | function initiate(address _initiator, uint _refundTime, bytes32 _hashedSecret, address _participant) public payable; 218 | } 219 | 220 | /** 221 | * @title Ownable 222 | * @dev The Ownable contract has an owner address, and provides basic authorization control 223 | * functions, this simplifies the implementation of "user permissions". 224 | */ 225 | contract Ownable { 226 | address public owner; 227 | 228 | 229 | event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); 230 | 231 | 232 | /** 233 | * @dev The Ownable constructor sets the original `owner` of the contract to the sender 234 | * account. 235 | */ 236 | function Ownable() public { 237 | owner = msg.sender; 238 | } 239 | 240 | /** 241 | * @dev Throws if called by any account other than the owner. 242 | */ 243 | modifier onlyOwner() { 244 | require(msg.sender == owner); 245 | _; 246 | } 247 | 248 | /** 249 | * @dev Allows the current owner to transfer control of the contract to a newOwner. 250 | * @param newOwner The address to transfer ownership to. 251 | */ 252 | function transferOwnership(address newOwner) public onlyOwner { 253 | require(newOwner != address(0)); 254 | OwnershipTransferred(owner, newOwner); 255 | owner = newOwner; 256 | } 257 | 258 | } 259 | 260 | 261 | 262 | contract Exchange is Ownable { 263 | using SafeMath for uint256; 264 | 265 | function Exchange(address _swapRegistry) public { 266 | swapRegistry = AtomicSwapRegistry(_swapRegistry); 267 | } 268 | 269 | /** 270 | * Blockchains to swap with (one of them with be useless, since exchange contract will be deployed to it) 271 | */ 272 | uint8 constant ETH = 1; 273 | uint8 constant ETH_KOVAN = 2; 274 | uint8 constant ETH_RINKEBY = 3; 275 | uint8 constant EOS = 4; 276 | uint8 constant BITCOIN = 5; 277 | 278 | enum OpType {BUY, SELL} 279 | 280 | struct Order { 281 | address initiator; 282 | 283 | uint currencyCount; 284 | uint priceInWei; 285 | 286 | OpType opType; 287 | bool isFilled; 288 | bytes32 hash; 289 | } 290 | 291 | /*****************************************************************/ 292 | 293 | mapping(uint8 => Order[]) public orders; 294 | 295 | mapping(address => bytes32[]) hashes; 296 | 297 | mapping (address => uint) public deposits; 298 | 299 | AtomicSwapRegistry public swapRegistry; 300 | 301 | /*****************************************************************/ 302 | 303 | function buy(uint8 _secondBlockchain, uint _currencyCount, uint _priceInWeiForOneUnit) public { 304 | //todo hardcoded only ether like decimals (18) 305 | uint totalEther = _priceInWeiForOneUnit.mul(_currencyCount).div(1 ether); 306 | 307 | require(totalEther <= deposits[msg.sender]); 308 | deposits[msg.sender] = deposits[msg.sender].sub(totalEther); 309 | 310 | uint restCurrencyCount = _currencyCount; 311 | // todo optimization :( 312 | for(uint i=0; i0);//todo more than orders 317 | 318 | Order storage order = orders[_secondBlockchain][i]; 319 | if (order.opType==OpType.BUY) { 320 | continue; 321 | } 322 | 323 | //todo minimum price, since not we get first suitable price 324 | if (order.priceInWei > _priceInWeiForOneUnit) { 325 | continue; 326 | } 327 | 328 | if (order.isFilled) { 329 | continue; 330 | } 331 | 332 | if (order.currencyCount <= restCurrencyCount) { 333 | uint weiCount = order.priceInWei.mul(order.currencyCount).div(1 ether); 334 | 335 | bytes32 currentHash = getNextHash(msg.sender); 336 | swapRegistry.initiate.value(weiCount)(msg.sender, 7200, currentHash, order.initiator); 337 | order.isFilled = true; 338 | order.hash = currentHash; 339 | restCurrencyCount = restCurrencyCount.sub(order.currencyCount); 340 | 341 | uint spread = _priceInWeiForOneUnit.sub(order.priceInWei).mul(order.currencyCount).div(1 ether); 342 | owner.transfer(spread); 343 | } 344 | } 345 | 346 | if (restCurrencyCount > 0) { 347 | orders[_secondBlockchain].push( 348 | Order( 349 | msg.sender, 350 | restCurrencyCount, 351 | _priceInWeiForOneUnit, 352 | OpType.BUY, 353 | false, 354 | 0 355 | ) 356 | ); 357 | } 358 | } 359 | 360 | 361 | function sell(uint8 _secondBlockchain, uint _currencyCount, uint _priceInWeiForOneUnit) public { 362 | require(_currencyCount > 0); 363 | require(_priceInWeiForOneUnit > 0); 364 | 365 | uint restCurrencyCount = _currencyCount; 366 | // todo optimization :( 367 | for(uint i=0; i 0) { 406 | orders[_secondBlockchain].push( 407 | Order( 408 | msg.sender, 409 | restCurrencyCount, 410 | _priceInWeiForOneUnit, 411 | OpType.SELL, 412 | false, 413 | 0 414 | ) 415 | ); 416 | } 417 | } 418 | 419 | /*****************************************************************/ 420 | function myHashesCount() view public returns (uint) { 421 | return hashes[msg.sender].length; 422 | } 423 | 424 | function addHashes(bytes32 _hash1, bytes32 _hash2, bytes32 _hash3, bytes32 _hash4, bytes32 _hash5) public { 425 | // for front in smartz params in this way 426 | bytes32[5] memory newHashes = [_hash1, _hash2, _hash3, _hash4, _hash5]; 427 | for (uint i = 0; i < newHashes.length; i++) { 428 | if (newHashes[i] != 0) { 429 | //todo check that hash has been never used 430 | hashes[msg.sender].push(newHashes[i]); 431 | } 432 | } 433 | 434 | } 435 | 436 | function getNextHash(address _addr) internal returns (bytes32 result) { 437 | assert(hashes[_addr].length > 0); 438 | 439 | result = hashes[_addr][ hashes[_addr].length-1 ]; 440 | hashes[_addr].length -= 1; 441 | } 442 | 443 | /*****************************************************************/ 444 | 445 | function myDeposit() view public returns (uint) { 446 | return deposits[msg.sender]; 447 | } 448 | 449 | function deposit() public payable { 450 | deposits[msg.sender] += msg.value; 451 | } 452 | 453 | function withdraw(uint _amount) public { 454 | //todo check orders 455 | require(deposits[msg.sender] >= _amount); 456 | 457 | deposits[msg.sender] -= _amount; 458 | 459 | msg.sender.transfer(_amount); 460 | } 461 | } 462 | 463 | 464 | contract ExchangeConstructed is Exchange { 465 | function ExchangeConstructed(address _swapRegistry) 466 | public payable 467 | Exchange(%address%) 468 | { 469 | %payment_code% 470 | } 471 | } 472 | 473 | """ 474 | -------------------------------------------------------------------------------- /constructors/swap_registry_constructor.py: -------------------------------------------------------------------------------- 1 | #Cross chain atomic swap registry 2 | 3 | from smartz.api.constructor_engine import ConstructorInstance 4 | 5 | 6 | class Constructor(ConstructorInstance): 7 | 8 | def get_version(self): 9 | return { 10 | "result": "success", 11 | "version": 1 12 | } 13 | 14 | def get_params(self): 15 | json_schema = { 16 | "type": "object", 17 | "required": ['dummy'], 18 | "additionalProperties": False, 19 | 20 | "properties": { 21 | 'dummy': { "type": 'string'} 22 | } 23 | } 24 | 25 | ui_schema = { 26 | } 27 | 28 | return { 29 | "result": "success", 30 | 'schema': json_schema, 31 | 'ui_schema': ui_schema 32 | } 33 | 34 | def construct(self, fields): 35 | return { 36 | 'result': "success", 37 | 'source': self.__class__._TEMPLATE, 38 | 'contract_name': "AtomicSwapRegistryConstructed" 39 | } 40 | 41 | def post_construct(self, fields, abi_array): 42 | 43 | function_specs = { 44 | 'swaps': { 45 | 'title': 'Show swap info', 46 | 'description': 'Show info about existing swap', 47 | 'inputs': [ 48 | {'title': 'Hash of secret (sha256)'}, # todo widget 49 | ], 50 | 'outputs': [ 51 | {'title': 'Initial timestamp'}, 52 | {'title': 'Refund time'}, 53 | {'title': 'Hash of secret (sha256)'}, 54 | {'title': 'Secret'}, 55 | {'title': 'Initiator'}, 56 | {'title': 'Participant'}, 57 | {'title': 'Wei amount'}, 58 | {'title': 'Is transfered'}, 59 | {'title': 'Internal state'}, 60 | ], 61 | 62 | 'sorting_order': 10 63 | }, 64 | 65 | 'initiate': { 66 | 'title': 'Initiate atomic swap', 67 | 68 | 'inputs': [ 69 | {'title': 'Initiator', 'description': 'Address in this chain'}, 70 | {'title': 'Refund time', 'description': 'After this time since swap init you can refund ether'}, 71 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 72 | {'title': 'Participant', 'description': 'Address in this chain'}, 73 | ], 74 | 75 | 'sorting_order': 20 76 | }, 77 | 78 | 'participate': { 79 | 'title': 'Participate in started in other chain atomic swap', 80 | 81 | 'inputs': [ 82 | {'title': 'Participant', 'description': 'Address in this chain'}, 83 | {'title': 'Refund time', 'description': 'After this time since swap init you can refund ether'}, 84 | {'title': 'Hash of secret (sha256)', 'description': 'In format 0x123abcd123'}, 85 | {'title': 'Initiator', 'description': 'Address in this chain'}, 86 | ], 87 | 88 | 'sorting_order': 30 89 | }, 90 | 91 | 'redeem': { 92 | 'title': 'Redeem ether', 93 | 'description': 'If you are the Initiator - redeem after checking swap contract in other chain. ' 94 | 'If you are the Participant - after Initiator hade redeemed funds and had showed secret', 95 | 96 | 'inputs': [ 97 | {'title': 'Secret'}, 98 | {'title': 'Hash of secret (sha256)', 'description': 'Just type the secret. Hash will be calculated automatically', 'ui:widget': 'stringHash', "ui:options": {"algorithm": "sha256"}}, 99 | ], 100 | 101 | 'sorting_order': 40 102 | }, 103 | 104 | 'refund': { 105 | 'title': 'Refund ether', 106 | 'description': 'If deal was canceled', 107 | 108 | 'inputs': [ 109 | {'title': 'Hash of secret (sha256)'}, 110 | ], 111 | 112 | 'sorting_order': 50 113 | }, 114 | 115 | } 116 | 117 | return { 118 | "result": "success", 119 | 'function_specs': function_specs, 120 | 'dashboard_functions': ['m_numOwners', 'm_multiOwnedRequired'] 121 | } 122 | 123 | 124 | # language=Solidity 125 | _TEMPLATE = """ 126 | /** 127 | * 128 | * MIT License 129 | * 130 | * Copyright (c) 2018 Vladimir Khramov 131 | * 132 | * Permission is hereby granted, free of charge, to any person obtaining a copy 133 | * of this software and associated documentation files (the "Software"), to deal 134 | * in the Software without restriction, including without limitation the rights 135 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 136 | * copies of the Software, and to permit persons to whom the Software is 137 | * furnished to do so, subject to the following conditions: 138 | * 139 | * The above copyright notice and this permission notice shall be included in all 140 | * copies or substantial portions of the Software. 141 | * 142 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 143 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 144 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 145 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 146 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 147 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 148 | * SOFTWARE. 149 | * 150 | * Modified version of https://github.com/AltCoinExchange/ethatomicswap 151 | * 152 | * Original license: 153 | * Copyright 2017 Altcoin Exchange 154 | * 155 | * Permission to use, copy, modify, and/or distribute this software for any purpose with or 156 | * without fee is hereby granted, provided that the above copyright notice and this permission 157 | * notice appear in all copies. 158 | * 159 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 160 | * SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 161 | * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 162 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 163 | * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 164 | * OF THIS SOFTWARE. 165 | */ 166 | 167 | pragma solidity ^0.4.15; 168 | 169 | contract AtomicSwapRegistry { 170 | 171 | enum State {Empty, Initiator, Participant} 172 | 173 | struct Swap { 174 | uint initTimestamp; 175 | uint refundTime; 176 | bytes32 hashedSecret; 177 | string secret; 178 | address initiator; 179 | address participant; 180 | uint256 value; 181 | bool emptied; 182 | State state; 183 | } 184 | 185 | mapping(bytes32 => Swap) public swaps; 186 | 187 | event Refunded(uint _refundTime); 188 | event Redeemed(uint _redeemTime); 189 | event Participated( 190 | address _initiator, 191 | address _participator, 192 | bytes32 _hashedSecret, 193 | uint256 _value 194 | ); 195 | event Initiated( 196 | uint _initTimestamp, 197 | uint _refundTime, 198 | bytes32 _hashedSecret, 199 | address _participant, 200 | address _initiator, 201 | uint256 _funds 202 | ); 203 | 204 | 205 | modifier isRefundable(bytes32 _hashedSecret) { 206 | require(block.timestamp > swaps[_hashedSecret].initTimestamp + swaps[_hashedSecret].refundTime); 207 | require(swaps[_hashedSecret].emptied == false); 208 | _; 209 | } 210 | 211 | modifier isRedeemable(bytes32 _hashedSecret, string _secret) { 212 | require(sha256(_secret) == _hashedSecret); 213 | require(block.timestamp < swaps[_hashedSecret].initTimestamp + swaps[_hashedSecret].refundTime); 214 | require(swaps[_hashedSecret].emptied == false); 215 | _; 216 | } 217 | 218 | modifier isInitiator(bytes32 _hashedSecret) { 219 | require(msg.sender == swaps[_hashedSecret].initiator); 220 | _; 221 | } 222 | 223 | modifier isNotInitiated(bytes32 _hashedSecret) { 224 | require(swaps[_hashedSecret].state == State.Empty); 225 | _; 226 | } 227 | 228 | function initiate(address _initiator, uint _refundTime, bytes32 _hashedSecret, address _participant) 229 | public payable 230 | isNotInitiated(_hashedSecret) 231 | { 232 | swaps[_hashedSecret].refundTime = _refundTime; 233 | swaps[_hashedSecret].initTimestamp = block.timestamp; 234 | swaps[_hashedSecret].hashedSecret = _hashedSecret; 235 | swaps[_hashedSecret].participant = _participant; 236 | swaps[_hashedSecret].initiator = _initiator; 237 | swaps[_hashedSecret].state = State.Initiator; 238 | swaps[_hashedSecret].value = msg.value; 239 | Initiated( 240 | swaps[_hashedSecret].initTimestamp, 241 | _refundTime, 242 | _hashedSecret, 243 | _participant, 244 | _initiator, 245 | msg.value 246 | ); 247 | } 248 | 249 | function participate(address _participant, uint _refundTime, bytes32 _hashedSecret, address _initiator) 250 | public payable 251 | isNotInitiated(_hashedSecret) 252 | { 253 | swaps[_hashedSecret].refundTime = _refundTime; 254 | swaps[_hashedSecret].initTimestamp = block.timestamp; 255 | swaps[_hashedSecret].participant = _participant; 256 | swaps[_hashedSecret].initiator = _initiator; 257 | swaps[_hashedSecret].value = msg.value; 258 | swaps[_hashedSecret].hashedSecret = _hashedSecret; 259 | swaps[_hashedSecret].state = State.Participant; 260 | Participated(_initiator, _participant, _hashedSecret, msg.value); 261 | } 262 | 263 | function redeem(string _secret, bytes32 _hashedSecret) public 264 | isRedeemable(_hashedSecret, _secret) 265 | { 266 | swaps[_hashedSecret].emptied = true; 267 | Redeemed(block.timestamp); 268 | swaps[_hashedSecret].secret = _secret; 269 | 270 | if (swaps[_hashedSecret].state == State.Participant) { 271 | swaps[_hashedSecret].initiator.transfer(swaps[_hashedSecret].value); 272 | } else if (swaps[_hashedSecret].state == State.Initiator) { 273 | swaps[_hashedSecret].participant.transfer(swaps[_hashedSecret].value); 274 | } else { 275 | revert(); 276 | } 277 | 278 | } 279 | 280 | function refund(bytes32 _hashedSecret) public 281 | isRefundable(_hashedSecret) 282 | { 283 | swaps[_hashedSecret].emptied = true; 284 | Refunded(block.timestamp); 285 | 286 | if (swaps[_hashedSecret].state == State.Participant) { 287 | swaps[_hashedSecret].participant.transfer(swaps[_hashedSecret].value); 288 | } else if (swaps[_hashedSecret].state == State.Initiator) { 289 | swaps[_hashedSecret].initiator.transfer(swaps[_hashedSecret].value); 290 | } else { 291 | revert(); 292 | } 293 | 294 | } 295 | 296 | } 297 | 298 | contract AtomicSwapRegistryConstructed is AtomicSwapRegistry { 299 | function AtomicSwapRegistryConstructed() 300 | public payable 301 | { 302 | %payment_code% 303 | } 304 | } 305 | """ 306 | -------------------------------------------------------------------------------- /contracts/AtomicSwapRegistry.sol: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * MIT License 4 | * 5 | * Copyright (c) 2018 Vladimir Khramov 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | * 25 | * Modified version of https://github.com/AltCoinExchange/ethatomicswap 26 | * 27 | * Original license: 28 | * Copyright 2017 Altcoin Exchange 29 | * 30 | * Permission to use, copy, modify, and/or distribute this software for any purpose with or 31 | * without fee is hereby granted, provided that the above copyright notice and this permission 32 | * notice appear in all copies. 33 | * 34 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 35 | * SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 36 | * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 37 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 38 | * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 39 | * OF THIS SOFTWARE. 40 | */ 41 | 42 | pragma solidity ^0.4.15; 43 | 44 | contract AtomicSwapRegistry { 45 | 46 | enum State {Empty, Initiator, Participant} 47 | 48 | struct Swap { 49 | uint initTimestamp; 50 | uint refundTime; 51 | bytes32 hashedSecret; 52 | string secret; 53 | address initiator; 54 | address participant; 55 | uint256 value; 56 | bool emptied; 57 | State state; 58 | } 59 | 60 | mapping(bytes32 => Swap) public swaps; 61 | 62 | event Refunded(uint _refundTime); 63 | event Redeemed(uint _redeemTime); 64 | event Participated( 65 | address _initiator, 66 | address _participator, 67 | bytes32 _hashedSecret, 68 | uint256 _value 69 | ); 70 | event Initiated( 71 | uint _initTimestamp, 72 | uint _refundTime, 73 | bytes32 _hashedSecret, 74 | address _participant, 75 | address _initiator, 76 | uint256 _funds 77 | ); 78 | 79 | 80 | modifier isRefundable(bytes32 _hashedSecret) { 81 | require(block.timestamp > swaps[_hashedSecret].initTimestamp + swaps[_hashedSecret].refundTime); 82 | require(swaps[_hashedSecret].emptied == false); 83 | _; 84 | } 85 | 86 | modifier isRedeemable(bytes32 _hashedSecret, string _secret) { 87 | require(sha256(_secret) == _hashedSecret); 88 | require(block.timestamp < swaps[_hashedSecret].initTimestamp + swaps[_hashedSecret].refundTime); 89 | require(swaps[_hashedSecret].emptied == false); 90 | _; 91 | } 92 | 93 | modifier isInitiator(bytes32 _hashedSecret) { 94 | require(msg.sender == swaps[_hashedSecret].initiator); 95 | _; 96 | } 97 | 98 | modifier isNotInitiated(bytes32 _hashedSecret) { 99 | require(swaps[_hashedSecret].state == State.Empty); 100 | _; 101 | } 102 | 103 | function initiate(address _initiator, uint _refundTime, bytes32 _hashedSecret, address _participant) 104 | public payable 105 | isNotInitiated(_hashedSecret) 106 | { 107 | swaps[_hashedSecret].refundTime = _refundTime; 108 | swaps[_hashedSecret].initTimestamp = block.timestamp; 109 | swaps[_hashedSecret].hashedSecret = _hashedSecret; 110 | swaps[_hashedSecret].participant = _participant; 111 | swaps[_hashedSecret].initiator = _initiator; 112 | swaps[_hashedSecret].state = State.Initiator; 113 | swaps[_hashedSecret].value = msg.value; 114 | Initiated( 115 | swaps[_hashedSecret].initTimestamp, 116 | _refundTime, 117 | _hashedSecret, 118 | _participant, 119 | _initiator, 120 | msg.value 121 | ); 122 | } 123 | 124 | function participate(address _participant, uint _refundTime, bytes32 _hashedSecret, address _initiator) 125 | public payable 126 | isNotInitiated(_hashedSecret) 127 | { 128 | swaps[_hashedSecret].refundTime = _refundTime; 129 | swaps[_hashedSecret].initTimestamp = block.timestamp; 130 | swaps[_hashedSecret].participant = _participant; 131 | swaps[_hashedSecret].initiator = _initiator; 132 | swaps[_hashedSecret].value = msg.value; 133 | swaps[_hashedSecret].hashedSecret = _hashedSecret; 134 | swaps[_hashedSecret].state = State.Participant; 135 | Participated(_initiator, _participant, _hashedSecret, msg.value); 136 | } 137 | 138 | function redeem(string _secret, bytes32 _hashedSecret) public 139 | isRedeemable(_hashedSecret, _secret) 140 | { 141 | swaps[_hashedSecret].emptied = true; 142 | Redeemed(block.timestamp); 143 | swaps[_hashedSecret].secret = _secret; 144 | 145 | if (swaps[_hashedSecret].state == State.Participant) { 146 | swaps[_hashedSecret].initiator.transfer(swaps[_hashedSecret].value); 147 | } else if (swaps[_hashedSecret].state == State.Initiator) { 148 | swaps[_hashedSecret].participant.transfer(swaps[_hashedSecret].value); 149 | } else { 150 | revert(); 151 | } 152 | 153 | } 154 | 155 | function refund(bytes32 _hashedSecret) public 156 | isRefundable(_hashedSecret) 157 | { 158 | swaps[_hashedSecret].emptied = true; 159 | Refunded(block.timestamp); 160 | 161 | if (swaps[_hashedSecret].state == State.Participant) { 162 | swaps[_hashedSecret].participant.transfer(swaps[_hashedSecret].value); 163 | } else if (swaps[_hashedSecret].state == State.Initiator) { 164 | swaps[_hashedSecret].initiator.transfer(swaps[_hashedSecret].value); 165 | } else { 166 | revert(); 167 | } 168 | 169 | } 170 | 171 | } -------------------------------------------------------------------------------- /contracts/Exchange.sol: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * MIT License 4 | * 5 | * Copyright (c) 2018 Vladimir Khramov 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | 26 | pragma solidity ^0.4.17; 27 | 28 | import 'openzeppelin-solidity/contracts/math/SafeMath.sol'; 29 | import './AtomicSwapRegistry.sol'; 30 | import 'openzeppelin-solidity/contracts/ownership/Ownable.sol'; 31 | 32 | contract Exchange is Ownable { 33 | using SafeMath for uint256; 34 | 35 | function Exchange(address _swapRegistry) public { 36 | swapRegistry = AtomicSwapRegistry(_swapRegistry); 37 | } 38 | 39 | /** 40 | * Blockchains to swap with (one of them with be useless, since exchange contract will be deployed to it) 41 | */ 42 | uint8 constant ETH = 1; 43 | uint8 constant ETH_KOVAN = 2; 44 | uint8 constant ETH_RINKEBY = 3; 45 | uint8 constant EOS = 4; 46 | uint8 constant BITCOIN = 5; 47 | 48 | enum OpType {BUY, SELL} 49 | 50 | struct Order { 51 | address initiator; 52 | 53 | uint currencyCount; 54 | uint priceInWei; 55 | 56 | OpType opType; 57 | bool isFilled; 58 | bytes32 hash; 59 | } 60 | 61 | /*****************************************************************/ 62 | 63 | mapping(uint8 => Order[]) public orders; 64 | 65 | mapping(address => bytes32[]) hashes; 66 | 67 | mapping (address => uint) public deposits; 68 | 69 | AtomicSwapRegistry public swapRegistry; 70 | 71 | /*****************************************************************/ 72 | 73 | function buy(uint8 _secondBlockchain, uint _currencyCount, uint _priceInWeiForOneUnit) public { 74 | //todo hardcoded only ether like decimals (18) 75 | uint totalEther = _priceInWeiForOneUnit.mul(_currencyCount).div(1 ether); 76 | 77 | require(totalEther <= deposits[msg.sender]); 78 | deposits[msg.sender] = deposits[msg.sender].sub(totalEther); 79 | 80 | uint restCurrencyCount = _currencyCount; 81 | // todo optimization :( 82 | for(uint i=0; i0);//todo more than orders 87 | 88 | Order storage order = orders[_secondBlockchain][i]; 89 | if (order.opType==OpType.BUY) { 90 | continue; 91 | } 92 | 93 | //todo minimum price, since not we get first suitable price 94 | if (order.priceInWei > _priceInWeiForOneUnit) { 95 | continue; 96 | } 97 | 98 | if (order.isFilled) { 99 | continue; 100 | } 101 | 102 | if (order.currencyCount <= restCurrencyCount) { 103 | uint weiCount = order.priceInWei.mul(order.currencyCount).div(1 ether); 104 | 105 | bytes32 currentHash = getNextHash(msg.sender); 106 | swapRegistry.initiate.value(weiCount)(msg.sender, 7200, currentHash, order.initiator); 107 | order.isFilled = true; 108 | order.hash = currentHash; 109 | restCurrencyCount = restCurrencyCount.sub(order.currencyCount); 110 | 111 | uint spread = _priceInWeiForOneUnit.sub(order.priceInWei).mul(order.currencyCount).div(1 ether); 112 | owner.transfer(spread); 113 | } else { 114 | //todo split order 115 | } 116 | } 117 | 118 | if (restCurrencyCount > 0) { 119 | orders[_secondBlockchain].push( 120 | Order( 121 | msg.sender, 122 | restCurrencyCount, 123 | _priceInWeiForOneUnit, 124 | OpType.BUY, 125 | false, 126 | 0 127 | ) 128 | ); 129 | } 130 | } 131 | 132 | 133 | function sell(uint8 _secondBlockchain, uint _currencyCount, uint _priceInWeiForOneUnit) public { 134 | require(_currencyCount > 0); 135 | require(_priceInWeiForOneUnit > 0); 136 | 137 | uint restCurrencyCount = _currencyCount; 138 | // todo optimization :( 139 | for(uint i=0; i 0) { 180 | orders[_secondBlockchain].push( 181 | Order( 182 | msg.sender, 183 | restCurrencyCount, 184 | _priceInWeiForOneUnit, 185 | OpType.SELL, 186 | false, 187 | 0 188 | ) 189 | ); 190 | } 191 | } 192 | 193 | /*****************************************************************/ 194 | function myHashesCount() view public returns (uint) { 195 | return hashes[msg.sender].length; 196 | } 197 | 198 | function addHashes(bytes32 _hash1, bytes32 _hash2, bytes32 _hash3, bytes32 _hash4, bytes32 _hash5) public { 199 | // for front in smartz params in this way 200 | bytes32[5] memory newHashes = [_hash1, _hash2, _hash3, _hash4, _hash5]; 201 | for (uint i = 0; i < newHashes.length; i++) { 202 | if (newHashes[i] != 0) { 203 | //todo check that hash has been never used 204 | hashes[msg.sender].push(newHashes[i]); 205 | } 206 | } 207 | 208 | } 209 | 210 | function getNextHash(address _addr) internal returns (bytes32 result) { 211 | assert(hashes[_addr].length > 0); 212 | 213 | result = hashes[_addr][ hashes[_addr].length-1 ]; 214 | hashes[_addr].length -= 1; 215 | } 216 | 217 | /*****************************************************************/ 218 | 219 | function myDeposit() view public returns (uint) { 220 | return deposits[msg.sender]; 221 | } 222 | 223 | function deposit() public payable { 224 | deposits[msg.sender] += msg.value; 225 | } 226 | 227 | function withdraw(uint _amount) public { 228 | //todo check orders 229 | require(deposits[msg.sender] >= _amount); 230 | 231 | deposits[msg.sender] -= _amount; 232 | 233 | msg.sender.transfer(_amount); 234 | } 235 | } 236 | 237 | -------------------------------------------------------------------------------- /contracts/Migrations.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.17; 2 | 3 | contract Migrations { 4 | address public owner; 5 | uint public last_completed_migration; 6 | 7 | modifier restricted() { 8 | if (msg.sender == owner) _; 9 | } 10 | 11 | function Migrations() public { 12 | owner = msg.sender; 13 | } 14 | 15 | function setCompleted(uint completed) public restricted { 16 | last_completed_migration = completed; 17 | } 18 | 19 | function upgrade(address new_address) public restricted { 20 | Migrations upgraded = Migrations(new_address); 21 | upgraded.setCompleted(last_completed_migration); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /migrations/_1_initial_migration.js: -------------------------------------------------------------------------------- 1 | var Migrations = artifacts.require("./Migrations.sol"); 2 | 3 | module.exports = function(deployer) { 4 | deployer.deploy(Migrations); 5 | }; 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hack", 3 | "version": "0.1.7", 4 | "description": "h.karma.red hack", 5 | "scripts": {}, 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/quantum13/hackathon_karma" 9 | }, 10 | "author": "quantum", 11 | "license": "MIT", 12 | "dependencies": { 13 | "babel-polyfill": "^6.23.0", 14 | "babel-preset-es2015": "^6.18.0", 15 | "babel-preset-stage-2": "^6.18.0", 16 | "babel-preset-stage-3": "^6.17.0", 17 | "babel-register": "^6.23.0", 18 | "ganache-cli": "^6.1.0", 19 | "js-sha256": "^0.9.0", 20 | "openzeppelin-solidity": "1.9.0", 21 | "truffle": "^4.1.7" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /presentation.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlad-khramov/hackathon_karma2/566bb5f93f186a39ee7c410d8dcfd2ae905b135c/presentation.odp -------------------------------------------------------------------------------- /test/AtomicSwapRegistry.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import expectThrow from "./helpers/expectThrow.js"; 4 | import {withRollback} from "./helpers/EVMSnapshots"; 5 | import assertBnEq from "./helpers/assertBigNumbersEqual"; 6 | 7 | const AtomicSwapRegistry = artifacts.require("AtomicSwapRegistry.sol"); 8 | const l = console.log; 9 | 10 | contract('AtomicSwapRegistry', function (accounts) { 11 | 12 | const role = { 13 | owner: accounts[1], 14 | debtor1: accounts[2], 15 | creditor1: accounts[3], 16 | expert1: accounts[4] 17 | }; 18 | 19 | 20 | let instance; 21 | 22 | beforeEach(async function () { 23 | 24 | instance = await AtomicSwapRegistry.new( 25 | { 26 | from: role.owner 27 | } 28 | ); 29 | }); 30 | 31 | it("complex test", async function () { 32 | 33 | 34 | }); 35 | 36 | 37 | 38 | }); 39 | -------------------------------------------------------------------------------- /test/Exchange.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import expectThrow from "./helpers/expectThrow.js"; 4 | import {withRollback} from "./helpers/EVMSnapshots"; 5 | import assertBnEq from "./helpers/assertBigNumbersEqual"; 6 | 7 | const sha256 = x => "0x" + require('js-sha256')(x); 8 | 9 | const AtomicSwapRegistry = artifacts.require("AtomicSwapRegistry.sol"); 10 | const Exchange = artifacts.require("Exchange.sol"); 11 | const l = console.log; 12 | 13 | contract('Exchange', function (accounts) { 14 | 15 | const role = { 16 | ex_owner: accounts[7], 17 | 18 | trader1: accounts[1], 19 | trader2: accounts[2], 20 | trader3: accounts[3], 21 | trader4: accounts[4], 22 | trader5: accounts[5], 23 | trader6: accounts[6] 24 | }; 25 | 26 | const bc = { 27 | eth: 1, 28 | eth_kovan: 2, 29 | eth_rinkeby: 3, 30 | eos: 4 31 | }; 32 | 33 | 34 | let ex, swReg, swRegKovan; 35 | 36 | beforeEach(async function () { 37 | swReg = await AtomicSwapRegistry.new(); 38 | swRegKovan = await AtomicSwapRegistry.new(); 39 | 40 | ex = await Exchange.new(swReg.address, {from:role.ex_owner, gasPrice:0}); 41 | }); 42 | 43 | it("test buy after sell orders", async function () { 44 | const secret = '123'; 45 | const secretHash = sha256(secret); 46 | 47 | 48 | let ownerInitBalane = await web3.eth.getBalance(role.ex_owner); 49 | 50 | let balanceBefore = await web3.eth.getBalance(role.trader1); 51 | await ex.deposit({value: web3.toWei(2), from: role.trader1, gasPrice: 0}); 52 | await ex.deposit({value: web3.toWei(1), from: role.trader2}); 53 | await ex.deposit({value: web3.toWei(1), from: role.trader3}); 54 | await ex.deposit({value: web3.toWei(1), from: role.trader4}); 55 | 56 | assertBnEq(web3.toWei(2), await ex.myDeposit({from: role.trader1})); 57 | await ex.withdraw(web3.toWei(1), {from: role.trader1, gasPrice: 0}); 58 | assertBnEq(web3.toWei(1), await ex.myDeposit({from: role.trader1})); 59 | assertBnEq(balanceBefore.sub(web3.toWei(1)), await web3.eth.getBalance(role.trader1)); 60 | 61 | //sell 1 kovan finney with price 0.5 ether for 1 kovan ether 62 | await ex.sell(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.5), {from: role.trader1}); 63 | await ex.sell(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.7), {from: role.trader2}); 64 | assertBnEq(web3.toWei(1), await ex.myDeposit({from: role.trader1})); 65 | assertBnEq(web3.toWei(1), await ex.myDeposit({from: role.trader2})); 66 | 67 | 68 | //want to buy 1 kovan finney with price 0.6 ether for 1 kovan ether 69 | await expectThrow( 70 | ex.buy(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.6), {from: role.trader3}) 71 | ); // no hashes 72 | await ex.addHashes(secretHash, 0, 0, 0, 0, {from: role.trader3}); 73 | assertBnEq(1, await ex.myHashesCount({from: role.trader3})); 74 | await ex.buy(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.6), {from: role.trader3}); 75 | assertBnEq(web3.toWei(999.4, 'finney'), await ex.myDeposit({from: role.trader3})); 76 | assertBnEq(web3.toWei(3999.4, 'finney'), await web3.eth.getBalance(ex.address)); 77 | 78 | //spread (0.6-0.5) was sent to owner 79 | assertBnEq(ownerInitBalane.add(web3.toWei(0.1, 'finney')), await web3.eth.getBalance(role.ex_owner)); 80 | 81 | //next test swap registry 82 | assertBnEq(web3.toWei(0.5, 'finney'), await web3.eth.getBalance(swReg.address)); 83 | //console.log(await swReg.swaps(web3.sha3('123'))) 84 | assert.equal((await swReg.swaps(secretHash))[5], role.trader1);//participant 85 | await expectThrow(swReg.refund(secretHash), {from: role.trader3}); 86 | await expectThrow(swReg.refund(secretHash), {from: role.trader1}); 87 | 88 | 89 | //pseudo eth_kovan, participate 90 | await swRegKovan.participate( 91 | role.trader1, 3600, secretHash, role.trader3, 92 | {value: web3.toWei(1, 'finney'), from: role.trader1} 93 | ); 94 | await expectThrow(swRegKovan.refund(secretHash), {from: role.trader3}); 95 | await expectThrow(swRegKovan.refund(secretHash), {from: role.trader1}); 96 | 97 | 98 | // //redeem 1 99 | let beforeRedeem1 = await web3.eth.getBalance(role.trader3); 100 | await swRegKovan.redeem(secret, secretHash); 101 | assertBnEq(beforeRedeem1.add(web3.toWei(1, 'finney')), await web3.eth.getBalance(role.trader3)); 102 | 103 | assert.equal((await swRegKovan.swaps(secretHash))[3], secret); 104 | 105 | //redeem 2 106 | let beforeRedeem2 = await web3.eth.getBalance(role.trader1); 107 | await swReg.redeem(secret, secretHash); 108 | assertBnEq(beforeRedeem2.add(web3.toWei(0.5, 'finney')), await web3.eth.getBalance(role.trader1)); 109 | 110 | 111 | }); 112 | 113 | it("test buy after sell orders without price and than sell", async function () { 114 | const secret = '123'; 115 | const secretHash = sha256(secret); 116 | const secret2 = '1234'; 117 | const secretHash2 = sha256(secret2); 118 | 119 | 120 | let ownerInitBalane = await web3.eth.getBalance(role.ex_owner); 121 | 122 | await ex.deposit({value: web3.toWei(1), from: role.trader1}); 123 | await ex.deposit({value: web3.toWei(1), from: role.trader2}); 124 | await ex.deposit({value: web3.toWei(1), from: role.trader3}); 125 | await ex.deposit({value: web3.toWei(1), from: role.trader4}); 126 | 127 | 128 | //sell 1 kovan finney with price 0.5 ether for 1 kovan ether 129 | await ex.sell(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.7), {from: role.trader1}); 130 | await ex.sell(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.6), {from: role.trader2}); 131 | 132 | await ex.addHashes(secretHash, 0, 0, 0, 0, {from: role.trader3}); 133 | await ex.addHashes(secretHash2, 0, 0, 0, 0, {from: role.trader4}); 134 | 135 | //want to buy 1 kovan finney with price 0.4 ether for 1 kovan ether 136 | await ex.buy(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.4), {from: role.trader3}); 137 | await ex.buy(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.5), {from: role.trader4}); 138 | 139 | //sell 1 kovan finney with price 0.45 ether for 1 kovan ether 140 | await ex.sell(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.45), {from: role.trader5}); 141 | assertBnEq(0, await ex.myHashesCount({from: role.trader4})); 142 | assertBnEq(web3.toWei(999.5, 'finney'), await ex.myDeposit({from: role.trader4})); 143 | assertBnEq(web3.toWei(3999.5, 'finney'), await web3.eth.getBalance(ex.address)); 144 | //spread (0.5-0.45) was sent to owner 145 | assertBnEq(ownerInitBalane.add(web3.toWei(0.05, 'finney')), await web3.eth.getBalance(role.ex_owner)); 146 | 147 | 148 | //next test swap registry 149 | assertBnEq(web3.toWei(0.45, 'finney'), await web3.eth.getBalance(swReg.address)); 150 | assert.equal((await swReg.swaps(secretHash2))[5], role.trader5);//participant 151 | await expectThrow(swReg.refund(secretHash2), {from: role.trader4}); 152 | await expectThrow(swReg.refund(secretHash2), {from: role.trader5}); 153 | 154 | 155 | 156 | }); 157 | 158 | it("test buy with split", async function () { 159 | const secret = '123'; 160 | const secretHash = sha256(secret); 161 | const secret2 = '1234'; 162 | const secretHash2 = sha256(secret2); 163 | 164 | 165 | let ownerInitBalane = await web3.eth.getBalance(role.ex_owner); 166 | 167 | await ex.deposit({value: web3.toWei(1), from: role.trader1}); 168 | await ex.deposit({value: web3.toWei(1), from: role.trader2}); 169 | await ex.deposit({value: web3.toWei(1), from: role.trader3}); 170 | await ex.deposit({value: web3.toWei(1), from: role.trader4}); 171 | 172 | 173 | //sell 1 kovan finney with price 0.5 ether for 1 kovan ether 174 | await ex.sell(bc.eth_kovan, web3.toWei(0.4, 'finney'), web3.toWei(0.7), {from: role.trader1}); 175 | await ex.sell(bc.eth_kovan, web3.toWei(0.3, 'finney'), web3.toWei(0.6), {from: role.trader2}); 176 | 177 | await ex.addHashes(secretHash, secretHash2, 0, 0, 0, {from: role.trader3}); 178 | 179 | //want to buy 1 kovan finney with price 0.7 ether for 1 kovan ether 180 | await ex.buy(bc.eth_kovan, web3.toWei(1, 'finney'), web3.toWei(0.7), {from: role.trader3}); 181 | 182 | 183 | assertBnEq(0, await ex.myHashesCount({from: role.trader3})); 184 | assertBnEq(web3.toWei(999.3, 'finney'), await ex.myDeposit({from: role.trader3})); 185 | assertBnEq(web3.toWei(/*4000 - 0.4*0.7-0.3*0.7*/3999.51, 'finney'), await web3.eth.getBalance(ex.address)); 186 | //spread (0.7-0.6)*0.3 was sent to owner 187 | assertBnEq(ownerInitBalane.add(web3.toWei(0.03, 'finney')), await web3.eth.getBalance(role.ex_owner)); 188 | 189 | 190 | //next test swap registry 191 | // 0.7*0.4 + 0.6*.0.3 192 | assertBnEq(web3.toWei(0.46, 'finney'), await web3.eth.getBalance(swReg.address)); 193 | assert.equal((await swReg.swaps(secretHash))[5], role.trader2);//participant 194 | assert.equal((await swReg.swaps(secretHash2))[5], role.trader1);//participant 195 | 196 | }); 197 | 198 | 199 | 200 | 201 | }); 202 | 203 | // проблемы 204 | // подают заявки, но не покупают - система репутации -------------------------------------------------------------------------------- /test/helpers/EVMSnapshots.js: -------------------------------------------------------------------------------- 1 | const promisify = func => async (...args) => 2 | new Promise((accept, reject) => 3 | func(...args, (error, result) => (error ? reject(error) : accept(result))) 4 | ); 5 | 6 | export const rpcCommand = method => async (...params) => 7 | (await promisify(web3.currentProvider.sendAsync)({ 8 | jsonrpc: "2.0", 9 | method, 10 | params, 11 | id: Date.now() 12 | })).result; 13 | 14 | export const evm_mine = rpcCommand("evm_mine"); 15 | export const evm_increaseTime = rpcCommand("evm_increaseTime"); 16 | export const evm_snapshot = rpcCommand("evm_snapshot"); 17 | export const evm_revert = rpcCommand("evm_revert"); 18 | 19 | export async function withRollback(func) { 20 | const snapshotId = await evm_snapshot(); 21 | await func(); 22 | await evm_revert(snapshotId); 23 | } -------------------------------------------------------------------------------- /test/helpers/assertBigNumbersEqual.js: -------------------------------------------------------------------------------- 1 | const assertBnEq = (a, b, message) => { 2 | assert(web3.toBigNumber(a).eq(b), `${message} (${a.valueOf()} != ${b.valueOf()})`) 3 | }; 4 | 5 | 6 | export default assertBnEq; -------------------------------------------------------------------------------- /test/helpers/expectThrow.js: -------------------------------------------------------------------------------- 1 | export default async promise => { 2 | try { 3 | await promise; 4 | } catch (error) { 5 | // TODO: Check jump destination to destinguish between a throw 6 | // and an actual invalid jump. 7 | const invalidOpcode = error.message.search('invalid opcode') >= 0; 8 | // TODO: When we contract A calls contract B, and B throws, instead 9 | // of an 'invalid jump', we get an 'out of gas' error. How do 10 | // we distinguish this from an actual out of gas event? (The 11 | // testrpc log actually show an 'invalid jump' event.) 12 | const outOfGas = error.message.search('out of gas') >= 0; 13 | const revert = error.message.search('revert') >= 0; 14 | assert( 15 | invalidOpcode || outOfGas || revert, 16 | "Expected throw, got '" + error + "' instead", 17 | ); 18 | return; 19 | } 20 | assert.fail('Expected throw not received'); 21 | }; 22 | -------------------------------------------------------------------------------- /truffle.js: -------------------------------------------------------------------------------- 1 | require('babel-register'); 2 | require('babel-polyfill'); 3 | 4 | module.exports = { 5 | networks: { 6 | development: { 7 | host: "localhost", 8 | port: 9545, 9 | gasPrice: 0, 10 | network_id: "*" // Match any network id 11 | 12 | }, 13 | 14 | rinkeby: { // testnet 15 | host: "localhost", 16 | port: 8547, 17 | network_id: 4 18 | } 19 | }, 20 | solc: { 21 | optimizer: { 22 | enabled: true, 23 | runs: 200 24 | } 25 | } 26 | 27 | }; 28 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@mrmlnc/readdir-enhanced@^2.2.1": 6 | version "2.2.1" 7 | resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" 8 | dependencies: 9 | call-me-maybe "^1.0.1" 10 | glob-to-regexp "^0.3.0" 11 | 12 | "@sindresorhus/is@^0.7.0": 13 | version "0.7.0" 14 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" 15 | 16 | ansi-escapes@^1.0.0: 17 | version "1.4.0" 18 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 19 | 20 | ansi-escapes@^3.0.0: 21 | version "3.1.0" 22 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 23 | 24 | ansi-regex@^2.0.0: 25 | version "2.1.1" 26 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 27 | 28 | ansi-regex@^3.0.0: 29 | version "3.0.0" 30 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 31 | 32 | ansi-styles@^2.2.1: 33 | version "2.2.1" 34 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 35 | 36 | ansi-styles@^3.2.1: 37 | version "3.2.1" 38 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 39 | dependencies: 40 | color-convert "^1.9.0" 41 | 42 | ansi-styles@~1.0.0: 43 | version "1.0.0" 44 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" 45 | 46 | any-observable@^0.2.0: 47 | version "0.2.0" 48 | resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" 49 | 50 | arr-diff@^2.0.0: 51 | version "2.0.0" 52 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 53 | dependencies: 54 | arr-flatten "^1.0.1" 55 | 56 | arr-diff@^4.0.0: 57 | version "4.0.0" 58 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 59 | 60 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 61 | version "1.1.0" 62 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 63 | 64 | arr-union@^3.1.0: 65 | version "3.1.0" 66 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 67 | 68 | array-differ@^1.0.0: 69 | version "1.0.0" 70 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 71 | 72 | array-union@^1.0.1: 73 | version "1.0.2" 74 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 75 | dependencies: 76 | array-uniq "^1.0.1" 77 | 78 | array-uniq@^1.0.1: 79 | version "1.0.3" 80 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 81 | 82 | array-unique@^0.2.1: 83 | version "0.2.1" 84 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 85 | 86 | array-unique@^0.3.2: 87 | version "0.3.2" 88 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 89 | 90 | arrify@^1.0.0, arrify@^1.0.1: 91 | version "1.0.1" 92 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 93 | 94 | assign-symbols@^1.0.0: 95 | version "1.0.0" 96 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 97 | 98 | ast-types@0.10.1: 99 | version "0.10.1" 100 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" 101 | 102 | ast-types@0.11.3: 103 | version "0.11.3" 104 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" 105 | 106 | async@^1.5.0: 107 | version "1.5.2" 108 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 109 | 110 | async@^2.6.0: 111 | version "2.6.0" 112 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 113 | dependencies: 114 | lodash "^4.14.0" 115 | 116 | atob@^2.1.1: 117 | version "2.1.1" 118 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" 119 | 120 | babel-code-frame@^6.26.0: 121 | version "6.26.0" 122 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 123 | dependencies: 124 | chalk "^1.1.3" 125 | esutils "^2.0.2" 126 | js-tokens "^3.0.2" 127 | 128 | babel-core@^6.26.0: 129 | version "6.26.3" 130 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 131 | dependencies: 132 | babel-code-frame "^6.26.0" 133 | babel-generator "^6.26.0" 134 | babel-helpers "^6.24.1" 135 | babel-messages "^6.23.0" 136 | babel-register "^6.26.0" 137 | babel-runtime "^6.26.0" 138 | babel-template "^6.26.0" 139 | babel-traverse "^6.26.0" 140 | babel-types "^6.26.0" 141 | babylon "^6.18.0" 142 | convert-source-map "^1.5.1" 143 | debug "^2.6.9" 144 | json5 "^0.5.1" 145 | lodash "^4.17.4" 146 | minimatch "^3.0.4" 147 | path-is-absolute "^1.0.1" 148 | private "^0.1.8" 149 | slash "^1.0.0" 150 | source-map "^0.5.7" 151 | 152 | babel-generator@^6.26.0: 153 | version "6.26.1" 154 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 155 | dependencies: 156 | babel-messages "^6.23.0" 157 | babel-runtime "^6.26.0" 158 | babel-types "^6.26.0" 159 | detect-indent "^4.0.0" 160 | jsesc "^1.3.0" 161 | lodash "^4.17.4" 162 | source-map "^0.5.7" 163 | trim-right "^1.0.1" 164 | 165 | babel-helper-bindify-decorators@^6.24.1: 166 | version "6.24.1" 167 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" 168 | dependencies: 169 | babel-runtime "^6.22.0" 170 | babel-traverse "^6.24.1" 171 | babel-types "^6.24.1" 172 | 173 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 174 | version "6.24.1" 175 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 176 | dependencies: 177 | babel-helper-explode-assignable-expression "^6.24.1" 178 | babel-runtime "^6.22.0" 179 | babel-types "^6.24.1" 180 | 181 | babel-helper-call-delegate@^6.24.1: 182 | version "6.24.1" 183 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 184 | dependencies: 185 | babel-helper-hoist-variables "^6.24.1" 186 | babel-runtime "^6.22.0" 187 | babel-traverse "^6.24.1" 188 | babel-types "^6.24.1" 189 | 190 | babel-helper-define-map@^6.24.1: 191 | version "6.26.0" 192 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" 193 | dependencies: 194 | babel-helper-function-name "^6.24.1" 195 | babel-runtime "^6.26.0" 196 | babel-types "^6.26.0" 197 | lodash "^4.17.4" 198 | 199 | babel-helper-explode-assignable-expression@^6.24.1: 200 | version "6.24.1" 201 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 202 | dependencies: 203 | babel-runtime "^6.22.0" 204 | babel-traverse "^6.24.1" 205 | babel-types "^6.24.1" 206 | 207 | babel-helper-explode-class@^6.24.1: 208 | version "6.24.1" 209 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" 210 | dependencies: 211 | babel-helper-bindify-decorators "^6.24.1" 212 | babel-runtime "^6.22.0" 213 | babel-traverse "^6.24.1" 214 | babel-types "^6.24.1" 215 | 216 | babel-helper-function-name@^6.24.1: 217 | version "6.24.1" 218 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 219 | dependencies: 220 | babel-helper-get-function-arity "^6.24.1" 221 | babel-runtime "^6.22.0" 222 | babel-template "^6.24.1" 223 | babel-traverse "^6.24.1" 224 | babel-types "^6.24.1" 225 | 226 | babel-helper-get-function-arity@^6.24.1: 227 | version "6.24.1" 228 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 229 | dependencies: 230 | babel-runtime "^6.22.0" 231 | babel-types "^6.24.1" 232 | 233 | babel-helper-hoist-variables@^6.24.1: 234 | version "6.24.1" 235 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 236 | dependencies: 237 | babel-runtime "^6.22.0" 238 | babel-types "^6.24.1" 239 | 240 | babel-helper-optimise-call-expression@^6.24.1: 241 | version "6.24.1" 242 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 243 | dependencies: 244 | babel-runtime "^6.22.0" 245 | babel-types "^6.24.1" 246 | 247 | babel-helper-regex@^6.24.1: 248 | version "6.26.0" 249 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" 250 | dependencies: 251 | babel-runtime "^6.26.0" 252 | babel-types "^6.26.0" 253 | lodash "^4.17.4" 254 | 255 | babel-helper-remap-async-to-generator@^6.24.1: 256 | version "6.24.1" 257 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 258 | dependencies: 259 | babel-helper-function-name "^6.24.1" 260 | babel-runtime "^6.22.0" 261 | babel-template "^6.24.1" 262 | babel-traverse "^6.24.1" 263 | babel-types "^6.24.1" 264 | 265 | babel-helper-replace-supers@^6.24.1: 266 | version "6.24.1" 267 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 268 | dependencies: 269 | babel-helper-optimise-call-expression "^6.24.1" 270 | babel-messages "^6.23.0" 271 | babel-runtime "^6.22.0" 272 | babel-template "^6.24.1" 273 | babel-traverse "^6.24.1" 274 | babel-types "^6.24.1" 275 | 276 | babel-helpers@^6.24.1: 277 | version "6.24.1" 278 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 279 | dependencies: 280 | babel-runtime "^6.22.0" 281 | babel-template "^6.24.1" 282 | 283 | babel-messages@^6.23.0: 284 | version "6.23.0" 285 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 286 | dependencies: 287 | babel-runtime "^6.22.0" 288 | 289 | babel-plugin-check-es2015-constants@^6.22.0: 290 | version "6.22.0" 291 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 292 | dependencies: 293 | babel-runtime "^6.22.0" 294 | 295 | babel-plugin-syntax-async-functions@^6.8.0: 296 | version "6.13.0" 297 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 298 | 299 | babel-plugin-syntax-async-generators@^6.5.0: 300 | version "6.13.0" 301 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 302 | 303 | babel-plugin-syntax-class-constructor-call@^6.18.0: 304 | version "6.18.0" 305 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" 306 | 307 | babel-plugin-syntax-class-properties@^6.8.0: 308 | version "6.13.0" 309 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 310 | 311 | babel-plugin-syntax-decorators@^6.13.0: 312 | version "6.13.0" 313 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 314 | 315 | babel-plugin-syntax-dynamic-import@^6.18.0: 316 | version "6.18.0" 317 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 318 | 319 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 320 | version "6.13.0" 321 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 322 | 323 | babel-plugin-syntax-export-extensions@^6.8.0: 324 | version "6.13.0" 325 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" 326 | 327 | babel-plugin-syntax-flow@^6.18.0: 328 | version "6.18.0" 329 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" 330 | 331 | babel-plugin-syntax-object-rest-spread@^6.8.0: 332 | version "6.13.0" 333 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 334 | 335 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 336 | version "6.22.0" 337 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 338 | 339 | babel-plugin-transform-async-generator-functions@^6.24.1: 340 | version "6.24.1" 341 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" 342 | dependencies: 343 | babel-helper-remap-async-to-generator "^6.24.1" 344 | babel-plugin-syntax-async-generators "^6.5.0" 345 | babel-runtime "^6.22.0" 346 | 347 | babel-plugin-transform-async-to-generator@^6.24.1: 348 | version "6.24.1" 349 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 350 | dependencies: 351 | babel-helper-remap-async-to-generator "^6.24.1" 352 | babel-plugin-syntax-async-functions "^6.8.0" 353 | babel-runtime "^6.22.0" 354 | 355 | babel-plugin-transform-class-constructor-call@^6.24.1: 356 | version "6.24.1" 357 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" 358 | dependencies: 359 | babel-plugin-syntax-class-constructor-call "^6.18.0" 360 | babel-runtime "^6.22.0" 361 | babel-template "^6.24.1" 362 | 363 | babel-plugin-transform-class-properties@^6.24.1: 364 | version "6.24.1" 365 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" 366 | dependencies: 367 | babel-helper-function-name "^6.24.1" 368 | babel-plugin-syntax-class-properties "^6.8.0" 369 | babel-runtime "^6.22.0" 370 | babel-template "^6.24.1" 371 | 372 | babel-plugin-transform-decorators@^6.24.1: 373 | version "6.24.1" 374 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" 375 | dependencies: 376 | babel-helper-explode-class "^6.24.1" 377 | babel-plugin-syntax-decorators "^6.13.0" 378 | babel-runtime "^6.22.0" 379 | babel-template "^6.24.1" 380 | babel-types "^6.24.1" 381 | 382 | babel-plugin-transform-es2015-arrow-functions@^6.22.0: 383 | version "6.22.0" 384 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 385 | dependencies: 386 | babel-runtime "^6.22.0" 387 | 388 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 389 | version "6.22.0" 390 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 391 | dependencies: 392 | babel-runtime "^6.22.0" 393 | 394 | babel-plugin-transform-es2015-block-scoping@^6.24.1: 395 | version "6.26.0" 396 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" 397 | dependencies: 398 | babel-runtime "^6.26.0" 399 | babel-template "^6.26.0" 400 | babel-traverse "^6.26.0" 401 | babel-types "^6.26.0" 402 | lodash "^4.17.4" 403 | 404 | babel-plugin-transform-es2015-classes@^6.24.1: 405 | version "6.24.1" 406 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 407 | dependencies: 408 | babel-helper-define-map "^6.24.1" 409 | babel-helper-function-name "^6.24.1" 410 | babel-helper-optimise-call-expression "^6.24.1" 411 | babel-helper-replace-supers "^6.24.1" 412 | babel-messages "^6.23.0" 413 | babel-runtime "^6.22.0" 414 | babel-template "^6.24.1" 415 | babel-traverse "^6.24.1" 416 | babel-types "^6.24.1" 417 | 418 | babel-plugin-transform-es2015-computed-properties@^6.24.1: 419 | version "6.24.1" 420 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 421 | dependencies: 422 | babel-runtime "^6.22.0" 423 | babel-template "^6.24.1" 424 | 425 | babel-plugin-transform-es2015-destructuring@^6.22.0: 426 | version "6.23.0" 427 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 428 | dependencies: 429 | babel-runtime "^6.22.0" 430 | 431 | babel-plugin-transform-es2015-duplicate-keys@^6.24.1: 432 | version "6.24.1" 433 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 434 | dependencies: 435 | babel-runtime "^6.22.0" 436 | babel-types "^6.24.1" 437 | 438 | babel-plugin-transform-es2015-for-of@^6.22.0: 439 | version "6.23.0" 440 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 441 | dependencies: 442 | babel-runtime "^6.22.0" 443 | 444 | babel-plugin-transform-es2015-function-name@^6.24.1: 445 | version "6.24.1" 446 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 447 | dependencies: 448 | babel-helper-function-name "^6.24.1" 449 | babel-runtime "^6.22.0" 450 | babel-types "^6.24.1" 451 | 452 | babel-plugin-transform-es2015-literals@^6.22.0: 453 | version "6.22.0" 454 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 455 | dependencies: 456 | babel-runtime "^6.22.0" 457 | 458 | babel-plugin-transform-es2015-modules-amd@^6.24.1: 459 | version "6.24.1" 460 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 461 | dependencies: 462 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 463 | babel-runtime "^6.22.0" 464 | babel-template "^6.24.1" 465 | 466 | babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 467 | version "6.26.2" 468 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" 469 | dependencies: 470 | babel-plugin-transform-strict-mode "^6.24.1" 471 | babel-runtime "^6.26.0" 472 | babel-template "^6.26.0" 473 | babel-types "^6.26.0" 474 | 475 | babel-plugin-transform-es2015-modules-systemjs@^6.24.1: 476 | version "6.24.1" 477 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 478 | dependencies: 479 | babel-helper-hoist-variables "^6.24.1" 480 | babel-runtime "^6.22.0" 481 | babel-template "^6.24.1" 482 | 483 | babel-plugin-transform-es2015-modules-umd@^6.24.1: 484 | version "6.24.1" 485 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 486 | dependencies: 487 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 488 | babel-runtime "^6.22.0" 489 | babel-template "^6.24.1" 490 | 491 | babel-plugin-transform-es2015-object-super@^6.24.1: 492 | version "6.24.1" 493 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 494 | dependencies: 495 | babel-helper-replace-supers "^6.24.1" 496 | babel-runtime "^6.22.0" 497 | 498 | babel-plugin-transform-es2015-parameters@^6.24.1: 499 | version "6.24.1" 500 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 501 | dependencies: 502 | babel-helper-call-delegate "^6.24.1" 503 | babel-helper-get-function-arity "^6.24.1" 504 | babel-runtime "^6.22.0" 505 | babel-template "^6.24.1" 506 | babel-traverse "^6.24.1" 507 | babel-types "^6.24.1" 508 | 509 | babel-plugin-transform-es2015-shorthand-properties@^6.24.1: 510 | version "6.24.1" 511 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 512 | dependencies: 513 | babel-runtime "^6.22.0" 514 | babel-types "^6.24.1" 515 | 516 | babel-plugin-transform-es2015-spread@^6.22.0: 517 | version "6.22.0" 518 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 519 | dependencies: 520 | babel-runtime "^6.22.0" 521 | 522 | babel-plugin-transform-es2015-sticky-regex@^6.24.1: 523 | version "6.24.1" 524 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 525 | dependencies: 526 | babel-helper-regex "^6.24.1" 527 | babel-runtime "^6.22.0" 528 | babel-types "^6.24.1" 529 | 530 | babel-plugin-transform-es2015-template-literals@^6.22.0: 531 | version "6.22.0" 532 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 533 | dependencies: 534 | babel-runtime "^6.22.0" 535 | 536 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0: 537 | version "6.23.0" 538 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 539 | dependencies: 540 | babel-runtime "^6.22.0" 541 | 542 | babel-plugin-transform-es2015-unicode-regex@^6.24.1: 543 | version "6.24.1" 544 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 545 | dependencies: 546 | babel-helper-regex "^6.24.1" 547 | babel-runtime "^6.22.0" 548 | regexpu-core "^2.0.0" 549 | 550 | babel-plugin-transform-exponentiation-operator@^6.24.1: 551 | version "6.24.1" 552 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 553 | dependencies: 554 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 555 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 556 | babel-runtime "^6.22.0" 557 | 558 | babel-plugin-transform-export-extensions@^6.22.0: 559 | version "6.22.0" 560 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" 561 | dependencies: 562 | babel-plugin-syntax-export-extensions "^6.8.0" 563 | babel-runtime "^6.22.0" 564 | 565 | babel-plugin-transform-flow-strip-types@^6.8.0: 566 | version "6.22.0" 567 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" 568 | dependencies: 569 | babel-plugin-syntax-flow "^6.18.0" 570 | babel-runtime "^6.22.0" 571 | 572 | babel-plugin-transform-object-rest-spread@^6.22.0: 573 | version "6.26.0" 574 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" 575 | dependencies: 576 | babel-plugin-syntax-object-rest-spread "^6.8.0" 577 | babel-runtime "^6.26.0" 578 | 579 | babel-plugin-transform-regenerator@^6.24.1: 580 | version "6.26.0" 581 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" 582 | dependencies: 583 | regenerator-transform "^0.10.0" 584 | 585 | babel-plugin-transform-strict-mode@^6.24.1: 586 | version "6.24.1" 587 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 588 | dependencies: 589 | babel-runtime "^6.22.0" 590 | babel-types "^6.24.1" 591 | 592 | babel-polyfill@^6.23.0: 593 | version "6.26.0" 594 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" 595 | dependencies: 596 | babel-runtime "^6.26.0" 597 | core-js "^2.5.0" 598 | regenerator-runtime "^0.10.5" 599 | 600 | babel-preset-es2015@^6.18.0, babel-preset-es2015@^6.9.0: 601 | version "6.24.1" 602 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" 603 | dependencies: 604 | babel-plugin-check-es2015-constants "^6.22.0" 605 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 606 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 607 | babel-plugin-transform-es2015-block-scoping "^6.24.1" 608 | babel-plugin-transform-es2015-classes "^6.24.1" 609 | babel-plugin-transform-es2015-computed-properties "^6.24.1" 610 | babel-plugin-transform-es2015-destructuring "^6.22.0" 611 | babel-plugin-transform-es2015-duplicate-keys "^6.24.1" 612 | babel-plugin-transform-es2015-for-of "^6.22.0" 613 | babel-plugin-transform-es2015-function-name "^6.24.1" 614 | babel-plugin-transform-es2015-literals "^6.22.0" 615 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 616 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 617 | babel-plugin-transform-es2015-modules-systemjs "^6.24.1" 618 | babel-plugin-transform-es2015-modules-umd "^6.24.1" 619 | babel-plugin-transform-es2015-object-super "^6.24.1" 620 | babel-plugin-transform-es2015-parameters "^6.24.1" 621 | babel-plugin-transform-es2015-shorthand-properties "^6.24.1" 622 | babel-plugin-transform-es2015-spread "^6.22.0" 623 | babel-plugin-transform-es2015-sticky-regex "^6.24.1" 624 | babel-plugin-transform-es2015-template-literals "^6.22.0" 625 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0" 626 | babel-plugin-transform-es2015-unicode-regex "^6.24.1" 627 | babel-plugin-transform-regenerator "^6.24.1" 628 | 629 | babel-preset-stage-1@^6.5.0: 630 | version "6.24.1" 631 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" 632 | dependencies: 633 | babel-plugin-transform-class-constructor-call "^6.24.1" 634 | babel-plugin-transform-export-extensions "^6.22.0" 635 | babel-preset-stage-2 "^6.24.1" 636 | 637 | babel-preset-stage-2@^6.18.0, babel-preset-stage-2@^6.24.1: 638 | version "6.24.1" 639 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" 640 | dependencies: 641 | babel-plugin-syntax-dynamic-import "^6.18.0" 642 | babel-plugin-transform-class-properties "^6.24.1" 643 | babel-plugin-transform-decorators "^6.24.1" 644 | babel-preset-stage-3 "^6.24.1" 645 | 646 | babel-preset-stage-3@^6.17.0, babel-preset-stage-3@^6.24.1: 647 | version "6.24.1" 648 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" 649 | dependencies: 650 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 651 | babel-plugin-transform-async-generator-functions "^6.24.1" 652 | babel-plugin-transform-async-to-generator "^6.24.1" 653 | babel-plugin-transform-exponentiation-operator "^6.24.1" 654 | babel-plugin-transform-object-rest-spread "^6.22.0" 655 | 656 | babel-register@^6.23.0, babel-register@^6.26.0, babel-register@^6.9.0: 657 | version "6.26.0" 658 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 659 | dependencies: 660 | babel-core "^6.26.0" 661 | babel-runtime "^6.26.0" 662 | core-js "^2.5.0" 663 | home-or-tmp "^2.0.0" 664 | lodash "^4.17.4" 665 | mkdirp "^0.5.1" 666 | source-map-support "^0.4.15" 667 | 668 | babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: 669 | version "6.26.0" 670 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 671 | dependencies: 672 | core-js "^2.4.0" 673 | regenerator-runtime "^0.11.0" 674 | 675 | babel-template@^6.24.1, babel-template@^6.26.0: 676 | version "6.26.0" 677 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 678 | dependencies: 679 | babel-runtime "^6.26.0" 680 | babel-traverse "^6.26.0" 681 | babel-types "^6.26.0" 682 | babylon "^6.18.0" 683 | lodash "^4.17.4" 684 | 685 | babel-traverse@^6.24.1, babel-traverse@^6.26.0: 686 | version "6.26.0" 687 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 688 | dependencies: 689 | babel-code-frame "^6.26.0" 690 | babel-messages "^6.23.0" 691 | babel-runtime "^6.26.0" 692 | babel-types "^6.26.0" 693 | babylon "^6.18.0" 694 | debug "^2.6.8" 695 | globals "^9.18.0" 696 | invariant "^2.2.2" 697 | lodash "^4.17.4" 698 | 699 | babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: 700 | version "6.26.0" 701 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 702 | dependencies: 703 | babel-runtime "^6.26.0" 704 | esutils "^2.0.2" 705 | lodash "^4.17.4" 706 | to-fast-properties "^1.0.3" 707 | 708 | babylon@^6.17.3, babylon@^6.18.0: 709 | version "6.18.0" 710 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 711 | 712 | babylon@^7.0.0-beta.30: 713 | version "7.0.0-beta.46" 714 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.46.tgz#b6ddaba81bbb130313932757ff9c195d527088b6" 715 | 716 | balanced-match@^1.0.0: 717 | version "1.0.0" 718 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 719 | 720 | base@^0.11.1: 721 | version "0.11.2" 722 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 723 | dependencies: 724 | cache-base "^1.0.1" 725 | class-utils "^0.3.5" 726 | component-emitter "^1.2.1" 727 | define-property "^1.0.0" 728 | isobject "^3.0.1" 729 | mixin-deep "^1.2.0" 730 | pascalcase "^0.1.1" 731 | 732 | big.js@^3.1.3: 733 | version "3.2.0" 734 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 735 | 736 | binaryextensions@2: 737 | version "2.1.1" 738 | resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" 739 | 740 | brace-expansion@^1.1.7: 741 | version "1.1.11" 742 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 743 | dependencies: 744 | balanced-match "^1.0.0" 745 | concat-map "0.0.1" 746 | 747 | braces@^1.8.2: 748 | version "1.8.5" 749 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 750 | dependencies: 751 | expand-range "^1.8.1" 752 | preserve "^0.2.0" 753 | repeat-element "^1.1.2" 754 | 755 | braces@^2.3.1: 756 | version "2.3.2" 757 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 758 | dependencies: 759 | arr-flatten "^1.1.0" 760 | array-unique "^0.3.2" 761 | extend-shallow "^2.0.1" 762 | fill-range "^4.0.0" 763 | isobject "^3.0.1" 764 | repeat-element "^1.1.2" 765 | snapdragon "^0.8.1" 766 | snapdragon-node "^2.0.1" 767 | split-string "^3.0.2" 768 | to-regex "^3.0.1" 769 | 770 | browser-stdout@1.3.0: 771 | version "1.3.0" 772 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 773 | 774 | buffer-from@^1.0.0: 775 | version "1.0.0" 776 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" 777 | 778 | builtin-modules@^1.0.0: 779 | version "1.1.1" 780 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 781 | 782 | cache-base@^1.0.1: 783 | version "1.0.1" 784 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 785 | dependencies: 786 | collection-visit "^1.0.0" 787 | component-emitter "^1.2.1" 788 | get-value "^2.0.6" 789 | has-value "^1.0.0" 790 | isobject "^3.0.1" 791 | set-value "^2.0.0" 792 | to-object-path "^0.3.0" 793 | union-value "^1.0.0" 794 | unset-value "^1.0.0" 795 | 796 | cacheable-request@^2.1.1: 797 | version "2.1.4" 798 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" 799 | dependencies: 800 | clone-response "1.0.2" 801 | get-stream "3.0.0" 802 | http-cache-semantics "3.8.1" 803 | keyv "3.0.0" 804 | lowercase-keys "1.0.0" 805 | normalize-url "2.0.1" 806 | responselike "1.0.2" 807 | 808 | call-me-maybe@^1.0.1: 809 | version "1.0.1" 810 | resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" 811 | 812 | camelcase@^3.0.0: 813 | version "3.0.0" 814 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 815 | 816 | camelcase@^4.1.0: 817 | version "4.1.0" 818 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 819 | 820 | chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: 821 | version "1.1.3" 822 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 823 | dependencies: 824 | ansi-styles "^2.2.1" 825 | escape-string-regexp "^1.0.2" 826 | has-ansi "^2.0.0" 827 | strip-ansi "^3.0.0" 828 | supports-color "^2.0.0" 829 | 830 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: 831 | version "2.4.1" 832 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 833 | dependencies: 834 | ansi-styles "^3.2.1" 835 | escape-string-regexp "^1.0.5" 836 | supports-color "^5.3.0" 837 | 838 | chalk@~0.4.0: 839 | version "0.4.0" 840 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" 841 | dependencies: 842 | ansi-styles "~1.0.0" 843 | has-color "~0.1.0" 844 | strip-ansi "~0.1.0" 845 | 846 | chardet@^0.4.0: 847 | version "0.4.2" 848 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" 849 | 850 | class-utils@^0.3.5: 851 | version "0.3.6" 852 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 853 | dependencies: 854 | arr-union "^3.1.0" 855 | define-property "^0.2.5" 856 | isobject "^3.0.0" 857 | static-extend "^0.1.1" 858 | 859 | cli-cursor@^1.0.2: 860 | version "1.0.2" 861 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 862 | dependencies: 863 | restore-cursor "^1.0.1" 864 | 865 | cli-cursor@^2.1.0: 866 | version "2.1.0" 867 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 868 | dependencies: 869 | restore-cursor "^2.0.0" 870 | 871 | cli-spinners@^0.1.2: 872 | version "0.1.2" 873 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" 874 | 875 | cli-table@^0.3.1: 876 | version "0.3.1" 877 | resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" 878 | dependencies: 879 | colors "1.0.3" 880 | 881 | cli-truncate@^0.2.1: 882 | version "0.2.1" 883 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" 884 | dependencies: 885 | slice-ansi "0.0.4" 886 | string-width "^1.0.1" 887 | 888 | cli-width@^2.0.0: 889 | version "2.2.0" 890 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 891 | 892 | cliui@^3.2.0: 893 | version "3.2.0" 894 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 895 | dependencies: 896 | string-width "^1.0.1" 897 | strip-ansi "^3.0.1" 898 | wrap-ansi "^2.0.0" 899 | 900 | cliui@^4.0.0: 901 | version "4.1.0" 902 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 903 | dependencies: 904 | string-width "^2.1.1" 905 | strip-ansi "^4.0.0" 906 | wrap-ansi "^2.0.0" 907 | 908 | clone-buffer@^1.0.0: 909 | version "1.0.0" 910 | resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" 911 | 912 | clone-response@1.0.2: 913 | version "1.0.2" 914 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 915 | dependencies: 916 | mimic-response "^1.0.0" 917 | 918 | clone-stats@^0.0.1: 919 | version "0.0.1" 920 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" 921 | 922 | clone-stats@^1.0.0: 923 | version "1.0.0" 924 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" 925 | 926 | clone@^1.0.0: 927 | version "1.0.4" 928 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 929 | 930 | clone@^2.1.1: 931 | version "2.1.1" 932 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" 933 | 934 | cloneable-readable@^1.0.0: 935 | version "1.1.2" 936 | resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" 937 | dependencies: 938 | inherits "^2.0.1" 939 | process-nextick-args "^2.0.0" 940 | readable-stream "^2.3.5" 941 | 942 | code-point-at@^1.0.0: 943 | version "1.1.0" 944 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 945 | 946 | collection-visit@^1.0.0: 947 | version "1.0.0" 948 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 949 | dependencies: 950 | map-visit "^1.0.0" 951 | object-visit "^1.0.0" 952 | 953 | color-convert@^1.9.0: 954 | version "1.9.1" 955 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 956 | dependencies: 957 | color-name "^1.1.1" 958 | 959 | color-name@^1.1.1: 960 | version "1.1.3" 961 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 962 | 963 | colors@1.0.3: 964 | version "1.0.3" 965 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 966 | 967 | colors@^1.1.2: 968 | version "1.2.5" 969 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" 970 | 971 | commander@2.9.0: 972 | version "2.9.0" 973 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 974 | dependencies: 975 | graceful-readlink ">= 1.0.0" 976 | 977 | commondir@^1.0.1: 978 | version "1.0.1" 979 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 980 | 981 | component-emitter@^1.2.1: 982 | version "1.2.1" 983 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 984 | 985 | concat-map@0.0.1: 986 | version "0.0.1" 987 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 988 | 989 | convert-source-map@^1.5.1: 990 | version "1.5.1" 991 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 992 | 993 | copy-descriptor@^0.1.0: 994 | version "0.1.1" 995 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 996 | 997 | core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: 998 | version "2.5.6" 999 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" 1000 | 1001 | core-util-is@~1.0.0: 1002 | version "1.0.2" 1003 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1004 | 1005 | cross-spawn@^5.0.1: 1006 | version "5.1.0" 1007 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 1008 | dependencies: 1009 | lru-cache "^4.0.1" 1010 | shebang-command "^1.2.0" 1011 | which "^1.2.9" 1012 | 1013 | cross-spawn@^6.0.5: 1014 | version "6.0.5" 1015 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 1016 | dependencies: 1017 | nice-try "^1.0.4" 1018 | path-key "^2.0.1" 1019 | semver "^5.5.0" 1020 | shebang-command "^1.2.0" 1021 | which "^1.2.9" 1022 | 1023 | dargs@^5.1.0: 1024 | version "5.1.0" 1025 | resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" 1026 | 1027 | date-fns@^1.27.2: 1028 | version "1.29.0" 1029 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" 1030 | 1031 | dateformat@^3.0.3: 1032 | version "3.0.3" 1033 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 1034 | 1035 | debug@2.6.8: 1036 | version "2.6.8" 1037 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 1038 | dependencies: 1039 | ms "2.0.0" 1040 | 1041 | debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: 1042 | version "2.6.9" 1043 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1044 | dependencies: 1045 | ms "2.0.0" 1046 | 1047 | debug@^3.1.0: 1048 | version "3.1.0" 1049 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 1050 | dependencies: 1051 | ms "2.0.0" 1052 | 1053 | decamelize@^1.1.1: 1054 | version "1.2.0" 1055 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1056 | 1057 | decode-uri-component@^0.2.0: 1058 | version "0.2.0" 1059 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 1060 | 1061 | decompress-response@^3.2.0, decompress-response@^3.3.0: 1062 | version "3.3.0" 1063 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 1064 | dependencies: 1065 | mimic-response "^1.0.0" 1066 | 1067 | deep-extend@^0.5.1: 1068 | version "0.5.1" 1069 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" 1070 | 1071 | define-property@^0.2.5: 1072 | version "0.2.5" 1073 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 1074 | dependencies: 1075 | is-descriptor "^0.1.0" 1076 | 1077 | define-property@^1.0.0: 1078 | version "1.0.0" 1079 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 1080 | dependencies: 1081 | is-descriptor "^1.0.0" 1082 | 1083 | define-property@^2.0.2: 1084 | version "2.0.2" 1085 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 1086 | dependencies: 1087 | is-descriptor "^1.0.2" 1088 | isobject "^3.0.1" 1089 | 1090 | detect-conflict@^1.0.0: 1091 | version "1.0.1" 1092 | resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" 1093 | 1094 | detect-indent@^4.0.0: 1095 | version "4.0.0" 1096 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1097 | dependencies: 1098 | repeating "^2.0.0" 1099 | 1100 | diff@3.2.0: 1101 | version "3.2.0" 1102 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 1103 | 1104 | diff@^3.3.1, diff@^3.5.0: 1105 | version "3.5.0" 1106 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 1107 | 1108 | dir-glob@^2.0.0: 1109 | version "2.0.0" 1110 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" 1111 | dependencies: 1112 | arrify "^1.0.1" 1113 | path-type "^3.0.0" 1114 | 1115 | duplexer3@^0.1.4: 1116 | version "0.1.4" 1117 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 1118 | 1119 | editions@^1.3.3: 1120 | version "1.3.4" 1121 | resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" 1122 | 1123 | ejs@^2.5.9: 1124 | version "2.6.1" 1125 | resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" 1126 | 1127 | elegant-spinner@^1.0.1: 1128 | version "1.0.1" 1129 | resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" 1130 | 1131 | emojis-list@^2.0.0: 1132 | version "2.1.0" 1133 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 1134 | 1135 | enhanced-resolve@^4.0.0: 1136 | version "4.0.0" 1137 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" 1138 | dependencies: 1139 | graceful-fs "^4.1.2" 1140 | memory-fs "^0.4.0" 1141 | tapable "^1.0.0" 1142 | 1143 | envinfo@^4.4.2: 1144 | version "4.4.2" 1145 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-4.4.2.tgz#472c49f3a8b9bca73962641ce7cb692bf623cd1c" 1146 | 1147 | errno@^0.1.3: 1148 | version "0.1.7" 1149 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" 1150 | dependencies: 1151 | prr "~1.0.1" 1152 | 1153 | error-ex@^1.2.0, error-ex@^1.3.1: 1154 | version "1.3.1" 1155 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 1156 | dependencies: 1157 | is-arrayish "^0.2.1" 1158 | 1159 | error@^7.0.2: 1160 | version "7.0.2" 1161 | resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" 1162 | dependencies: 1163 | string-template "~0.2.1" 1164 | xtend "~4.0.0" 1165 | 1166 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 1167 | version "1.0.5" 1168 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1169 | 1170 | esprima@~4.0.0: 1171 | version "4.0.0" 1172 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 1173 | 1174 | esutils@^2.0.2: 1175 | version "2.0.2" 1176 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1177 | 1178 | execa@^0.7.0: 1179 | version "0.7.0" 1180 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 1181 | dependencies: 1182 | cross-spawn "^5.0.1" 1183 | get-stream "^3.0.0" 1184 | is-stream "^1.1.0" 1185 | npm-run-path "^2.0.0" 1186 | p-finally "^1.0.0" 1187 | signal-exit "^3.0.0" 1188 | strip-eof "^1.0.0" 1189 | 1190 | exit-hook@^1.0.0: 1191 | version "1.1.1" 1192 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 1193 | 1194 | expand-brackets@^0.1.4: 1195 | version "0.1.5" 1196 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1197 | dependencies: 1198 | is-posix-bracket "^0.1.0" 1199 | 1200 | expand-brackets@^2.1.4: 1201 | version "2.1.4" 1202 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1203 | dependencies: 1204 | debug "^2.3.3" 1205 | define-property "^0.2.5" 1206 | extend-shallow "^2.0.1" 1207 | posix-character-classes "^0.1.0" 1208 | regex-not "^1.0.0" 1209 | snapdragon "^0.8.1" 1210 | to-regex "^3.0.1" 1211 | 1212 | expand-range@^1.8.1: 1213 | version "1.8.2" 1214 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1215 | dependencies: 1216 | fill-range "^2.1.0" 1217 | 1218 | expand-tilde@^2.0.0, expand-tilde@^2.0.2: 1219 | version "2.0.2" 1220 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" 1221 | dependencies: 1222 | homedir-polyfill "^1.0.1" 1223 | 1224 | extend-shallow@^2.0.1: 1225 | version "2.0.1" 1226 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1227 | dependencies: 1228 | is-extendable "^0.1.0" 1229 | 1230 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1231 | version "3.0.2" 1232 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1233 | dependencies: 1234 | assign-symbols "^1.0.0" 1235 | is-extendable "^1.0.1" 1236 | 1237 | external-editor@^2.0.4, external-editor@^2.1.0: 1238 | version "2.2.0" 1239 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" 1240 | dependencies: 1241 | chardet "^0.4.0" 1242 | iconv-lite "^0.4.17" 1243 | tmp "^0.0.33" 1244 | 1245 | extglob@^0.3.1: 1246 | version "0.3.2" 1247 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1248 | dependencies: 1249 | is-extglob "^1.0.0" 1250 | 1251 | extglob@^2.0.4: 1252 | version "2.0.4" 1253 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1254 | dependencies: 1255 | array-unique "^0.3.2" 1256 | define-property "^1.0.0" 1257 | expand-brackets "^2.1.4" 1258 | extend-shallow "^2.0.1" 1259 | fragment-cache "^0.2.1" 1260 | regex-not "^1.0.0" 1261 | snapdragon "^0.8.1" 1262 | to-regex "^3.0.1" 1263 | 1264 | fast-glob@^2.0.2: 1265 | version "2.2.1" 1266 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.1.tgz#686c2345be88f3741e174add0be6f2e5b6078889" 1267 | dependencies: 1268 | "@mrmlnc/readdir-enhanced" "^2.2.1" 1269 | glob-parent "^3.1.0" 1270 | is-glob "^4.0.0" 1271 | merge2 "^1.2.1" 1272 | micromatch "^3.1.10" 1273 | 1274 | figures@^1.7.0: 1275 | version "1.7.0" 1276 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 1277 | dependencies: 1278 | escape-string-regexp "^1.0.5" 1279 | object-assign "^4.1.0" 1280 | 1281 | figures@^2.0.0: 1282 | version "2.0.0" 1283 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 1284 | dependencies: 1285 | escape-string-regexp "^1.0.5" 1286 | 1287 | filename-regex@^2.0.0: 1288 | version "2.0.1" 1289 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1290 | 1291 | fill-range@^2.1.0: 1292 | version "2.2.4" 1293 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 1294 | dependencies: 1295 | is-number "^2.1.0" 1296 | isobject "^2.0.0" 1297 | randomatic "^3.0.0" 1298 | repeat-element "^1.1.2" 1299 | repeat-string "^1.5.2" 1300 | 1301 | fill-range@^4.0.0: 1302 | version "4.0.0" 1303 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1304 | dependencies: 1305 | extend-shallow "^2.0.1" 1306 | is-number "^3.0.0" 1307 | repeat-string "^1.6.1" 1308 | to-regex-range "^2.1.0" 1309 | 1310 | find-up@^1.0.0: 1311 | version "1.1.2" 1312 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1313 | dependencies: 1314 | path-exists "^2.0.0" 1315 | pinkie-promise "^2.0.0" 1316 | 1317 | find-up@^2.0.0, find-up@^2.1.0: 1318 | version "2.1.0" 1319 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1320 | dependencies: 1321 | locate-path "^2.0.0" 1322 | 1323 | first-chunk-stream@^2.0.0: 1324 | version "2.0.0" 1325 | resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" 1326 | dependencies: 1327 | readable-stream "^2.0.2" 1328 | 1329 | flow-parser@^0.*: 1330 | version "0.72.0" 1331 | resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.72.0.tgz#6c8041e76ac7d0be1a71ce29c00cd1435fb6013c" 1332 | 1333 | for-in@^1.0.1, for-in@^1.0.2: 1334 | version "1.0.2" 1335 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1336 | 1337 | for-own@^0.1.4: 1338 | version "0.1.5" 1339 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1340 | dependencies: 1341 | for-in "^1.0.1" 1342 | 1343 | fragment-cache@^0.2.1: 1344 | version "0.2.1" 1345 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1346 | dependencies: 1347 | map-cache "^0.2.2" 1348 | 1349 | from2@^2.1.1: 1350 | version "2.3.0" 1351 | resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 1352 | dependencies: 1353 | inherits "^2.0.1" 1354 | readable-stream "^2.0.0" 1355 | 1356 | fs-extra@^0.30.0: 1357 | version "0.30.0" 1358 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" 1359 | dependencies: 1360 | graceful-fs "^4.1.2" 1361 | jsonfile "^2.1.0" 1362 | klaw "^1.0.0" 1363 | path-is-absolute "^1.0.0" 1364 | rimraf "^2.2.8" 1365 | 1366 | fs.realpath@^1.0.0: 1367 | version "1.0.0" 1368 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1369 | 1370 | ganache-cli@^6.1.0: 1371 | version "6.1.0" 1372 | resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.1.0.tgz#486c846497204b644166b5f0f74c9b41d02bdc25" 1373 | dependencies: 1374 | source-map-support "^0.5.3" 1375 | webpack-cli "^2.0.9" 1376 | 1377 | get-caller-file@^1.0.1: 1378 | version "1.0.2" 1379 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1380 | 1381 | get-stream@3.0.0, get-stream@^3.0.0: 1382 | version "3.0.0" 1383 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1384 | 1385 | get-value@^2.0.3, get-value@^2.0.6: 1386 | version "2.0.6" 1387 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1388 | 1389 | gh-got@^6.0.0: 1390 | version "6.0.0" 1391 | resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" 1392 | dependencies: 1393 | got "^7.0.0" 1394 | is-plain-obj "^1.1.0" 1395 | 1396 | github-username@^4.0.0: 1397 | version "4.1.0" 1398 | resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" 1399 | dependencies: 1400 | gh-got "^6.0.0" 1401 | 1402 | glob-all@^3.1.0: 1403 | version "3.1.0" 1404 | resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" 1405 | dependencies: 1406 | glob "^7.0.5" 1407 | yargs "~1.2.6" 1408 | 1409 | glob-base@^0.3.0: 1410 | version "0.3.0" 1411 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1412 | dependencies: 1413 | glob-parent "^2.0.0" 1414 | is-glob "^2.0.0" 1415 | 1416 | glob-parent@^2.0.0: 1417 | version "2.0.0" 1418 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1419 | dependencies: 1420 | is-glob "^2.0.0" 1421 | 1422 | glob-parent@^3.1.0: 1423 | version "3.1.0" 1424 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 1425 | dependencies: 1426 | is-glob "^3.1.0" 1427 | path-dirname "^1.0.0" 1428 | 1429 | glob-to-regexp@^0.3.0: 1430 | version "0.3.0" 1431 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" 1432 | 1433 | glob@7.1.1: 1434 | version "7.1.1" 1435 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1436 | dependencies: 1437 | fs.realpath "^1.0.0" 1438 | inflight "^1.0.4" 1439 | inherits "2" 1440 | minimatch "^3.0.2" 1441 | once "^1.3.0" 1442 | path-is-absolute "^1.0.0" 1443 | 1444 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: 1445 | version "7.1.2" 1446 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1447 | dependencies: 1448 | fs.realpath "^1.0.0" 1449 | inflight "^1.0.4" 1450 | inherits "2" 1451 | minimatch "^3.0.4" 1452 | once "^1.3.0" 1453 | path-is-absolute "^1.0.0" 1454 | 1455 | global-modules@^1.0.0: 1456 | version "1.0.0" 1457 | resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" 1458 | dependencies: 1459 | global-prefix "^1.0.1" 1460 | is-windows "^1.0.1" 1461 | resolve-dir "^1.0.0" 1462 | 1463 | global-prefix@^1.0.1: 1464 | version "1.0.2" 1465 | resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" 1466 | dependencies: 1467 | expand-tilde "^2.0.2" 1468 | homedir-polyfill "^1.0.1" 1469 | ini "^1.3.4" 1470 | is-windows "^1.0.1" 1471 | which "^1.2.14" 1472 | 1473 | globals@^9.18.0: 1474 | version "9.18.0" 1475 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1476 | 1477 | globby@^6.1.0: 1478 | version "6.1.0" 1479 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 1480 | dependencies: 1481 | array-union "^1.0.1" 1482 | glob "^7.0.3" 1483 | object-assign "^4.0.1" 1484 | pify "^2.0.0" 1485 | pinkie-promise "^2.0.0" 1486 | 1487 | globby@^8.0.0: 1488 | version "8.0.1" 1489 | resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" 1490 | dependencies: 1491 | array-union "^1.0.1" 1492 | dir-glob "^2.0.0" 1493 | fast-glob "^2.0.2" 1494 | glob "^7.1.2" 1495 | ignore "^3.3.5" 1496 | pify "^3.0.0" 1497 | slash "^1.0.0" 1498 | 1499 | got@^7.0.0: 1500 | version "7.1.0" 1501 | resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" 1502 | dependencies: 1503 | decompress-response "^3.2.0" 1504 | duplexer3 "^0.1.4" 1505 | get-stream "^3.0.0" 1506 | is-plain-obj "^1.1.0" 1507 | is-retry-allowed "^1.0.0" 1508 | is-stream "^1.0.0" 1509 | isurl "^1.0.0-alpha5" 1510 | lowercase-keys "^1.0.0" 1511 | p-cancelable "^0.3.0" 1512 | p-timeout "^1.1.1" 1513 | safe-buffer "^5.0.1" 1514 | timed-out "^4.0.0" 1515 | url-parse-lax "^1.0.0" 1516 | url-to-options "^1.0.1" 1517 | 1518 | got@^8.2.0: 1519 | version "8.3.1" 1520 | resolved "https://registry.yarnpkg.com/got/-/got-8.3.1.tgz#093324403d4d955f5a16a7a8d39955d055ae10ed" 1521 | dependencies: 1522 | "@sindresorhus/is" "^0.7.0" 1523 | cacheable-request "^2.1.1" 1524 | decompress-response "^3.3.0" 1525 | duplexer3 "^0.1.4" 1526 | get-stream "^3.0.0" 1527 | into-stream "^3.1.0" 1528 | is-retry-allowed "^1.1.0" 1529 | isurl "^1.0.0-alpha5" 1530 | lowercase-keys "^1.0.0" 1531 | mimic-response "^1.0.0" 1532 | p-cancelable "^0.4.0" 1533 | p-timeout "^2.0.1" 1534 | pify "^3.0.0" 1535 | safe-buffer "^5.1.1" 1536 | timed-out "^4.0.1" 1537 | url-parse-lax "^3.0.0" 1538 | url-to-options "^1.0.1" 1539 | 1540 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 1541 | version "4.1.11" 1542 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1543 | 1544 | "graceful-readlink@>= 1.0.0": 1545 | version "1.0.1" 1546 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1547 | 1548 | grouped-queue@^0.3.3: 1549 | version "0.3.3" 1550 | resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" 1551 | dependencies: 1552 | lodash "^4.17.2" 1553 | 1554 | growl@1.9.2: 1555 | version "1.9.2" 1556 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 1557 | 1558 | has-ansi@^2.0.0: 1559 | version "2.0.0" 1560 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1561 | dependencies: 1562 | ansi-regex "^2.0.0" 1563 | 1564 | has-color@~0.1.0: 1565 | version "0.1.7" 1566 | resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" 1567 | 1568 | has-flag@^1.0.0: 1569 | version "1.0.0" 1570 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1571 | 1572 | has-flag@^3.0.0: 1573 | version "3.0.0" 1574 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1575 | 1576 | has-symbol-support-x@^1.4.1: 1577 | version "1.4.2" 1578 | resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" 1579 | 1580 | has-to-string-tag-x@^1.2.0: 1581 | version "1.4.1" 1582 | resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" 1583 | dependencies: 1584 | has-symbol-support-x "^1.4.1" 1585 | 1586 | has-value@^0.3.1: 1587 | version "0.3.1" 1588 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1589 | dependencies: 1590 | get-value "^2.0.3" 1591 | has-values "^0.1.4" 1592 | isobject "^2.0.0" 1593 | 1594 | has-value@^1.0.0: 1595 | version "1.0.0" 1596 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1597 | dependencies: 1598 | get-value "^2.0.6" 1599 | has-values "^1.0.0" 1600 | isobject "^3.0.0" 1601 | 1602 | has-values@^0.1.4: 1603 | version "0.1.4" 1604 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1605 | 1606 | has-values@^1.0.0: 1607 | version "1.0.0" 1608 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1609 | dependencies: 1610 | is-number "^3.0.0" 1611 | kind-of "^4.0.0" 1612 | 1613 | he@1.1.1: 1614 | version "1.1.1" 1615 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 1616 | 1617 | home-or-tmp@^2.0.0: 1618 | version "2.0.0" 1619 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1620 | dependencies: 1621 | os-homedir "^1.0.0" 1622 | os-tmpdir "^1.0.1" 1623 | 1624 | homedir-polyfill@^1.0.1: 1625 | version "1.0.1" 1626 | resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" 1627 | dependencies: 1628 | parse-passwd "^1.0.0" 1629 | 1630 | hosted-git-info@^2.1.4: 1631 | version "2.6.0" 1632 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" 1633 | 1634 | http-cache-semantics@3.8.1: 1635 | version "3.8.1" 1636 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" 1637 | 1638 | iconv-lite@^0.4.17: 1639 | version "0.4.23" 1640 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 1641 | dependencies: 1642 | safer-buffer ">= 2.1.2 < 3" 1643 | 1644 | ignore@^3.3.5: 1645 | version "3.3.8" 1646 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" 1647 | 1648 | import-local@^1.0.0: 1649 | version "1.0.0" 1650 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" 1651 | dependencies: 1652 | pkg-dir "^2.0.0" 1653 | resolve-cwd "^2.0.0" 1654 | 1655 | imurmurhash@^0.1.4: 1656 | version "0.1.4" 1657 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1658 | 1659 | indent-string@^2.1.0: 1660 | version "2.1.0" 1661 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1662 | dependencies: 1663 | repeating "^2.0.0" 1664 | 1665 | indent-string@^3.0.0: 1666 | version "3.2.0" 1667 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" 1668 | 1669 | inflight@^1.0.4: 1670 | version "1.0.6" 1671 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1672 | dependencies: 1673 | once "^1.3.0" 1674 | wrappy "1" 1675 | 1676 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1677 | version "2.0.3" 1678 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1679 | 1680 | ini@^1.3.4: 1681 | version "1.3.5" 1682 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1683 | 1684 | inquirer@^3.3.0: 1685 | version "3.3.0" 1686 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 1687 | dependencies: 1688 | ansi-escapes "^3.0.0" 1689 | chalk "^2.0.0" 1690 | cli-cursor "^2.1.0" 1691 | cli-width "^2.0.0" 1692 | external-editor "^2.0.4" 1693 | figures "^2.0.0" 1694 | lodash "^4.3.0" 1695 | mute-stream "0.0.7" 1696 | run-async "^2.2.0" 1697 | rx-lite "^4.0.8" 1698 | rx-lite-aggregates "^4.0.8" 1699 | string-width "^2.1.0" 1700 | strip-ansi "^4.0.0" 1701 | through "^2.3.6" 1702 | 1703 | inquirer@^5.1.0: 1704 | version "5.2.0" 1705 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" 1706 | dependencies: 1707 | ansi-escapes "^3.0.0" 1708 | chalk "^2.0.0" 1709 | cli-cursor "^2.1.0" 1710 | cli-width "^2.0.0" 1711 | external-editor "^2.1.0" 1712 | figures "^2.0.0" 1713 | lodash "^4.3.0" 1714 | mute-stream "0.0.7" 1715 | run-async "^2.2.0" 1716 | rxjs "^5.5.2" 1717 | string-width "^2.1.0" 1718 | strip-ansi "^4.0.0" 1719 | through "^2.3.6" 1720 | 1721 | interpret@^1.0.0, interpret@^1.0.4: 1722 | version "1.1.0" 1723 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 1724 | 1725 | into-stream@^3.1.0: 1726 | version "3.1.0" 1727 | resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" 1728 | dependencies: 1729 | from2 "^2.1.1" 1730 | p-is-promise "^1.1.0" 1731 | 1732 | invariant@^2.2.2: 1733 | version "2.2.4" 1734 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1735 | dependencies: 1736 | loose-envify "^1.0.0" 1737 | 1738 | invert-kv@^1.0.0: 1739 | version "1.0.0" 1740 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1741 | 1742 | is-accessor-descriptor@^0.1.6: 1743 | version "0.1.6" 1744 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1745 | dependencies: 1746 | kind-of "^3.0.2" 1747 | 1748 | is-accessor-descriptor@^1.0.0: 1749 | version "1.0.0" 1750 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1751 | dependencies: 1752 | kind-of "^6.0.0" 1753 | 1754 | is-arrayish@^0.2.1: 1755 | version "0.2.1" 1756 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1757 | 1758 | is-buffer@^1.1.5: 1759 | version "1.1.6" 1760 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1761 | 1762 | is-builtin-module@^1.0.0: 1763 | version "1.0.0" 1764 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1765 | dependencies: 1766 | builtin-modules "^1.0.0" 1767 | 1768 | is-data-descriptor@^0.1.4: 1769 | version "0.1.4" 1770 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1771 | dependencies: 1772 | kind-of "^3.0.2" 1773 | 1774 | is-data-descriptor@^1.0.0: 1775 | version "1.0.0" 1776 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1777 | dependencies: 1778 | kind-of "^6.0.0" 1779 | 1780 | is-descriptor@^0.1.0: 1781 | version "0.1.6" 1782 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1783 | dependencies: 1784 | is-accessor-descriptor "^0.1.6" 1785 | is-data-descriptor "^0.1.4" 1786 | kind-of "^5.0.0" 1787 | 1788 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1789 | version "1.0.2" 1790 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1791 | dependencies: 1792 | is-accessor-descriptor "^1.0.0" 1793 | is-data-descriptor "^1.0.0" 1794 | kind-of "^6.0.2" 1795 | 1796 | is-dotfile@^1.0.0: 1797 | version "1.0.3" 1798 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1799 | 1800 | is-equal-shallow@^0.1.3: 1801 | version "0.1.3" 1802 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1803 | dependencies: 1804 | is-primitive "^2.0.0" 1805 | 1806 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1807 | version "0.1.1" 1808 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1809 | 1810 | is-extendable@^1.0.1: 1811 | version "1.0.1" 1812 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1813 | dependencies: 1814 | is-plain-object "^2.0.4" 1815 | 1816 | is-extglob@^1.0.0: 1817 | version "1.0.0" 1818 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1819 | 1820 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1821 | version "2.1.1" 1822 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1823 | 1824 | is-finite@^1.0.0: 1825 | version "1.0.2" 1826 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1827 | dependencies: 1828 | number-is-nan "^1.0.0" 1829 | 1830 | is-fullwidth-code-point@^1.0.0: 1831 | version "1.0.0" 1832 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1833 | dependencies: 1834 | number-is-nan "^1.0.0" 1835 | 1836 | is-fullwidth-code-point@^2.0.0: 1837 | version "2.0.0" 1838 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1839 | 1840 | is-glob@^2.0.0, is-glob@^2.0.1: 1841 | version "2.0.1" 1842 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1843 | dependencies: 1844 | is-extglob "^1.0.0" 1845 | 1846 | is-glob@^3.1.0: 1847 | version "3.1.0" 1848 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1849 | dependencies: 1850 | is-extglob "^2.1.0" 1851 | 1852 | is-glob@^4.0.0: 1853 | version "4.0.0" 1854 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" 1855 | dependencies: 1856 | is-extglob "^2.1.1" 1857 | 1858 | is-number@^2.1.0: 1859 | version "2.1.0" 1860 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1861 | dependencies: 1862 | kind-of "^3.0.2" 1863 | 1864 | is-number@^3.0.0: 1865 | version "3.0.0" 1866 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1867 | dependencies: 1868 | kind-of "^3.0.2" 1869 | 1870 | is-number@^4.0.0: 1871 | version "4.0.0" 1872 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 1873 | 1874 | is-object@^1.0.1: 1875 | version "1.0.1" 1876 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 1877 | 1878 | is-observable@^0.2.0: 1879 | version "0.2.0" 1880 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" 1881 | dependencies: 1882 | symbol-observable "^0.2.2" 1883 | 1884 | is-odd@^2.0.0: 1885 | version "2.0.0" 1886 | resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" 1887 | dependencies: 1888 | is-number "^4.0.0" 1889 | 1890 | is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: 1891 | version "1.1.0" 1892 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1893 | 1894 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1895 | version "2.0.4" 1896 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1897 | dependencies: 1898 | isobject "^3.0.1" 1899 | 1900 | is-posix-bracket@^0.1.0: 1901 | version "0.1.1" 1902 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1903 | 1904 | is-primitive@^2.0.0: 1905 | version "2.0.0" 1906 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1907 | 1908 | is-promise@^2.1.0: 1909 | version "2.1.0" 1910 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1911 | 1912 | is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: 1913 | version "1.1.0" 1914 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1915 | 1916 | is-scoped@^1.0.0: 1917 | version "1.0.0" 1918 | resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" 1919 | dependencies: 1920 | scoped-regex "^1.0.0" 1921 | 1922 | is-stream@^1.0.0, is-stream@^1.1.0: 1923 | version "1.1.0" 1924 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1925 | 1926 | is-utf8@^0.2.0: 1927 | version "0.2.1" 1928 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1929 | 1930 | is-windows@^1.0.1, is-windows@^1.0.2: 1931 | version "1.0.2" 1932 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1933 | 1934 | isarray@1.0.0, isarray@~1.0.0: 1935 | version "1.0.0" 1936 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1937 | 1938 | isbinaryfile@^3.0.2: 1939 | version "3.0.2" 1940 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" 1941 | 1942 | isexe@^2.0.0: 1943 | version "2.0.0" 1944 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1945 | 1946 | isobject@^2.0.0: 1947 | version "2.1.0" 1948 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1949 | dependencies: 1950 | isarray "1.0.0" 1951 | 1952 | isobject@^3.0.0, isobject@^3.0.1: 1953 | version "3.0.1" 1954 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1955 | 1956 | istextorbinary@^2.2.1: 1957 | version "2.2.1" 1958 | resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" 1959 | dependencies: 1960 | binaryextensions "2" 1961 | editions "^1.3.3" 1962 | textextensions "2" 1963 | 1964 | isurl@^1.0.0-alpha5: 1965 | version "1.0.0" 1966 | resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" 1967 | dependencies: 1968 | has-to-string-tag-x "^1.2.0" 1969 | is-object "^1.0.1" 1970 | 1971 | js-sha256@^0.9.0: 1972 | version "0.9.0" 1973 | resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" 1974 | 1975 | js-tokens@^3.0.0, js-tokens@^3.0.2: 1976 | version "3.0.2" 1977 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1978 | 1979 | jscodeshift@^0.4.0: 1980 | version "0.4.1" 1981 | resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" 1982 | dependencies: 1983 | async "^1.5.0" 1984 | babel-plugin-transform-flow-strip-types "^6.8.0" 1985 | babel-preset-es2015 "^6.9.0" 1986 | babel-preset-stage-1 "^6.5.0" 1987 | babel-register "^6.9.0" 1988 | babylon "^6.17.3" 1989 | colors "^1.1.2" 1990 | flow-parser "^0.*" 1991 | lodash "^4.13.1" 1992 | micromatch "^2.3.7" 1993 | node-dir "0.1.8" 1994 | nomnom "^1.8.1" 1995 | recast "^0.12.5" 1996 | temp "^0.8.1" 1997 | write-file-atomic "^1.2.0" 1998 | 1999 | jscodeshift@^0.5.0: 2000 | version "0.5.0" 2001 | resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748" 2002 | dependencies: 2003 | babel-plugin-transform-flow-strip-types "^6.8.0" 2004 | babel-preset-es2015 "^6.9.0" 2005 | babel-preset-stage-1 "^6.5.0" 2006 | babel-register "^6.9.0" 2007 | babylon "^7.0.0-beta.30" 2008 | colors "^1.1.2" 2009 | flow-parser "^0.*" 2010 | lodash "^4.13.1" 2011 | micromatch "^2.3.7" 2012 | neo-async "^2.5.0" 2013 | node-dir "0.1.8" 2014 | nomnom "^1.8.1" 2015 | recast "^0.14.1" 2016 | temp "^0.8.1" 2017 | write-file-atomic "^1.2.0" 2018 | 2019 | jsesc@^1.3.0: 2020 | version "1.3.0" 2021 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 2022 | 2023 | jsesc@~0.5.0: 2024 | version "0.5.0" 2025 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 2026 | 2027 | json-buffer@3.0.0: 2028 | version "3.0.0" 2029 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 2030 | 2031 | json-parse-better-errors@^1.0.1: 2032 | version "1.0.2" 2033 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2034 | 2035 | json3@3.3.2: 2036 | version "3.3.2" 2037 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 2038 | 2039 | json5@^0.5.0, json5@^0.5.1: 2040 | version "0.5.1" 2041 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 2042 | 2043 | jsonfile@^2.1.0: 2044 | version "2.4.0" 2045 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 2046 | optionalDependencies: 2047 | graceful-fs "^4.1.6" 2048 | 2049 | keyv@3.0.0: 2050 | version "3.0.0" 2051 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" 2052 | dependencies: 2053 | json-buffer "3.0.0" 2054 | 2055 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 2056 | version "3.2.2" 2057 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2058 | dependencies: 2059 | is-buffer "^1.1.5" 2060 | 2061 | kind-of@^4.0.0: 2062 | version "4.0.0" 2063 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2064 | dependencies: 2065 | is-buffer "^1.1.5" 2066 | 2067 | kind-of@^5.0.0: 2068 | version "5.1.0" 2069 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 2070 | 2071 | kind-of@^6.0.0, kind-of@^6.0.2: 2072 | version "6.0.2" 2073 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 2074 | 2075 | klaw@^1.0.0: 2076 | version "1.3.1" 2077 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 2078 | optionalDependencies: 2079 | graceful-fs "^4.1.9" 2080 | 2081 | lcid@^1.0.0: 2082 | version "1.0.0" 2083 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 2084 | dependencies: 2085 | invert-kv "^1.0.0" 2086 | 2087 | listr-silent-renderer@^1.1.1: 2088 | version "1.1.1" 2089 | resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" 2090 | 2091 | listr-update-renderer@^0.4.0: 2092 | version "0.4.0" 2093 | resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" 2094 | dependencies: 2095 | chalk "^1.1.3" 2096 | cli-truncate "^0.2.1" 2097 | elegant-spinner "^1.0.1" 2098 | figures "^1.7.0" 2099 | indent-string "^3.0.0" 2100 | log-symbols "^1.0.2" 2101 | log-update "^1.0.2" 2102 | strip-ansi "^3.0.1" 2103 | 2104 | listr-verbose-renderer@^0.4.0: 2105 | version "0.4.1" 2106 | resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" 2107 | dependencies: 2108 | chalk "^1.1.3" 2109 | cli-cursor "^1.0.2" 2110 | date-fns "^1.27.2" 2111 | figures "^1.7.0" 2112 | 2113 | listr@^0.13.0: 2114 | version "0.13.0" 2115 | resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" 2116 | dependencies: 2117 | chalk "^1.1.3" 2118 | cli-truncate "^0.2.1" 2119 | figures "^1.7.0" 2120 | indent-string "^2.1.0" 2121 | is-observable "^0.2.0" 2122 | is-promise "^2.1.0" 2123 | is-stream "^1.1.0" 2124 | listr-silent-renderer "^1.1.1" 2125 | listr-update-renderer "^0.4.0" 2126 | listr-verbose-renderer "^0.4.0" 2127 | log-symbols "^1.0.2" 2128 | log-update "^1.0.2" 2129 | ora "^0.2.3" 2130 | p-map "^1.1.1" 2131 | rxjs "^5.4.2" 2132 | stream-to-observable "^0.2.0" 2133 | strip-ansi "^3.0.1" 2134 | 2135 | load-json-file@^1.0.0: 2136 | version "1.1.0" 2137 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 2138 | dependencies: 2139 | graceful-fs "^4.1.2" 2140 | parse-json "^2.2.0" 2141 | pify "^2.0.0" 2142 | pinkie-promise "^2.0.0" 2143 | strip-bom "^2.0.0" 2144 | 2145 | load-json-file@^4.0.0: 2146 | version "4.0.0" 2147 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 2148 | dependencies: 2149 | graceful-fs "^4.1.2" 2150 | parse-json "^4.0.0" 2151 | pify "^3.0.0" 2152 | strip-bom "^3.0.0" 2153 | 2154 | loader-utils@^1.1.0: 2155 | version "1.1.0" 2156 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 2157 | dependencies: 2158 | big.js "^3.1.3" 2159 | emojis-list "^2.0.0" 2160 | json5 "^0.5.0" 2161 | 2162 | locate-path@^2.0.0: 2163 | version "2.0.0" 2164 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 2165 | dependencies: 2166 | p-locate "^2.0.0" 2167 | path-exists "^3.0.0" 2168 | 2169 | lodash._baseassign@^3.0.0: 2170 | version "3.2.0" 2171 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 2172 | dependencies: 2173 | lodash._basecopy "^3.0.0" 2174 | lodash.keys "^3.0.0" 2175 | 2176 | lodash._basecopy@^3.0.0: 2177 | version "3.0.1" 2178 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 2179 | 2180 | lodash._basecreate@^3.0.0: 2181 | version "3.0.3" 2182 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 2183 | 2184 | lodash._getnative@^3.0.0: 2185 | version "3.9.1" 2186 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 2187 | 2188 | lodash._isiterateecall@^3.0.0: 2189 | version "3.0.9" 2190 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 2191 | 2192 | lodash.assign@^4.0.3, lodash.assign@^4.0.6: 2193 | version "4.2.0" 2194 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" 2195 | 2196 | lodash.create@3.1.1: 2197 | version "3.1.1" 2198 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 2199 | dependencies: 2200 | lodash._baseassign "^3.0.0" 2201 | lodash._basecreate "^3.0.0" 2202 | lodash._isiterateecall "^3.0.0" 2203 | 2204 | lodash.isarguments@^3.0.0: 2205 | version "3.1.0" 2206 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 2207 | 2208 | lodash.isarray@^3.0.0: 2209 | version "3.0.4" 2210 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 2211 | 2212 | lodash.keys@^3.0.0: 2213 | version "3.1.2" 2214 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 2215 | dependencies: 2216 | lodash._getnative "^3.0.0" 2217 | lodash.isarguments "^3.0.0" 2218 | lodash.isarray "^3.0.0" 2219 | 2220 | lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: 2221 | version "4.17.10" 2222 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 2223 | 2224 | log-symbols@^1.0.2: 2225 | version "1.0.2" 2226 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" 2227 | dependencies: 2228 | chalk "^1.0.0" 2229 | 2230 | log-symbols@^2.1.0, log-symbols@^2.2.0: 2231 | version "2.2.0" 2232 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 2233 | dependencies: 2234 | chalk "^2.0.1" 2235 | 2236 | log-update@^1.0.2: 2237 | version "1.0.2" 2238 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" 2239 | dependencies: 2240 | ansi-escapes "^1.0.0" 2241 | cli-cursor "^1.0.2" 2242 | 2243 | loose-envify@^1.0.0: 2244 | version "1.3.1" 2245 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 2246 | dependencies: 2247 | js-tokens "^3.0.0" 2248 | 2249 | lowercase-keys@1.0.0: 2250 | version "1.0.0" 2251 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 2252 | 2253 | lowercase-keys@^1.0.0: 2254 | version "1.0.1" 2255 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 2256 | 2257 | lru-cache@^4.0.1: 2258 | version "4.1.3" 2259 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 2260 | dependencies: 2261 | pseudomap "^1.0.2" 2262 | yallist "^2.1.2" 2263 | 2264 | make-dir@^1.1.0: 2265 | version "1.3.0" 2266 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 2267 | dependencies: 2268 | pify "^3.0.0" 2269 | 2270 | map-cache@^0.2.2: 2271 | version "0.2.2" 2272 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2273 | 2274 | map-visit@^1.0.0: 2275 | version "1.0.0" 2276 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2277 | dependencies: 2278 | object-visit "^1.0.0" 2279 | 2280 | math-random@^1.0.1: 2281 | version "1.0.1" 2282 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 2283 | 2284 | mem-fs-editor@^4.0.0: 2285 | version "4.0.2" 2286 | resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.2.tgz#55a79b1e824da631254c4c95ba6366602c77af90" 2287 | dependencies: 2288 | commondir "^1.0.1" 2289 | deep-extend "^0.5.1" 2290 | ejs "^2.5.9" 2291 | glob "^7.0.3" 2292 | globby "^8.0.0" 2293 | isbinaryfile "^3.0.2" 2294 | mkdirp "^0.5.0" 2295 | multimatch "^2.0.0" 2296 | rimraf "^2.2.8" 2297 | through2 "^2.0.0" 2298 | vinyl "^2.0.1" 2299 | 2300 | mem-fs@^1.1.0: 2301 | version "1.1.3" 2302 | resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" 2303 | dependencies: 2304 | through2 "^2.0.0" 2305 | vinyl "^1.1.0" 2306 | vinyl-file "^2.0.0" 2307 | 2308 | mem@^1.1.0: 2309 | version "1.1.0" 2310 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 2311 | dependencies: 2312 | mimic-fn "^1.0.0" 2313 | 2314 | memory-fs@^0.4.0: 2315 | version "0.4.1" 2316 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 2317 | dependencies: 2318 | errno "^0.1.3" 2319 | readable-stream "^2.0.1" 2320 | 2321 | memorystream@^0.3.1: 2322 | version "0.3.1" 2323 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" 2324 | 2325 | merge2@^1.2.1: 2326 | version "1.2.2" 2327 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" 2328 | 2329 | micromatch@^2.3.7: 2330 | version "2.3.11" 2331 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2332 | dependencies: 2333 | arr-diff "^2.0.0" 2334 | array-unique "^0.2.1" 2335 | braces "^1.8.2" 2336 | expand-brackets "^0.1.4" 2337 | extglob "^0.3.1" 2338 | filename-regex "^2.0.0" 2339 | is-extglob "^1.0.0" 2340 | is-glob "^2.0.1" 2341 | kind-of "^3.0.2" 2342 | normalize-path "^2.0.1" 2343 | object.omit "^2.0.0" 2344 | parse-glob "^3.0.4" 2345 | regex-cache "^0.4.2" 2346 | 2347 | micromatch@^3.1.10: 2348 | version "3.1.10" 2349 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2350 | dependencies: 2351 | arr-diff "^4.0.0" 2352 | array-unique "^0.3.2" 2353 | braces "^2.3.1" 2354 | define-property "^2.0.2" 2355 | extend-shallow "^3.0.2" 2356 | extglob "^2.0.4" 2357 | fragment-cache "^0.2.1" 2358 | kind-of "^6.0.2" 2359 | nanomatch "^1.2.9" 2360 | object.pick "^1.3.0" 2361 | regex-not "^1.0.0" 2362 | snapdragon "^0.8.1" 2363 | to-regex "^3.0.2" 2364 | 2365 | mimic-fn@^1.0.0: 2366 | version "1.2.0" 2367 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 2368 | 2369 | mimic-response@^1.0.0: 2370 | version "1.0.0" 2371 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" 2372 | 2373 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: 2374 | version "3.0.4" 2375 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2376 | dependencies: 2377 | brace-expansion "^1.1.7" 2378 | 2379 | minimist@0.0.8: 2380 | version "0.0.8" 2381 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2382 | 2383 | minimist@^0.1.0: 2384 | version "0.1.0" 2385 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" 2386 | 2387 | minimist@^1.2.0: 2388 | version "1.2.0" 2389 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2390 | 2391 | mixin-deep@^1.2.0: 2392 | version "1.3.1" 2393 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 2394 | dependencies: 2395 | for-in "^1.0.2" 2396 | is-extendable "^1.0.1" 2397 | 2398 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 2399 | version "0.5.1" 2400 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2401 | dependencies: 2402 | minimist "0.0.8" 2403 | 2404 | mocha@^3.4.2: 2405 | version "3.5.3" 2406 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" 2407 | dependencies: 2408 | browser-stdout "1.3.0" 2409 | commander "2.9.0" 2410 | debug "2.6.8" 2411 | diff "3.2.0" 2412 | escape-string-regexp "1.0.5" 2413 | glob "7.1.1" 2414 | growl "1.9.2" 2415 | he "1.1.1" 2416 | json3 "3.3.2" 2417 | lodash.create "3.1.1" 2418 | mkdirp "0.5.1" 2419 | supports-color "3.1.2" 2420 | 2421 | ms@2.0.0: 2422 | version "2.0.0" 2423 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2424 | 2425 | multimatch@^2.0.0: 2426 | version "2.1.0" 2427 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" 2428 | dependencies: 2429 | array-differ "^1.0.0" 2430 | array-union "^1.0.1" 2431 | arrify "^1.0.0" 2432 | minimatch "^3.0.0" 2433 | 2434 | mute-stream@0.0.7: 2435 | version "0.0.7" 2436 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 2437 | 2438 | nanomatch@^1.2.9: 2439 | version "1.2.9" 2440 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" 2441 | dependencies: 2442 | arr-diff "^4.0.0" 2443 | array-unique "^0.3.2" 2444 | define-property "^2.0.2" 2445 | extend-shallow "^3.0.2" 2446 | fragment-cache "^0.2.1" 2447 | is-odd "^2.0.0" 2448 | is-windows "^1.0.2" 2449 | kind-of "^6.0.2" 2450 | object.pick "^1.3.0" 2451 | regex-not "^1.0.0" 2452 | snapdragon "^0.8.1" 2453 | to-regex "^3.0.1" 2454 | 2455 | neo-async@^2.5.0: 2456 | version "2.5.1" 2457 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" 2458 | 2459 | nice-try@^1.0.4: 2460 | version "1.0.4" 2461 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" 2462 | 2463 | node-dir@0.1.8: 2464 | version "0.1.8" 2465 | resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" 2466 | 2467 | nomnom@^1.8.1: 2468 | version "1.8.1" 2469 | resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" 2470 | dependencies: 2471 | chalk "~0.4.0" 2472 | underscore "~1.6.0" 2473 | 2474 | normalize-package-data@^2.3.2: 2475 | version "2.4.0" 2476 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 2477 | dependencies: 2478 | hosted-git-info "^2.1.4" 2479 | is-builtin-module "^1.0.0" 2480 | semver "2 || 3 || 4 || 5" 2481 | validate-npm-package-license "^3.0.1" 2482 | 2483 | normalize-path@^2.0.1: 2484 | version "2.1.1" 2485 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2486 | dependencies: 2487 | remove-trailing-separator "^1.0.1" 2488 | 2489 | normalize-url@2.0.1: 2490 | version "2.0.1" 2491 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" 2492 | dependencies: 2493 | prepend-http "^2.0.0" 2494 | query-string "^5.0.1" 2495 | sort-keys "^2.0.0" 2496 | 2497 | npm-run-path@^2.0.0: 2498 | version "2.0.2" 2499 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2500 | dependencies: 2501 | path-key "^2.0.0" 2502 | 2503 | number-is-nan@^1.0.0: 2504 | version "1.0.1" 2505 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2506 | 2507 | object-assign@^4.0.1, object-assign@^4.1.0: 2508 | version "4.1.1" 2509 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2510 | 2511 | object-copy@^0.1.0: 2512 | version "0.1.0" 2513 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2514 | dependencies: 2515 | copy-descriptor "^0.1.0" 2516 | define-property "^0.2.5" 2517 | kind-of "^3.0.3" 2518 | 2519 | object-visit@^1.0.0: 2520 | version "1.0.1" 2521 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 2522 | dependencies: 2523 | isobject "^3.0.0" 2524 | 2525 | object.omit@^2.0.0: 2526 | version "2.0.1" 2527 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2528 | dependencies: 2529 | for-own "^0.1.4" 2530 | is-extendable "^0.1.1" 2531 | 2532 | object.pick@^1.3.0: 2533 | version "1.3.0" 2534 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 2535 | dependencies: 2536 | isobject "^3.0.1" 2537 | 2538 | once@^1.3.0: 2539 | version "1.4.0" 2540 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2541 | dependencies: 2542 | wrappy "1" 2543 | 2544 | onetime@^1.0.0: 2545 | version "1.1.0" 2546 | resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 2547 | 2548 | onetime@^2.0.0: 2549 | version "2.0.1" 2550 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 2551 | dependencies: 2552 | mimic-fn "^1.0.0" 2553 | 2554 | openzeppelin-solidity@1.9.0: 2555 | version "1.9.0" 2556 | resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-1.9.0.tgz#929c2e8eab5d1935a048390a77645b36dfc5cfad" 2557 | 2558 | ora@^0.2.3: 2559 | version "0.2.3" 2560 | resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" 2561 | dependencies: 2562 | chalk "^1.1.1" 2563 | cli-cursor "^1.0.2" 2564 | cli-spinners "^0.1.2" 2565 | object-assign "^4.0.1" 2566 | 2567 | original-require@^1.0.1: 2568 | version "1.0.1" 2569 | resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" 2570 | 2571 | os-homedir@^1.0.0: 2572 | version "1.0.2" 2573 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2574 | 2575 | os-locale@^1.4.0: 2576 | version "1.4.0" 2577 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 2578 | dependencies: 2579 | lcid "^1.0.0" 2580 | 2581 | os-locale@^2.0.0: 2582 | version "2.1.0" 2583 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 2584 | dependencies: 2585 | execa "^0.7.0" 2586 | lcid "^1.0.0" 2587 | mem "^1.1.0" 2588 | 2589 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: 2590 | version "1.0.2" 2591 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2592 | 2593 | p-cancelable@^0.3.0: 2594 | version "0.3.0" 2595 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" 2596 | 2597 | p-cancelable@^0.4.0: 2598 | version "0.4.1" 2599 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" 2600 | 2601 | p-each-series@^1.0.0: 2602 | version "1.0.0" 2603 | resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" 2604 | dependencies: 2605 | p-reduce "^1.0.0" 2606 | 2607 | p-finally@^1.0.0: 2608 | version "1.0.0" 2609 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2610 | 2611 | p-is-promise@^1.1.0: 2612 | version "1.1.0" 2613 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" 2614 | 2615 | p-lazy@^1.0.0: 2616 | version "1.0.0" 2617 | resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" 2618 | 2619 | p-limit@^1.1.0: 2620 | version "1.2.0" 2621 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" 2622 | dependencies: 2623 | p-try "^1.0.0" 2624 | 2625 | p-locate@^2.0.0: 2626 | version "2.0.0" 2627 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2628 | dependencies: 2629 | p-limit "^1.1.0" 2630 | 2631 | p-map@^1.1.1: 2632 | version "1.2.0" 2633 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" 2634 | 2635 | p-reduce@^1.0.0: 2636 | version "1.0.0" 2637 | resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" 2638 | 2639 | p-timeout@^1.1.1: 2640 | version "1.2.1" 2641 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" 2642 | dependencies: 2643 | p-finally "^1.0.0" 2644 | 2645 | p-timeout@^2.0.1: 2646 | version "2.0.1" 2647 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" 2648 | dependencies: 2649 | p-finally "^1.0.0" 2650 | 2651 | p-try@^1.0.0: 2652 | version "1.0.0" 2653 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 2654 | 2655 | parse-glob@^3.0.4: 2656 | version "3.0.4" 2657 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2658 | dependencies: 2659 | glob-base "^0.3.0" 2660 | is-dotfile "^1.0.0" 2661 | is-extglob "^1.0.0" 2662 | is-glob "^2.0.0" 2663 | 2664 | parse-json@^2.2.0: 2665 | version "2.2.0" 2666 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2667 | dependencies: 2668 | error-ex "^1.2.0" 2669 | 2670 | parse-json@^4.0.0: 2671 | version "4.0.0" 2672 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 2673 | dependencies: 2674 | error-ex "^1.3.1" 2675 | json-parse-better-errors "^1.0.1" 2676 | 2677 | parse-passwd@^1.0.0: 2678 | version "1.0.0" 2679 | resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" 2680 | 2681 | pascalcase@^0.1.1: 2682 | version "0.1.1" 2683 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2684 | 2685 | path-dirname@^1.0.0: 2686 | version "1.0.2" 2687 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 2688 | 2689 | path-exists@^2.0.0: 2690 | version "2.1.0" 2691 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2692 | dependencies: 2693 | pinkie-promise "^2.0.0" 2694 | 2695 | path-exists@^3.0.0: 2696 | version "3.0.0" 2697 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2698 | 2699 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 2700 | version "1.0.1" 2701 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2702 | 2703 | path-key@^2.0.0, path-key@^2.0.1: 2704 | version "2.0.1" 2705 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2706 | 2707 | path-parse@^1.0.5: 2708 | version "1.0.5" 2709 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2710 | 2711 | path-type@^1.0.0: 2712 | version "1.1.0" 2713 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2714 | dependencies: 2715 | graceful-fs "^4.1.2" 2716 | pify "^2.0.0" 2717 | pinkie-promise "^2.0.0" 2718 | 2719 | path-type@^3.0.0: 2720 | version "3.0.0" 2721 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 2722 | dependencies: 2723 | pify "^3.0.0" 2724 | 2725 | pify@^2.0.0, pify@^2.3.0: 2726 | version "2.3.0" 2727 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2728 | 2729 | pify@^3.0.0: 2730 | version "3.0.0" 2731 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2732 | 2733 | pinkie-promise@^2.0.0: 2734 | version "2.0.1" 2735 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2736 | dependencies: 2737 | pinkie "^2.0.0" 2738 | 2739 | pinkie@^2.0.0: 2740 | version "2.0.4" 2741 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2742 | 2743 | pkg-dir@^2.0.0: 2744 | version "2.0.0" 2745 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 2746 | dependencies: 2747 | find-up "^2.1.0" 2748 | 2749 | posix-character-classes@^0.1.0: 2750 | version "0.1.1" 2751 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2752 | 2753 | prepend-http@^1.0.1: 2754 | version "1.0.4" 2755 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 2756 | 2757 | prepend-http@^2.0.0: 2758 | version "2.0.0" 2759 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 2760 | 2761 | preserve@^0.2.0: 2762 | version "0.2.0" 2763 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2764 | 2765 | prettier@^1.5.3: 2766 | version "1.12.1" 2767 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" 2768 | 2769 | pretty-bytes@^4.0.2: 2770 | version "4.0.2" 2771 | resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" 2772 | 2773 | private@^0.1.6, private@^0.1.8, private@~0.1.5: 2774 | version "0.1.8" 2775 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 2776 | 2777 | process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: 2778 | version "2.0.0" 2779 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2780 | 2781 | prr@~1.0.1: 2782 | version "1.0.1" 2783 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 2784 | 2785 | pseudomap@^1.0.2: 2786 | version "1.0.2" 2787 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2788 | 2789 | query-string@^5.0.1: 2790 | version "5.1.1" 2791 | resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" 2792 | dependencies: 2793 | decode-uri-component "^0.2.0" 2794 | object-assign "^4.1.0" 2795 | strict-uri-encode "^1.0.0" 2796 | 2797 | randomatic@^3.0.0: 2798 | version "3.0.0" 2799 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" 2800 | dependencies: 2801 | is-number "^4.0.0" 2802 | kind-of "^6.0.0" 2803 | math-random "^1.0.1" 2804 | 2805 | read-chunk@^2.1.0: 2806 | version "2.1.0" 2807 | resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" 2808 | dependencies: 2809 | pify "^3.0.0" 2810 | safe-buffer "^5.1.1" 2811 | 2812 | read-pkg-up@^1.0.1: 2813 | version "1.0.1" 2814 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2815 | dependencies: 2816 | find-up "^1.0.0" 2817 | read-pkg "^1.0.0" 2818 | 2819 | read-pkg-up@^3.0.0: 2820 | version "3.0.0" 2821 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" 2822 | dependencies: 2823 | find-up "^2.0.0" 2824 | read-pkg "^3.0.0" 2825 | 2826 | read-pkg@^1.0.0: 2827 | version "1.1.0" 2828 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2829 | dependencies: 2830 | load-json-file "^1.0.0" 2831 | normalize-package-data "^2.3.2" 2832 | path-type "^1.0.0" 2833 | 2834 | read-pkg@^3.0.0: 2835 | version "3.0.0" 2836 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 2837 | dependencies: 2838 | load-json-file "^4.0.0" 2839 | normalize-package-data "^2.3.2" 2840 | path-type "^3.0.0" 2841 | 2842 | readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.3.5: 2843 | version "2.3.6" 2844 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2845 | dependencies: 2846 | core-util-is "~1.0.0" 2847 | inherits "~2.0.3" 2848 | isarray "~1.0.0" 2849 | process-nextick-args "~2.0.0" 2850 | safe-buffer "~5.1.1" 2851 | string_decoder "~1.1.1" 2852 | util-deprecate "~1.0.1" 2853 | 2854 | recast@^0.12.5: 2855 | version "0.12.9" 2856 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" 2857 | dependencies: 2858 | ast-types "0.10.1" 2859 | core-js "^2.4.1" 2860 | esprima "~4.0.0" 2861 | private "~0.1.5" 2862 | source-map "~0.6.1" 2863 | 2864 | recast@^0.14.1: 2865 | version "0.14.7" 2866 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" 2867 | dependencies: 2868 | ast-types "0.11.3" 2869 | esprima "~4.0.0" 2870 | private "~0.1.5" 2871 | source-map "~0.6.1" 2872 | 2873 | rechoir@^0.6.2: 2874 | version "0.6.2" 2875 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 2876 | dependencies: 2877 | resolve "^1.1.6" 2878 | 2879 | regenerate@^1.2.1: 2880 | version "1.4.0" 2881 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 2882 | 2883 | regenerator-runtime@^0.10.5: 2884 | version "0.10.5" 2885 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" 2886 | 2887 | regenerator-runtime@^0.11.0: 2888 | version "0.11.1" 2889 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 2890 | 2891 | regenerator-transform@^0.10.0: 2892 | version "0.10.1" 2893 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" 2894 | dependencies: 2895 | babel-runtime "^6.18.0" 2896 | babel-types "^6.19.0" 2897 | private "^0.1.6" 2898 | 2899 | regex-cache@^0.4.2: 2900 | version "0.4.4" 2901 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2902 | dependencies: 2903 | is-equal-shallow "^0.1.3" 2904 | 2905 | regex-not@^1.0.0, regex-not@^1.0.2: 2906 | version "1.0.2" 2907 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2908 | dependencies: 2909 | extend-shallow "^3.0.2" 2910 | safe-regex "^1.1.0" 2911 | 2912 | regexpu-core@^2.0.0: 2913 | version "2.0.0" 2914 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 2915 | dependencies: 2916 | regenerate "^1.2.1" 2917 | regjsgen "^0.2.0" 2918 | regjsparser "^0.1.4" 2919 | 2920 | regjsgen@^0.2.0: 2921 | version "0.2.0" 2922 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 2923 | 2924 | regjsparser@^0.1.4: 2925 | version "0.1.5" 2926 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 2927 | dependencies: 2928 | jsesc "~0.5.0" 2929 | 2930 | remove-trailing-separator@^1.0.1: 2931 | version "1.1.0" 2932 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2933 | 2934 | repeat-element@^1.1.2: 2935 | version "1.1.2" 2936 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2937 | 2938 | repeat-string@^1.5.2, repeat-string@^1.6.1: 2939 | version "1.6.1" 2940 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2941 | 2942 | repeating@^2.0.0: 2943 | version "2.0.1" 2944 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2945 | dependencies: 2946 | is-finite "^1.0.0" 2947 | 2948 | replace-ext@0.0.1: 2949 | version "0.0.1" 2950 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" 2951 | 2952 | replace-ext@^1.0.0: 2953 | version "1.0.0" 2954 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" 2955 | 2956 | require-directory@^2.1.1: 2957 | version "2.1.1" 2958 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2959 | 2960 | require-from-string@^1.1.0: 2961 | version "1.2.1" 2962 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" 2963 | 2964 | require-main-filename@^1.0.1: 2965 | version "1.0.1" 2966 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2967 | 2968 | resolve-cwd@^2.0.0: 2969 | version "2.0.0" 2970 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" 2971 | dependencies: 2972 | resolve-from "^3.0.0" 2973 | 2974 | resolve-dir@^1.0.0: 2975 | version "1.0.1" 2976 | resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" 2977 | dependencies: 2978 | expand-tilde "^2.0.0" 2979 | global-modules "^1.0.0" 2980 | 2981 | resolve-from@^3.0.0: 2982 | version "3.0.0" 2983 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 2984 | 2985 | resolve-url@^0.2.1: 2986 | version "0.2.1" 2987 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2988 | 2989 | resolve@^1.1.6: 2990 | version "1.7.1" 2991 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" 2992 | dependencies: 2993 | path-parse "^1.0.5" 2994 | 2995 | responselike@1.0.2: 2996 | version "1.0.2" 2997 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 2998 | dependencies: 2999 | lowercase-keys "^1.0.0" 3000 | 3001 | restore-cursor@^1.0.1: 3002 | version "1.0.1" 3003 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 3004 | dependencies: 3005 | exit-hook "^1.0.0" 3006 | onetime "^1.0.0" 3007 | 3008 | restore-cursor@^2.0.0: 3009 | version "2.0.0" 3010 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 3011 | dependencies: 3012 | onetime "^2.0.0" 3013 | signal-exit "^3.0.2" 3014 | 3015 | ret@~0.1.10: 3016 | version "0.1.15" 3017 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 3018 | 3019 | rimraf@^2.2.8, rimraf@^2.6.2: 3020 | version "2.6.2" 3021 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 3022 | dependencies: 3023 | glob "^7.0.5" 3024 | 3025 | rimraf@~2.2.6: 3026 | version "2.2.8" 3027 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" 3028 | 3029 | run-async@^2.0.0, run-async@^2.2.0: 3030 | version "2.3.0" 3031 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 3032 | dependencies: 3033 | is-promise "^2.1.0" 3034 | 3035 | rx-lite-aggregates@^4.0.8: 3036 | version "4.0.8" 3037 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 3038 | dependencies: 3039 | rx-lite "*" 3040 | 3041 | rx-lite@*, rx-lite@^4.0.8: 3042 | version "4.0.8" 3043 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 3044 | 3045 | rxjs@^5.4.2, rxjs@^5.5.2: 3046 | version "5.5.10" 3047 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.10.tgz#fde02d7a614f6c8683d0d1957827f492e09db045" 3048 | dependencies: 3049 | symbol-observable "1.0.1" 3050 | 3051 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3052 | version "5.1.2" 3053 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3054 | 3055 | safe-regex@^1.1.0: 3056 | version "1.1.0" 3057 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 3058 | dependencies: 3059 | ret "~0.1.10" 3060 | 3061 | "safer-buffer@>= 2.1.2 < 3": 3062 | version "2.1.2" 3063 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3064 | 3065 | scoped-regex@^1.0.0: 3066 | version "1.0.0" 3067 | resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" 3068 | 3069 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: 3070 | version "5.5.0" 3071 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 3072 | 3073 | set-blocking@^2.0.0: 3074 | version "2.0.0" 3075 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3076 | 3077 | set-value@^0.4.3: 3078 | version "0.4.3" 3079 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 3080 | dependencies: 3081 | extend-shallow "^2.0.1" 3082 | is-extendable "^0.1.1" 3083 | is-plain-object "^2.0.1" 3084 | to-object-path "^0.3.0" 3085 | 3086 | set-value@^2.0.0: 3087 | version "2.0.0" 3088 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 3089 | dependencies: 3090 | extend-shallow "^2.0.1" 3091 | is-extendable "^0.1.1" 3092 | is-plain-object "^2.0.3" 3093 | split-string "^3.0.1" 3094 | 3095 | shebang-command@^1.2.0: 3096 | version "1.2.0" 3097 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 3098 | dependencies: 3099 | shebang-regex "^1.0.0" 3100 | 3101 | shebang-regex@^1.0.0: 3102 | version "1.0.0" 3103 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 3104 | 3105 | shelljs@^0.8.0: 3106 | version "0.8.2" 3107 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" 3108 | dependencies: 3109 | glob "^7.0.0" 3110 | interpret "^1.0.0" 3111 | rechoir "^0.6.2" 3112 | 3113 | signal-exit@^3.0.0, signal-exit@^3.0.2: 3114 | version "3.0.2" 3115 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 3116 | 3117 | slash@^1.0.0: 3118 | version "1.0.0" 3119 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 3120 | 3121 | slice-ansi@0.0.4: 3122 | version "0.0.4" 3123 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 3124 | 3125 | slide@^1.1.5: 3126 | version "1.1.6" 3127 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 3128 | 3129 | snapdragon-node@^2.0.1: 3130 | version "2.1.1" 3131 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 3132 | dependencies: 3133 | define-property "^1.0.0" 3134 | isobject "^3.0.0" 3135 | snapdragon-util "^3.0.1" 3136 | 3137 | snapdragon-util@^3.0.1: 3138 | version "3.0.1" 3139 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 3140 | dependencies: 3141 | kind-of "^3.2.0" 3142 | 3143 | snapdragon@^0.8.1: 3144 | version "0.8.2" 3145 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 3146 | dependencies: 3147 | base "^0.11.1" 3148 | debug "^2.2.0" 3149 | define-property "^0.2.5" 3150 | extend-shallow "^2.0.1" 3151 | map-cache "^0.2.2" 3152 | source-map "^0.5.6" 3153 | source-map-resolve "^0.5.0" 3154 | use "^3.1.0" 3155 | 3156 | solc@0.4.23: 3157 | version "0.4.23" 3158 | resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.23.tgz#54a0ff4015827b32fddb62c0a418b5247310a58e" 3159 | dependencies: 3160 | fs-extra "^0.30.0" 3161 | memorystream "^0.3.1" 3162 | require-from-string "^1.1.0" 3163 | semver "^5.3.0" 3164 | yargs "^4.7.1" 3165 | 3166 | sort-keys@^2.0.0: 3167 | version "2.0.0" 3168 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" 3169 | dependencies: 3170 | is-plain-obj "^1.0.0" 3171 | 3172 | source-map-resolve@^0.5.0: 3173 | version "0.5.2" 3174 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 3175 | dependencies: 3176 | atob "^2.1.1" 3177 | decode-uri-component "^0.2.0" 3178 | resolve-url "^0.2.1" 3179 | source-map-url "^0.4.0" 3180 | urix "^0.1.0" 3181 | 3182 | source-map-support@^0.4.15: 3183 | version "0.4.18" 3184 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 3185 | dependencies: 3186 | source-map "^0.5.6" 3187 | 3188 | source-map-support@^0.5.3: 3189 | version "0.5.5" 3190 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" 3191 | dependencies: 3192 | buffer-from "^1.0.0" 3193 | source-map "^0.6.0" 3194 | 3195 | source-map-url@^0.4.0: 3196 | version "0.4.0" 3197 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 3198 | 3199 | source-map@^0.5.6, source-map@^0.5.7: 3200 | version "0.5.7" 3201 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3202 | 3203 | source-map@^0.6.0, source-map@~0.6.1: 3204 | version "0.6.1" 3205 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 3206 | 3207 | spdx-correct@^3.0.0: 3208 | version "3.0.0" 3209 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" 3210 | dependencies: 3211 | spdx-expression-parse "^3.0.0" 3212 | spdx-license-ids "^3.0.0" 3213 | 3214 | spdx-exceptions@^2.1.0: 3215 | version "2.1.0" 3216 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" 3217 | 3218 | spdx-expression-parse@^3.0.0: 3219 | version "3.0.0" 3220 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 3221 | dependencies: 3222 | spdx-exceptions "^2.1.0" 3223 | spdx-license-ids "^3.0.0" 3224 | 3225 | spdx-license-ids@^3.0.0: 3226 | version "3.0.0" 3227 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" 3228 | 3229 | split-string@^3.0.1, split-string@^3.0.2: 3230 | version "3.1.0" 3231 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 3232 | dependencies: 3233 | extend-shallow "^3.0.0" 3234 | 3235 | static-extend@^0.1.1: 3236 | version "0.1.2" 3237 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 3238 | dependencies: 3239 | define-property "^0.2.5" 3240 | object-copy "^0.1.0" 3241 | 3242 | stream-to-observable@^0.2.0: 3243 | version "0.2.0" 3244 | resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" 3245 | dependencies: 3246 | any-observable "^0.2.0" 3247 | 3248 | strict-uri-encode@^1.0.0: 3249 | version "1.1.0" 3250 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" 3251 | 3252 | string-template@~0.2.1: 3253 | version "0.2.1" 3254 | resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" 3255 | 3256 | string-width@^1.0.1: 3257 | version "1.0.2" 3258 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 3259 | dependencies: 3260 | code-point-at "^1.0.0" 3261 | is-fullwidth-code-point "^1.0.0" 3262 | strip-ansi "^3.0.0" 3263 | 3264 | string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: 3265 | version "2.1.1" 3266 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 3267 | dependencies: 3268 | is-fullwidth-code-point "^2.0.0" 3269 | strip-ansi "^4.0.0" 3270 | 3271 | string_decoder@~1.1.1: 3272 | version "1.1.1" 3273 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 3274 | dependencies: 3275 | safe-buffer "~5.1.0" 3276 | 3277 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3278 | version "3.0.1" 3279 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 3280 | dependencies: 3281 | ansi-regex "^2.0.0" 3282 | 3283 | strip-ansi@^4.0.0: 3284 | version "4.0.0" 3285 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 3286 | dependencies: 3287 | ansi-regex "^3.0.0" 3288 | 3289 | strip-ansi@~0.1.0: 3290 | version "0.1.1" 3291 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" 3292 | 3293 | strip-bom-stream@^2.0.0: 3294 | version "2.0.0" 3295 | resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" 3296 | dependencies: 3297 | first-chunk-stream "^2.0.0" 3298 | strip-bom "^2.0.0" 3299 | 3300 | strip-bom@^2.0.0: 3301 | version "2.0.0" 3302 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 3303 | dependencies: 3304 | is-utf8 "^0.2.0" 3305 | 3306 | strip-bom@^3.0.0: 3307 | version "3.0.0" 3308 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3309 | 3310 | strip-eof@^1.0.0: 3311 | version "1.0.0" 3312 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3313 | 3314 | supports-color@3.1.2: 3315 | version "3.1.2" 3316 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 3317 | dependencies: 3318 | has-flag "^1.0.0" 3319 | 3320 | supports-color@^2.0.0: 3321 | version "2.0.0" 3322 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3323 | 3324 | supports-color@^5.3.0: 3325 | version "5.4.0" 3326 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 3327 | dependencies: 3328 | has-flag "^3.0.0" 3329 | 3330 | symbol-observable@1.0.1: 3331 | version "1.0.1" 3332 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" 3333 | 3334 | symbol-observable@^0.2.2: 3335 | version "0.2.4" 3336 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" 3337 | 3338 | tapable@^1.0.0: 3339 | version "1.0.0" 3340 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" 3341 | 3342 | temp@^0.8.1: 3343 | version "0.8.3" 3344 | resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" 3345 | dependencies: 3346 | os-tmpdir "^1.0.0" 3347 | rimraf "~2.2.6" 3348 | 3349 | text-table@^0.2.0: 3350 | version "0.2.0" 3351 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 3352 | 3353 | textextensions@2: 3354 | version "2.2.0" 3355 | resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" 3356 | 3357 | through2@^2.0.0: 3358 | version "2.0.3" 3359 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 3360 | dependencies: 3361 | readable-stream "^2.1.5" 3362 | xtend "~4.0.1" 3363 | 3364 | through@^2.3.6: 3365 | version "2.3.8" 3366 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 3367 | 3368 | timed-out@^4.0.0, timed-out@^4.0.1: 3369 | version "4.0.1" 3370 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 3371 | 3372 | tmp@^0.0.33: 3373 | version "0.0.33" 3374 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 3375 | dependencies: 3376 | os-tmpdir "~1.0.2" 3377 | 3378 | to-fast-properties@^1.0.3: 3379 | version "1.0.3" 3380 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 3381 | 3382 | to-object-path@^0.3.0: 3383 | version "0.3.0" 3384 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3385 | dependencies: 3386 | kind-of "^3.0.2" 3387 | 3388 | to-regex-range@^2.1.0: 3389 | version "2.1.1" 3390 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3391 | dependencies: 3392 | is-number "^3.0.0" 3393 | repeat-string "^1.6.1" 3394 | 3395 | to-regex@^3.0.1, to-regex@^3.0.2: 3396 | version "3.0.2" 3397 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3398 | dependencies: 3399 | define-property "^2.0.2" 3400 | extend-shallow "^3.0.2" 3401 | regex-not "^1.0.2" 3402 | safe-regex "^1.1.0" 3403 | 3404 | trim-right@^1.0.1: 3405 | version "1.0.1" 3406 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3407 | 3408 | truffle@^4.1.7: 3409 | version "4.1.8" 3410 | resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.8.tgz#b0b9175e0270145999567a3f0a2337c914a23a9c" 3411 | dependencies: 3412 | mocha "^3.4.2" 3413 | original-require "^1.0.1" 3414 | solc "0.4.23" 3415 | 3416 | underscore@~1.6.0: 3417 | version "1.6.0" 3418 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" 3419 | 3420 | union-value@^1.0.0: 3421 | version "1.0.0" 3422 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 3423 | dependencies: 3424 | arr-union "^3.1.0" 3425 | get-value "^2.0.6" 3426 | is-extendable "^0.1.1" 3427 | set-value "^0.4.3" 3428 | 3429 | unset-value@^1.0.0: 3430 | version "1.0.0" 3431 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 3432 | dependencies: 3433 | has-value "^0.3.1" 3434 | isobject "^3.0.0" 3435 | 3436 | untildify@^3.0.2: 3437 | version "3.0.2" 3438 | resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" 3439 | 3440 | urix@^0.1.0: 3441 | version "0.1.0" 3442 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 3443 | 3444 | url-parse-lax@^1.0.0: 3445 | version "1.0.0" 3446 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 3447 | dependencies: 3448 | prepend-http "^1.0.1" 3449 | 3450 | url-parse-lax@^3.0.0: 3451 | version "3.0.0" 3452 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 3453 | dependencies: 3454 | prepend-http "^2.0.0" 3455 | 3456 | url-to-options@^1.0.1: 3457 | version "1.0.1" 3458 | resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" 3459 | 3460 | use@^3.1.0: 3461 | version "3.1.0" 3462 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" 3463 | dependencies: 3464 | kind-of "^6.0.2" 3465 | 3466 | util-deprecate@~1.0.1: 3467 | version "1.0.2" 3468 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3469 | 3470 | v8-compile-cache@^1.1.2: 3471 | version "1.1.2" 3472 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" 3473 | 3474 | validate-npm-package-license@^3.0.1: 3475 | version "3.0.3" 3476 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" 3477 | dependencies: 3478 | spdx-correct "^3.0.0" 3479 | spdx-expression-parse "^3.0.0" 3480 | 3481 | vinyl-file@^2.0.0: 3482 | version "2.0.0" 3483 | resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" 3484 | dependencies: 3485 | graceful-fs "^4.1.2" 3486 | pify "^2.3.0" 3487 | pinkie-promise "^2.0.0" 3488 | strip-bom "^2.0.0" 3489 | strip-bom-stream "^2.0.0" 3490 | vinyl "^1.1.0" 3491 | 3492 | vinyl@^1.1.0: 3493 | version "1.2.0" 3494 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" 3495 | dependencies: 3496 | clone "^1.0.0" 3497 | clone-stats "^0.0.1" 3498 | replace-ext "0.0.1" 3499 | 3500 | vinyl@^2.0.1: 3501 | version "2.1.0" 3502 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" 3503 | dependencies: 3504 | clone "^2.1.1" 3505 | clone-buffer "^1.0.0" 3506 | clone-stats "^1.0.0" 3507 | cloneable-readable "^1.0.0" 3508 | remove-trailing-separator "^1.0.1" 3509 | replace-ext "^1.0.0" 3510 | 3511 | webpack-addons@^1.1.5: 3512 | version "1.1.5" 3513 | resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" 3514 | dependencies: 3515 | jscodeshift "^0.4.0" 3516 | 3517 | webpack-cli@^2.0.9: 3518 | version "2.1.3" 3519 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.3.tgz#65d166851abaa56067ef3f716b02a97ba6bbe84d" 3520 | dependencies: 3521 | chalk "^2.3.2" 3522 | cross-spawn "^6.0.5" 3523 | diff "^3.5.0" 3524 | enhanced-resolve "^4.0.0" 3525 | envinfo "^4.4.2" 3526 | glob-all "^3.1.0" 3527 | global-modules "^1.0.0" 3528 | got "^8.2.0" 3529 | import-local "^1.0.0" 3530 | inquirer "^5.1.0" 3531 | interpret "^1.0.4" 3532 | jscodeshift "^0.5.0" 3533 | listr "^0.13.0" 3534 | loader-utils "^1.1.0" 3535 | lodash "^4.17.5" 3536 | log-symbols "^2.2.0" 3537 | mkdirp "^0.5.1" 3538 | p-each-series "^1.0.0" 3539 | p-lazy "^1.0.0" 3540 | prettier "^1.5.3" 3541 | supports-color "^5.3.0" 3542 | v8-compile-cache "^1.1.2" 3543 | webpack-addons "^1.1.5" 3544 | yargs "^11.1.0" 3545 | yeoman-environment "^2.0.0" 3546 | yeoman-generator "^2.0.4" 3547 | 3548 | which-module@^1.0.0: 3549 | version "1.0.0" 3550 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 3551 | 3552 | which-module@^2.0.0: 3553 | version "2.0.0" 3554 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 3555 | 3556 | which@^1.2.14, which@^1.2.9: 3557 | version "1.3.0" 3558 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 3559 | dependencies: 3560 | isexe "^2.0.0" 3561 | 3562 | window-size@^0.2.0: 3563 | version "0.2.0" 3564 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" 3565 | 3566 | wrap-ansi@^2.0.0: 3567 | version "2.1.0" 3568 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3569 | dependencies: 3570 | string-width "^1.0.1" 3571 | strip-ansi "^3.0.1" 3572 | 3573 | wrappy@1: 3574 | version "1.0.2" 3575 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3576 | 3577 | write-file-atomic@^1.2.0: 3578 | version "1.3.4" 3579 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" 3580 | dependencies: 3581 | graceful-fs "^4.1.11" 3582 | imurmurhash "^0.1.4" 3583 | slide "^1.1.5" 3584 | 3585 | xtend@~4.0.0, xtend@~4.0.1: 3586 | version "4.0.1" 3587 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3588 | 3589 | y18n@^3.2.1: 3590 | version "3.2.1" 3591 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3592 | 3593 | yallist@^2.1.2: 3594 | version "2.1.2" 3595 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 3596 | 3597 | yargs-parser@^2.4.1: 3598 | version "2.4.1" 3599 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" 3600 | dependencies: 3601 | camelcase "^3.0.0" 3602 | lodash.assign "^4.0.6" 3603 | 3604 | yargs-parser@^9.0.2: 3605 | version "9.0.2" 3606 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" 3607 | dependencies: 3608 | camelcase "^4.1.0" 3609 | 3610 | yargs@^11.1.0: 3611 | version "11.1.0" 3612 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" 3613 | dependencies: 3614 | cliui "^4.0.0" 3615 | decamelize "^1.1.1" 3616 | find-up "^2.1.0" 3617 | get-caller-file "^1.0.1" 3618 | os-locale "^2.0.0" 3619 | require-directory "^2.1.1" 3620 | require-main-filename "^1.0.1" 3621 | set-blocking "^2.0.0" 3622 | string-width "^2.0.0" 3623 | which-module "^2.0.0" 3624 | y18n "^3.2.1" 3625 | yargs-parser "^9.0.2" 3626 | 3627 | yargs@^4.7.1: 3628 | version "4.8.1" 3629 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" 3630 | dependencies: 3631 | cliui "^3.2.0" 3632 | decamelize "^1.1.1" 3633 | get-caller-file "^1.0.1" 3634 | lodash.assign "^4.0.3" 3635 | os-locale "^1.4.0" 3636 | read-pkg-up "^1.0.1" 3637 | require-directory "^2.1.1" 3638 | require-main-filename "^1.0.1" 3639 | set-blocking "^2.0.0" 3640 | string-width "^1.0.1" 3641 | which-module "^1.0.0" 3642 | window-size "^0.2.0" 3643 | y18n "^3.2.1" 3644 | yargs-parser "^2.4.1" 3645 | 3646 | yargs@~1.2.6: 3647 | version "1.2.6" 3648 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" 3649 | dependencies: 3650 | minimist "^0.1.0" 3651 | 3652 | yeoman-environment@^2.0.0, yeoman-environment@^2.0.5: 3653 | version "2.0.6" 3654 | resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377" 3655 | dependencies: 3656 | chalk "^2.1.0" 3657 | debug "^3.1.0" 3658 | diff "^3.3.1" 3659 | escape-string-regexp "^1.0.2" 3660 | globby "^6.1.0" 3661 | grouped-queue "^0.3.3" 3662 | inquirer "^3.3.0" 3663 | is-scoped "^1.0.0" 3664 | lodash "^4.17.4" 3665 | log-symbols "^2.1.0" 3666 | mem-fs "^1.1.0" 3667 | text-table "^0.2.0" 3668 | untildify "^3.0.2" 3669 | 3670 | yeoman-generator@^2.0.4: 3671 | version "2.0.5" 3672 | resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81" 3673 | dependencies: 3674 | async "^2.6.0" 3675 | chalk "^2.3.0" 3676 | cli-table "^0.3.1" 3677 | cross-spawn "^6.0.5" 3678 | dargs "^5.1.0" 3679 | dateformat "^3.0.3" 3680 | debug "^3.1.0" 3681 | detect-conflict "^1.0.0" 3682 | error "^7.0.2" 3683 | find-up "^2.1.0" 3684 | github-username "^4.0.0" 3685 | istextorbinary "^2.2.1" 3686 | lodash "^4.17.10" 3687 | make-dir "^1.1.0" 3688 | mem-fs-editor "^4.0.0" 3689 | minimist "^1.2.0" 3690 | pretty-bytes "^4.0.2" 3691 | read-chunk "^2.1.0" 3692 | read-pkg-up "^3.0.0" 3693 | rimraf "^2.6.2" 3694 | run-async "^2.0.0" 3695 | shelljs "^0.8.0" 3696 | text-table "^0.2.0" 3697 | through2 "^2.0.0" 3698 | yeoman-environment "^2.0.5" 3699 | --------------------------------------------------------------------------------