From 5dfc65332d0fd617aec4f32db55e16d677daa641 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 16 Apr 2017 21:46:40 -0600 Subject: [PATCH 01/53] IdentitManager which creates identities and acts as a controller --- contracts/controllers/IdentityManager.sol | 73 +++++++++++++++++++++++ index.js | 1 + migrations/3_deploy_identity_manager.js | 5 ++ test/IdentityManager.js | 55 +++++++++++++++++ 4 files changed, 134 insertions(+) create mode 100644 contracts/controllers/IdentityManager.sol create mode 100644 migrations/3_deploy_identity_manager.js create mode 100644 test/IdentityManager.js diff --git a/contracts/controllers/IdentityManager.sol b/contracts/controllers/IdentityManager.sol new file mode 100644 index 0000000..4d91211 --- /dev/null +++ b/contracts/controllers/IdentityManager.sol @@ -0,0 +1,73 @@ +pragma solidity ^0.4.4; +import "../proxies/Proxy.sol"; + +contract IdentityManager { + event IdentityCreated( + address indexed identity, + address indexed creator, + address owner, + address indexed recoveryKey); + + event OwnerAdded( + address indexed identity, + address indexed owner, + address instigator); + + event OwnerRemoved( + address indexed identity, + address indexed owner, + address instigator); + + event RecoveryChanged( + address indexed identity, + address indexed recoveryKey, + address instigator); + + mapping(address => mapping(address => uint)) owners; + mapping(address => address) recoveryKeys; + + modifier onlyOwner(address identity) { + if (owners[identity][msg.sender] > 0 && owners[identity][msg.sender] < now ) _; + } + + modifier onlyRecovery(address identity) { + if (recoveryKeys[identity] == msg.sender) _; + } + + // Factory function + function CreateIdentity(address owner, address recoveryKey) { + Proxy identity = new Proxy(); + owners[identity][owner] = now; + recoveryKeys[identity] = recoveryKey; + IdentityCreated(identity, msg.sender, owner, recoveryKey); + } + + function forwardTo(Proxy identity, address destination, uint value, bytes data) onlyOwner(identity) { + identity.forward(destination, value, data); + } + + // an owner can add a new device instantly + function addOwner(Proxy identity, address newOwner) onlyOwner(identity) { + owners[identity][newOwner] = now; + OwnerAdded(identity, newOwner, msg.sender); + } + + // a recovery key owner can add a new device with 1 days wait time + function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) { + owners[identity][newOwner] = now + 1 days; + OwnerAdded(identity, newOwner, msg.sender); + } + + // an owner can remove another owner instantly + function removeOwner(Proxy identity, address owner) onlyOwner(identity) { + owners[identity][owner] = 0; + OwnerRemoved(identity, owner, msg.sender); + } + + // an owner can add change the recoverykey whenever they want to + function changeRecovery(Proxy identity, address recoveryKey) onlyOwner(identity) { + recoveryKeys[identity] = recoveryKey; + RecoveryChanged(identity, recoveryKey, msg.sender); + } + +} diff --git a/index.js b/index.js index da82b97..def7865 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,7 @@ module.exports = { ArrayLib: require('./build/contracts/ArrayLib.json'), IdentityFactory: require('./build/contracts/IdentityFactory.json'), IdentityFactoryWithRecoveryKey: require('./build/contracts/IdentityFactoryWithRecoveryKey.json'), + IdentityManager: require('./build/contracts/IdentityManager.json'), RecoverableController: require('./build/contracts/RecoverableController.json'), Proxy: require('./build/contracts/Proxy.json'), RecoveryQuorum: require('./build/contracts/Proxy.json'), diff --git a/migrations/3_deploy_identity_manager.js b/migrations/3_deploy_identity_manager.js new file mode 100644 index 0000000..56a18f6 --- /dev/null +++ b/migrations/3_deploy_identity_manager.js @@ -0,0 +1,5 @@ +const IdentityManager = artifacts.require('./controllers/IdentityManager.sol') + +module.exports = function (deployer) { + deployer.deploy(IdentityManager) +} diff --git a/test/IdentityManager.js b/test/IdentityManager.js new file mode 100644 index 0000000..9e498de --- /dev/null +++ b/test/IdentityManager.js @@ -0,0 +1,55 @@ +const IdentityManager = artifacts.require('IdentityManager') +const Proxy = artifacts.require('Proxy') + +contract('IdentityManager', (accounts) => { + let proxy + let deployedProxy + let identityManager + let user1 + let nobody + + let proxyAddress + let recoveryKey + + before((done) => { + // Truffle deploys contracts with accounts[0] + user1 = accounts[0] + nobody = accounts[1] // has no authority + recoveryKey = accounts[4] + + IdentityManager.deployed().then((instance) => { + identityManager = instance + return Proxy.new({from: accounts[0]}) + }).then((instance) => { + deployedProxy = instance + done() + }) + }) + + it('Correctly creates Identity', (done) => { + const event = identityManager.IdentityCreated({creator: nobody}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + // Check that event has addresses to correct contracts + proxyAddress = result.args.identity + + assert.equal(web3.eth.getCode(proxyAddress), + web3.eth.getCode(deployedProxy.address), + 'Created proxy should have correct code') + assert.equal(result.args.recoveryKey, + recoveryKey, + 'Recovery key is set in event') + assert.equal(result.args.creator, + nobody, + 'Creator is set in event') + proxy = Proxy.at(proxyAddress) + // Check that the mapping has correct proxy address + proxy.owner.call().then((proxyOwner) => { + assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') + done() + }).catch(done) + }) + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + }) +}) From 32380cd51b7b92715fe0be0513502add6bb3d4b0 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 16 Apr 2017 22:57:50 -0600 Subject: [PATCH 02/53] Adding of multiple devices as well as a change by recoveryKey --- contracts/controllers/IdentityManager.sol | 3 +- test/IdentityManager.js | 140 ++++++++++++++++++++-- 2 files changed, 135 insertions(+), 8 deletions(-) diff --git a/contracts/controllers/IdentityManager.sol b/contracts/controllers/IdentityManager.sol index 4d91211..b84c746 100644 --- a/contracts/controllers/IdentityManager.sol +++ b/contracts/controllers/IdentityManager.sol @@ -27,7 +27,7 @@ contract IdentityManager { mapping(address => address) recoveryKeys; modifier onlyOwner(address identity) { - if (owners[identity][msg.sender] > 0 && owners[identity][msg.sender] < now ) _; + if (owners[identity][msg.sender] > 0 && owners[identity][msg.sender] <= now ) _; } modifier onlyRecovery(address identity) { @@ -35,6 +35,7 @@ contract IdentityManager { } // Factory function + // gas 289,311 function CreateIdentity(address owner, address recoveryKey) { Proxy identity = new Proxy(); owners[identity][owner] = now; diff --git a/test/IdentityManager.js b/test/IdentityManager.js index 9e498de..ff397a1 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -1,11 +1,20 @@ +const lightwallet = require('eth-signer') +const evm_increaseTime = require('./evm_increaseTime.js') const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') +const TestRegistry = artifacts.require('TestRegistry') + +const LOG_NUMBER_1 = 1234 +const LOG_NUMBER_2 = 2345 contract('IdentityManager', (accounts) => { let proxy let deployedProxy + let testReg let identityManager let user1 + let user2 + let user3 let nobody let proxyAddress @@ -15,6 +24,8 @@ contract('IdentityManager', (accounts) => { // Truffle deploys contracts with accounts[0] user1 = accounts[0] nobody = accounts[1] // has no authority + user2 = accounts[2] + user3 = accounts[3] recoveryKey = accounts[4] IdentityManager.deployed().then((instance) => { @@ -22,7 +33,17 @@ contract('IdentityManager', (accounts) => { return Proxy.new({from: accounts[0]}) }).then((instance) => { deployedProxy = instance - done() + return TestRegistry.deployed() + }).then((instance) => { + testReg = instance + const event = identityManager.IdentityCreated({creator: nobody}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + proxy = Proxy.at(result.args.identity) + done() + }) + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) }) }) @@ -32,24 +53,129 @@ contract('IdentityManager', (accounts) => { if (error) throw Error(error) event.stopWatching() // Check that event has addresses to correct contracts - proxyAddress = result.args.identity - - assert.equal(web3.eth.getCode(proxyAddress), + assert.equal(web3.eth.getCode(result.args.identity), web3.eth.getCode(deployedProxy.address), 'Created proxy should have correct code') + assert.equal(result.args.owner, + user1, + 'Owner key is set in event') assert.equal(result.args.recoveryKey, recoveryKey, 'Recovery key is set in event') assert.equal(result.args.creator, nobody, 'Creator is set in event') - proxy = Proxy.at(proxyAddress) // Check that the mapping has correct proxy address - proxy.owner.call().then((proxyOwner) => { + Proxy.at(result.args.identity).owner.call().then((proxyOwner) => { assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') done() }).catch(done) }) - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { + // console.log(tx) + }) }) + + it('Only sends transactions initiated by owner', (done) => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 should not be able to send transaction') + done() + }).catch(done) + }) + + it('Allows multiple owners', (done) => { + const event = identityManager.OwnerAdded({identity: proxy.address}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + assert.equal(result.args.owner, + user2, + 'Owner key is set in event') + assert.equal(result.args.instigator, + user1, + 'Instigator key is set in event') + }) + identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) + }).then((tx) => { + return evm_increaseTime(1) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 can now send transaction') + done() + }).catch(done) + }) + + it('Allows recoveryKey to add owner', (done) => { + const event = identityManager.OwnerAdded({identity: proxy.address}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + assert.equal(result.args.owner, + user3, + 'Owner key is set in event') + assert.equal(result.args.instigator, + recoveryKey, + 'Instigator key is set in event') + }) + identityManager.addOwnerForRecovery(proxy.address, user3, {from: recoveryKey}).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) + }).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User3 should not yet be able to send transaction') + + return evm_increaseTime(86400) + }).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) + }).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User3 can now send transaction') + done() + }).catch(done) + }) + }) From f4ec8d6b8060dce99730562e52e3f4b3adaf9388 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 16 Apr 2017 23:12:03 -0600 Subject: [PATCH 03/53] tests for removal of owners --- test/IdentityManager.js | 42 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index ff397a1..9673de9 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -17,7 +17,6 @@ contract('IdentityManager', (accounts) => { let user3 let nobody - let proxyAddress let recoveryKey before((done) => { @@ -178,4 +177,45 @@ contract('IdentityManager', (accounts) => { }).catch(done) }) + it('Allows removing of owners', (done) => { + identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { + return evm_increaseTime(1) + }).then(() => { + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + }).then(() => { + const event = identityManager.OwnerRemoved({identity: proxy.address}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + assert.equal(result.args.owner, + user1, + 'Owner key is set in event') + assert.equal(result.args.instigator, + user2, + 'Instigator key is set in event') + }) + return identityManager.removeOwner(proxy.address, user1, {from: user2}) + }).then((tx) => { + return evm_increaseTime(1) + }).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then((tx) => { + return evm_increaseTime(1) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User1 can not send transaction now') + done() + }).catch(done) + }) + }) From 048611ea3b52dab8e1dce9fb418904e62e234146 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 16 Apr 2017 23:35:29 -0600 Subject: [PATCH 04/53] tests for changeRecovery --- test/IdentityManager.js | 78 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 8 deletions(-) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index 9673de9..b9a8ed4 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -15,9 +15,11 @@ contract('IdentityManager', (accounts) => { let user1 let user2 let user3 + let user4 let nobody let recoveryKey + let recoveryKey2 before((done) => { // Truffle deploys contracts with accounts[0] @@ -25,7 +27,9 @@ contract('IdentityManager', (accounts) => { nobody = accounts[1] // has no authority user2 = accounts[2] user3 = accounts[3] - recoveryKey = accounts[4] + user4 = accounts[4] + recoveryKey = accounts[8] + recoveryKey2 = accounts[9] IdentityManager.deployed().then((instance) => { identityManager = instance @@ -182,40 +186,98 @@ contract('IdentityManager', (accounts) => { return evm_increaseTime(1) }).then(() => { let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) }).then(() => { // Verify that the proxy address is logged as the sender return testReg.registry.call(proxy.address) }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User2 should be able to send transaction') }).then(() => { const event = identityManager.OwnerRemoved({identity: proxy.address}) event.watch((error, result) => { if (error) throw Error(error) event.stopWatching() assert.equal(result.args.owner, - user1, + user2, 'Owner key is set in event') assert.equal(result.args.instigator, - user2, + user1, 'Instigator key is set in event') }) - return identityManager.removeOwner(proxy.address, user1, {from: user2}) + return identityManager.removeOwner(proxy.address, user2, {from: user1}) }).then((tx) => { return evm_increaseTime(1) }).then(() => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) }).then((tx) => { return evm_increaseTime(1) }).then(() => { // Verify that the proxy address is logged as the sender return testReg.registry.call(proxy.address) }).then((regData) => { - assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User1 can not send transaction now') + assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 can not send transaction now') done() }).catch(done) }) + it('Allows changing of recoveryKey', (done) => { + const event = identityManager.RecoveryChanged({identity: proxy.address}) + event.watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + assert.equal(result.args.recoveryKey, + recoveryKey2, + 'New recovery key is set in event') + assert.equal(result.args.instigator, + user1, + 'Instigator key is set in event') + }) + identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user1}).then(() => { + return evm_increaseTime(1) + }).then(() => { + identityManager.OwnerAdded({identity: proxy.address}).watch((error, result) => { + if (error) throw Error(error) + event.stopWatching() + assert.equal(result.args.owner, + user4, + 'New owner is set in event') + assert.equal(result.args.instigator, + recoveryKey2, + 'Instigator key is set in event') + }) + return identityManager.addOwnerForRecovery(proxy.address, user4, {from: recoveryKey2}) + }).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then(() => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) + }).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'user4 should not yet be able to send transaction') + + return evm_increaseTime(86401) + }).then(() => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) + }).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User4 can now send transaction') + done() + }).catch(done) + }) }) From 4a6da211156f2c5b4b3365633ba4eb5d34293449 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Fri, 21 Apr 2017 17:56:35 -0600 Subject: [PATCH 05/53] only allow owners who have been around for more than a day to modify ownership MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also don’t allow recoveryKey to overwrite existing owners --- contracts/controllers/IdentityManager.sol | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/contracts/controllers/IdentityManager.sol b/contracts/controllers/IdentityManager.sol index b84c746..c9511ab 100644 --- a/contracts/controllers/IdentityManager.sol +++ b/contracts/controllers/IdentityManager.sol @@ -30,6 +30,10 @@ contract IdentityManager { if (owners[identity][msg.sender] > 0 && owners[identity][msg.sender] <= now ) _; } + modifier onlyOlderOwner(address identity) { + if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 days) <= now) _; + } + modifier onlyRecovery(address identity) { if (recoveryKeys[identity] == msg.sender) _; } @@ -38,7 +42,7 @@ contract IdentityManager { // gas 289,311 function CreateIdentity(address owner, address recoveryKey) { Proxy identity = new Proxy(); - owners[identity][owner] = now; + owners[identity][owner] = now - 1 days; // This is to ensure original owner has full power from day one recoveryKeys[identity] = recoveryKey; IdentityCreated(identity, msg.sender, owner, recoveryKey); } @@ -48,25 +52,26 @@ contract IdentityManager { } // an owner can add a new device instantly - function addOwner(Proxy identity, address newOwner) onlyOwner(identity) { + function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) { owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, msg.sender); } // a recovery key owner can add a new device with 1 days wait time function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) { + if (owners[identity][newOwner] > 0) throw; owners[identity][newOwner] = now + 1 days; OwnerAdded(identity, newOwner, msg.sender); } // an owner can remove another owner instantly - function removeOwner(Proxy identity, address owner) onlyOwner(identity) { + function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) { owners[identity][owner] = 0; OwnerRemoved(identity, owner, msg.sender); } // an owner can add change the recoverykey whenever they want to - function changeRecovery(Proxy identity, address recoveryKey) onlyOwner(identity) { + function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) { recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, msg.sender); } From d289ce133f122b3853e3493601eb6eaed0963964 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Fri, 21 Apr 2017 19:31:50 -0600 Subject: [PATCH 06/53] Reorganizing stuff based on latest changes in repo --- .../{controllers => }/IdentityManager.sol | 11 +- migrations/3_deploy_identity_manager.js | 2 +- test/IdentityManager.js | 46 +- test/compareCode.js | 15 + test/identityFactory.js | 14 +- yarn.lock | 546 +++++++++--------- 6 files changed, 334 insertions(+), 300 deletions(-) rename contracts/{controllers => }/IdentityManager.sol (90%) create mode 100644 test/compareCode.js diff --git a/contracts/controllers/IdentityManager.sol b/contracts/IdentityManager.sol similarity index 90% rename from contracts/controllers/IdentityManager.sol rename to contracts/IdentityManager.sol index c9511ab..3091db7 100644 --- a/contracts/controllers/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -1,5 +1,5 @@ pragma solidity ^0.4.4; -import "../proxies/Proxy.sol"; +import "./Proxy.sol"; contract IdentityManager { event IdentityCreated( @@ -27,15 +27,18 @@ contract IdentityManager { mapping(address => address) recoveryKeys; modifier onlyOwner(address identity) { - if (owners[identity][msg.sender] > 0 && owners[identity][msg.sender] <= now ) _; + if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 hours) <= now ) _ ; + else throw; } modifier onlyOlderOwner(address identity) { - if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 days) <= now) _; + if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 days) <= now) _ ; + else throw; } modifier onlyRecovery(address identity) { - if (recoveryKeys[identity] == msg.sender) _; + if (recoveryKeys[identity] == msg.sender) _ ; + else throw; } // Factory function diff --git a/migrations/3_deploy_identity_manager.js b/migrations/3_deploy_identity_manager.js index 56a18f6..a12ffff 100644 --- a/migrations/3_deploy_identity_manager.js +++ b/migrations/3_deploy_identity_manager.js @@ -1,4 +1,4 @@ -const IdentityManager = artifacts.require('./controllers/IdentityManager.sol') +const IdentityManager = artifacts.require('./IdentityManager.sol') module.exports = function (deployer) { deployer.deploy(IdentityManager) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index b9a8ed4..9f06c45 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -1,8 +1,11 @@ const lightwallet = require('eth-signer') -const evm_increaseTime = require('./evm_increaseTime.js') +const evm_increaseTime = require('./evmIncreaseTime.js') const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') +const Promise = require('bluebird') +const compareCode = require('./compareCode') +web3.eth = Promise.promisifyAll(web3.eth) const LOG_NUMBER_1 = 1234 const LOG_NUMBER_2 = 2345 @@ -39,44 +42,39 @@ contract('IdentityManager', (accounts) => { return TestRegistry.deployed() }).then((instance) => { testReg = instance - const event = identityManager.IdentityCreated({creator: nobody}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - proxy = Proxy.at(result.args.identity) - done() - }) - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + return identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + }).then(tx => { + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + done() }) }) it('Correctly creates Identity', (done) => { - const event = identityManager.IdentityCreated({creator: nobody}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - // Check that event has addresses to correct contracts - assert.equal(web3.eth.getCode(result.args.identity), - web3.eth.getCode(deployedProxy.address), - 'Created proxy should have correct code') - assert.equal(result.args.owner, + let log + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { + log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + + assert.equal(log.args.owner, user1, 'Owner key is set in event') - assert.equal(result.args.recoveryKey, + assert.equal(log.args.recoveryKey, recoveryKey, 'Recovery key is set in event') - assert.equal(result.args.creator, + assert.equal(log.args.creator, nobody, 'Creator is set in event') // Check that the mapping has correct proxy address - Proxy.at(result.args.identity).owner.call().then((proxyOwner) => { + + return compareCode(log.args.identity, deployedProxy.address) + }).then(() => { + Proxy.at(log.args.identity).owner.call().then((proxyOwner) => { assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') done() }).catch(done) }) - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { - // console.log(tx) - }) }) it('Only sends transactions initiated by owner', (done) => { diff --git a/test/compareCode.js b/test/compareCode.js new file mode 100644 index 0000000..b5e7f4f --- /dev/null +++ b/test/compareCode.js @@ -0,0 +1,15 @@ +function compareCode(addr1, addr2) { + let c1, c2 + return new Promise((resolve, reject) => { + web3.eth.getCodeAsync(addr1).then(code => { + c1 = code + return web3.eth.getCodeAsync(addr2) + }).then(code => { + c2 = code + assert.equal(c1, c2, 'the deployed contract has incorrect code') + resolve() + }) + }) +} + +module.exports = compareCode diff --git a/test/identityFactory.js b/test/identityFactory.js index fa0d93e..1344b62 100644 --- a/test/identityFactory.js +++ b/test/identityFactory.js @@ -3,21 +3,9 @@ const Proxy = artifacts.require('Proxy') const RecoverableController = artifacts.require('RecoverableController') const RecoveryQuorum = artifacts.require('RecoveryQuorum') const Promise = require('bluebird') +const compareCode = require('./compareCode') web3.eth = Promise.promisifyAll(web3.eth) -function compareCode(addr1, addr2) { - let c1, c2 - return new Promise((resolve, reject) => { - web3.eth.getCodeAsync(addr1).then(code => { - c1 = code - return web3.eth.getCodeAsync(addr2) - }).then(code => { - c2 = code - assert.equal(c1, c2, 'the deployed contract has incorrect code') - resolve() - }) - }) -} contract('IdentityFactory', (accounts) => { let identityFactory diff --git a/yarn.lock b/yarn.lock index d1e7bd0..0807599 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,8 +7,8 @@ resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" "@types/node@^6", "@types/node@^6.0.45": - version "6.0.68" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.68.tgz#0c43b6b8b9445feb86a0fbd3457e3f4bc591e66d" + version "6.0.70" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.70.tgz#f6e04b859205ee3611849921f09819701dbfa5e8" abbrev@1: version "1.1.0" @@ -51,8 +51,8 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" ajv@^4.9.1: - version "4.11.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" + version "4.11.7" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -94,11 +94,11 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" dependencies: delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" + readable-stream "^2.0.6" arr-diff@^2.0.0: version "2.0.0" @@ -107,8 +107,8 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" array-union@^1.0.1: version "1.0.2" @@ -210,12 +210,12 @@ b64@3.x.x: resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d" babel-cli@*: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.0.tgz#a05ffd210dca0c288a26d5319c5ac8669a265ad0" + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" dependencies: - babel-core "^6.24.0" + babel-core "^6.24.1" babel-polyfill "^6.23.0" - babel-register "^6.24.0" + babel-register "^6.24.1" babel-runtime "^6.22.0" commander "^2.8.1" convert-source-map "^1.1.0" @@ -238,19 +238,19 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02" +babel-core@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" dependencies: babel-code-frame "^6.22.0" - babel-generator "^6.24.0" - babel-helpers "^6.23.0" + babel-generator "^6.24.1" + babel-helpers "^6.24.1" babel-messages "^6.23.0" - babel-register "^6.24.0" + babel-register "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" babylon "^6.11.0" convert-source-map "^1.1.0" debug "^2.1.1" @@ -262,93 +262,93 @@ babel-core@^6.24.0: slash "^1.0.0" source-map "^0.5.0" -babel-generator@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" +babel-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" dependencies: babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.23.0" + babel-types "^6.24.1" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" source-map "^0.5.0" trim-right "^1.0.1" -babel-helper-call-delegate@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" dependencies: - babel-helper-hoist-variables "^6.22.0" + babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -babel-helper-define-map@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz#1444f960c9691d69a2ced6a205315f8fd00804e7" +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" dependencies: - babel-helper-function-name "^6.23.0" + babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" - babel-types "^6.23.0" + babel-types "^6.24.1" lodash "^4.2.0" -babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz#25742d67175c8903dbe4b6cb9d9e1fcb8dcf23a6" +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" dependencies: - babel-helper-get-function-arity "^6.22.0" + babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -babel-helper-get-function-arity@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" -babel-helper-hoist-variables@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" -babel-helper-optimise-call-expression@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz#f3ee7eed355b4282138b33d02b78369e470622f5" +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" dependencies: babel-runtime "^6.22.0" - babel-types "^6.23.0" + babel-types "^6.24.1" -babel-helper-regex@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" lodash "^4.2.0" -babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz#eeaf8ad9b58ec4337ca94223bacdca1f8d9b4bfd" +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" dependencies: - babel-helper-optimise-call-expression "^6.23.0" + babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -babel-helpers@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992" +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" dependencies: babel-runtime "^6.22.0" - babel-template "^6.23.0" + babel-template "^6.24.1" babel-messages@^6.23.0: version "6.23.0" @@ -374,36 +374,36 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz#e48895cf0b375be148cd7c8879b422707a053b51" +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" dependencies: babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz#49b53f326202a2fd1b3bbaa5e2edd8a4f78643c1" +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: - babel-helper-define-map "^6.23.0" - babel-helper-function-name "^6.23.0" - babel-helper-optimise-call-expression "^6.23.0" - babel-helper-replace-supers "^6.23.0" + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7" +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" - babel-template "^6.22.0" + babel-template "^6.24.1" babel-plugin-transform-es2015-destructuring@^6.22.0: version "6.23.0" @@ -411,12 +411,12 @@ babel-plugin-transform-es2015-destructuring@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b" +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" babel-plugin-transform-es2015-for-of@^6.22.0: version "6.23.0" @@ -424,13 +424,13 @@ babel-plugin-transform-es2015-for-of@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: - babel-helper-function-name "^6.22.0" + babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" @@ -438,63 +438,63 @@ babel-plugin-transform-es2015-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz#a1911fb9b7ec7e05a43a63c5995007557bcf6a2e" +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.0" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.22.0" + babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz#e921aefb72c2cc26cb03d107626156413222134f" +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" dependencies: - babel-plugin-transform-strict-mode "^6.22.0" + babel-plugin-transform-strict-mode "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-types "^6.24.1" -babel-plugin-transform-es2015-modules-systemjs@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz#ae3469227ffac39b0310d90fec73bfdc4f6317b0" +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: - babel-helper-hoist-variables "^6.22.0" + babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" + babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz#fd5fa63521cae8d273927c3958afd7c067733450" +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" + babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc" +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: - babel-helper-replace-supers "^6.22.0" + babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b" +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: - babel-helper-call-delegate "^6.22.0" - babel-helper-get-function-arity "^6.22.0" + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723" +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" @@ -502,13 +502,13 @@ babel-plugin-transform-es2015-spread@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: - babel-helper-regex "^6.22.0" + babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" @@ -522,26 +522,26 @@ babel-plugin-transform-es2015-typeof-symbol@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: - babel-helper-regex "^6.22.0" + babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-regenerator@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" +babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" dependencies: - regenerator-transform "0.9.8" + regenerator-transform "0.9.11" -babel-plugin-transform-strict-mode@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c" +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" dependencies: babel-runtime "^6.22.0" - babel-types "^6.22.0" + babel-types "^6.24.1" babel-polyfill@^6.23.0: version "6.23.0" @@ -552,39 +552,39 @@ babel-polyfill@^6.23.0: regenerator-runtime "^0.10.0" babel-preset-es2015@*: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.0.tgz#c162d68b1932696e036cd3110dc1ccd303d2673a" + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.22.0" - babel-plugin-transform-es2015-classes "^6.22.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.0" - babel-plugin-transform-es2015-modules-commonjs "^6.24.0" - babel-plugin-transform-es2015-modules-systemjs "^6.22.0" - babel-plugin-transform-es2015-modules-umd "^6.24.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.22.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" babel-plugin-transform-es2015-template-literals "^6.22.0" babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" -babel-register@*, babel-register@^6.24.0: - version "6.24.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.0.tgz#5e89f8463ba9970356d02eb07dabe3308b080cfd" +babel-register@*, babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" dependencies: - babel-core "^6.24.0" + babel-core "^6.24.1" babel-runtime "^6.22.0" core-js "^2.4.0" home-or-tmp "^2.0.0" @@ -599,33 +599,33 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.22.0, babel-template@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" +babel-template@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" dependencies: babel-runtime "^6.22.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" babylon "^6.11.0" lodash "^4.2.0" -babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" +babel-traverse@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" dependencies: babel-code-frame "^6.22.0" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.23.0" + babel-types "^6.24.1" babylon "^6.15.0" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" +babel-types@^6.19.0, babel-types@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" dependencies: babel-runtime "^6.22.0" esutils "^2.0.2" @@ -633,8 +633,8 @@ babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: to-fast-properties "^1.0.1" babylon@^6.11.0, babylon@^6.15.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" + version "6.17.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" backo2@1.0.2: version "1.0.2" @@ -684,7 +684,7 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -bignumber.js@debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2, "bignumber.js@git+https://github.com/debris/bignumber.js#master", "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": +"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", "bignumber.js@git+https://github.com/debris/bignumber.js.git#master", "bignumber.js@github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" resolved "https://codeload.github.com/debris/bignumber.js/tar.gz/94d7146671b9719e00a09c29b01a691bc85048c2" @@ -704,7 +704,16 @@ bindings@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" -bip39@^2.2.0, bip39@~2.2.0: +bip39@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.3.0.tgz#e4ee6c6d1bd90ca00ffd57ad446bdf8c017ff484" + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + unorm "^1.3.3" + +bip39@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.2.0.tgz#40e73f70674c267f148cdbf8374f2a50be166b0d" dependencies: @@ -729,8 +738,8 @@ bitcore-lib@^0.14.0: lodash "=3.10.1" bitcore-mnemonic@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bitcore-mnemonic/-/bitcore-mnemonic-1.2.3.tgz#007bf30a12dfa6c920cddc72f864c0bf2b272afa" + version "1.2.5" + resolved "https://registry.yarnpkg.com/bitcore-mnemonic/-/bitcore-mnemonic-1.2.5.tgz#45faba00163c557a054202ffe9a20fba2360685f" dependencies: bitcore-lib "^0.14.0" unorm "^1.3.3" @@ -755,7 +764,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.4.1: +bluebird@^3.4.1, bluebird@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -1253,10 +1262,10 @@ debug@2.6.1: ms "0.7.2" debug@^2.1.0, debug@^2.1.1, debug@^2.2.0, debug@^2.3.2, debug@^2.3.3, debug@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" + version "2.6.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" dependencies: - ms "0.7.2" + ms "0.7.3" decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" @@ -1607,8 +1616,8 @@ ethereumjs-block@^1.2.2, ethereumjs-block@~1.2.2: merkle-patricia-tree "^2.1.2" ethereumjs-testrpc@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-3.0.3.tgz#830480310dc02355305b674bc1004ba8a649b44d" + version "3.0.4" + resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-3.0.4.tgz#3f82decf0a116e6e7d7e34dd97a0b9aeadbb45e9" dependencies: async "~1.5.0" bignumber.js "~2.1.4" @@ -1698,6 +1707,14 @@ ethjs-abi@0.1.8: js-sha3 "0.5.5" number-to-bn "1.7.0" +ethjs-abi@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.1.9.tgz#5211c4adc3a20793ad319a9d2204e43807e76fea" + dependencies: + bn.js "4.11.6" + js-sha3 "0.5.5" + number-to-bn "1.7.0" + ethjs-util@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.4.tgz#1c8b6879257444ef4d3f3fbbac2ded12cd997d93" @@ -1892,8 +1909,8 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" form-data@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" dependencies: asynckit "^0.4.0" combined-stream "^1.0.5" @@ -1988,8 +2005,8 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" gauge@~2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -2090,8 +2107,8 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: path-is-absolute "^1.0.0" global@~4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df" + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" dependencies: min-document "^2.19.0" process "~0.5.1" @@ -2252,8 +2269,8 @@ heavy@4.x.x: joi "10.x.x" hmac-drbg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5" + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -2275,8 +2292,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.4.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" + version "2.4.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" hpack.js@^2.1.6: version "2.1.6" @@ -2342,11 +2359,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@=2.0.1, inherits@^2.0.1, inherits@~2.0.1: +inherits@=2.0.1, inherits@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" @@ -2381,8 +2398,8 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" ip-address@^5.8.6: - version "5.8.6" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-5.8.6.tgz#666279e21a38f9c274fa503cacfc339fa6ee483f" + version "5.8.8" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-5.8.8.tgz#5fd1f8f7465249fb7d2b3c1eec7b41d29d1f1b76" dependencies: jsbn "0.1.0" lodash.find "^4.6.0" @@ -3060,8 +3077,8 @@ libp2p-crypto-secp256k1@^0.1.4: secp256k1 "^3.2.5" libp2p-crypto@~0.8.4, libp2p-crypto@~0.8.6, libp2p-crypto@~0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.8.7.tgz#be122acf9c62813fea29682b2fc7144da6e503c2" + version "0.8.8" + resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.8.8.tgz#dc8a49cbcedb5239de977619f2d18df9fc110f39" dependencies: asn1.js "^4.9.1" async "^2.1.5" @@ -3389,6 +3406,10 @@ looper@^3.0.0, looper@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" +looper@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-4.0.0.tgz#7706aded59a99edca06e6b54bb86c8ec19c95155" + loose-envify@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" @@ -3574,6 +3595,10 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + multiaddr@^2.0.3, multiaddr@^2.2.2, multiaddr@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-2.3.0.tgz#56634824f48bcbd8405fd5434c31b277424c62fc" @@ -3677,8 +3702,8 @@ murmurhash3js@^3.0.1: resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" nan@^2.0.5, nan@^2.0.8, nan@^2.2.1, nan@^2.3.0, nan@^2.5.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01" + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" ndjson@^1.4.3: version "1.5.0" @@ -3793,8 +3818,8 @@ nopt@^4.0.1: osenv "^0.1.4" normalize-package-data@^2.3.2: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -4034,7 +4059,7 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -pbkdf2@^3.0.0, pbkdf2@^3.0.3: +pbkdf2@^3.0.0, pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" dependencies: @@ -4117,12 +4142,13 @@ podium@^1.2.x: joi "10.x.x" prebuild-install@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.1.1.tgz#d0a77ea51b6a00f928cb71bc0ccea24f87ec171e" + version "2.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.1.2.tgz#d9ae0ca85330e03962d93292f95a8b44c2ebf505" dependencies: expand-template "^1.0.2" github-from-package "0.0.0" minimist "^1.2.0" + mkdirp "^0.5.1" node-abi "^2.0.0" noop-logger "^0.1.1" npmlog "^4.0.1" @@ -4172,8 +4198,8 @@ promisify-node@^0.4.0: object-assign "^4.0.1" protocol-buffers-schema@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.1.1.tgz#b5e4800ce8adab7fb8ffe8770bb36e2a04359c78" + version "3.3.0" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.0.tgz#141271d96c718f2c810847f158c991f5bca9e321" protocol-buffers@^3.1.6, protocol-buffers@^3.2.1: version "3.2.1" @@ -4199,10 +4225,11 @@ pseudomap@^1.0.1: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" pull-block@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pull-block/-/pull-block-1.1.0.tgz#ea12536b80198107e97000a7228fd87c1264466f" + version "1.2.0" + resolved "https://registry.yarnpkg.com/pull-block/-/pull-block-1.2.0.tgz#e3947f0a83426e847ecececb0b9ba308b019b3e1" dependencies: pull-through "^1.0.18" + safe-buffer "^5.0.1" pull-cat@^1.1.11, pull-cat@^1.1.9: version "1.1.11" @@ -4234,27 +4261,29 @@ pull-handshake@^1.1.4: pull-reader "^1.2.3" pull-length-prefixed@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pull-length-prefixed/-/pull-length-prefixed-1.2.0.tgz#e70b10327a726acc6ebb96e17cc9a70569c6e811" + version "1.2.1" + resolved "https://registry.yarnpkg.com/pull-length-prefixed/-/pull-length-prefixed-1.2.1.tgz#fa00ca142a85f347a91d6c12da416ef5659897dc" dependencies: pull-pushable "^2.0.1" - pull-reader "^1.2.8" + pull-reader "^1.2.9" safe-buffer "^5.0.1" - varint "^4.0.1" + varint "^5.0.0" pull-pair@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pull-pair/-/pull-pair-1.1.0.tgz#7ee427263fdf4da825397ac0a05e1ab4b74bd76d" pull-paramap@^1.2.0, pull-paramap@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pull-paramap/-/pull-paramap-1.2.1.tgz#ec533c90bbb1fcbc4ac94a94bf029f0615172172" + version "1.2.2" + resolved "https://registry.yarnpkg.com/pull-paramap/-/pull-paramap-1.2.2.tgz#51a4193ce9c8d7215d95adad45e2bcdb8493b23a" + dependencies: + looper "^4.0.0" pull-pushable@^2.0.0, pull-pushable@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.0.1.tgz#02bdca51a39cf585f483fbecde2fc9378076f212" -pull-reader@^1.2.3, pull-reader@^1.2.8: +pull-reader@^1.2.3, pull-reader@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/pull-reader/-/pull-reader-1.2.9.tgz#d2e9ad00bcfb54e62aa66d42c2dbbcb5eb6843b0" @@ -4295,15 +4324,16 @@ pull-write-file@^0.2.1: resolved "https://registry.yarnpkg.com/pull-write-file/-/pull-write-file-0.2.4.tgz#437344aeb2189f65e678ed1af37f0f760a5453ef" pull-write@^1.0.2, pull-write@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pull-write/-/pull-write-1.1.1.tgz#52460417d6e63e1b0c76628d168bb673182df040" + version "1.1.2" + resolved "https://registry.yarnpkg.com/pull-write/-/pull-write-1.1.2.tgz#60274aa478f8c827710b92095325331ab175fdd2" dependencies: + looper "^4.0.0" pull-cat "^1.1.11" pull-stream "^3.4.5" pull-ws@^3.2.8: - version "3.2.8" - resolved "https://registry.yarnpkg.com/pull-ws/-/pull-ws-3.2.8.tgz#0b3abebac15399e15d0db24cbedddc7dd8363f2e" + version "3.2.9" + resolved "https://registry.yarnpkg.com/pull-ws/-/pull-ws-3.2.9.tgz#8a90502a41d9058fcb3096ad4823a0f189d613ba" dependencies: relative-url "^1.0.2" ws "^1.1.0" @@ -4412,9 +4442,9 @@ readable-stream@1.1.x, readable-stream@^1.0.33, readable-stream@^1.1.14, readabl isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.8.tgz#ad28b686f3554c73d39bc32347fa058356624705" +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" dependencies: buffer-shims "~1.0.0" core-util-is "~1.0.0" @@ -4450,9 +4480,9 @@ regenerator-runtime@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" -regenerator-transform@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" dependencies: babel-runtime "^6.18.0" babel-types "^6.19.0" @@ -4474,8 +4504,8 @@ regexpu-core@^2.0.0: regjsparser "^0.1.4" registry-auth-token@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.1.tgz#1b93317b42527732f56f88c41b73b7bf855e05a5" + version "3.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.2.0.tgz#5bf3bd4608a2dd9242542c44d66ad8a5f9cdd3b0" dependencies: rc "^1.1.6" @@ -4660,8 +4690,8 @@ secp256k1@^3.0.1, secp256k1@^3.2.0, secp256k1@^3.2.5: prebuild-install "^2.0.0" seedrandom@~2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.2.tgz#18d78c41287d13aff8eadb29e235938b248aa9ff" + version "2.4.3" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" semaphore@>=1.0.1, semaphore@^1.0.3: version "1.0.5" @@ -4937,8 +4967,8 @@ sprintf-js@^1.0.3: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -5357,7 +5387,7 @@ truffle-expect@0.0.3, truffle-expect@^0.0.3, truffle-expect@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.3.tgz#9b75cef343bd596e7e5dbc878f5f1b2e318a944c" -truffle-hdwallet-provider@^0.0.3: +truffle-hdwallet-provider@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz#0e1de02104b73d3875e1cf7093305b4ea8a2d843" dependencies: @@ -5544,8 +5574,8 @@ truffle@beta: yargs "^6.6.0" tslib@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.6.0.tgz#cf36c93e02ae86a20fc131eae511162b869a6652" + version "1.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.6.1.tgz#b77b09abc5fa4935e157d838b80e36dad47152c4" tunnel-agent@^0.4.3: version "0.4.3" @@ -5592,8 +5622,8 @@ typedarray@^0.0.6, typedarray@~0.0.5: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" typescript@^2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c" + version "2.3.0" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418" uid-number@^0.0.6: version "0.0.6" @@ -5659,8 +5689,8 @@ uuid@^3.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" v8flags@^2.0.10: - version "2.0.12" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.12.tgz#73235d9f7176f8e8833fb286795445f7938d84e5" + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" dependencies: user-home "^1.1.1" @@ -5846,8 +5876,8 @@ wreck@10.x.x: hoek "4.x.x" write-file-atomic@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" + version "1.3.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.2.tgz#f80ac5e06d3a38996ab51b5d310db57102deb902" dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" From 9d4fb3166b735223da6c89c2cbb0c8cc02811bc0 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 18 May 2017 13:49:16 -0600 Subject: [PATCH 07/53] added a general purpose rate limiter --- contracts/IdentityManager.sol | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index 3091db7..48b72e8 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -25,6 +25,7 @@ contract IdentityManager { mapping(address => mapping(address => uint)) owners; mapping(address => address) recoveryKeys; + mapping(address => uint) limiter; modifier onlyOwner(address identity) { if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 hours) <= now ) _ ; @@ -41,6 +42,13 @@ contract IdentityManager { else throw; } + modifier rateLimited() { + if (limiter[msg.sender] < (now - 1 hours)) { + limiter[msg.sender] = now; + _; + } else throw; + } + // Factory function // gas 289,311 function CreateIdentity(address owner, address recoveryKey) { @@ -55,26 +63,26 @@ contract IdentityManager { } // an owner can add a new device instantly - function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) { + function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited { owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, msg.sender); } // a recovery key owner can add a new device with 1 days wait time - function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) { + function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) rateLimited { if (owners[identity][newOwner] > 0) throw; owners[identity][newOwner] = now + 1 days; OwnerAdded(identity, newOwner, msg.sender); } // an owner can remove another owner instantly - function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) { + function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) rateLimited { owners[identity][owner] = 0; OwnerRemoved(identity, owner, msg.sender); } // an owner can add change the recoverykey whenever they want to - function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) { + function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) rateLimited { recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, msg.sender); } From b5f177105a7fd69a94b7a71f7de32f786c3e2921 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 18 May 2017 13:50:17 -0600 Subject: [PATCH 08/53] add a rate limiter to IdentityManager --- contracts/IdentityManager.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index 48b72e8..0775c7c 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -45,7 +45,7 @@ contract IdentityManager { modifier rateLimited() { if (limiter[msg.sender] < (now - 1 hours)) { limiter[msg.sender] = now; - _; + _ ; } else throw; } From 09ab55c15cd8ab9010ec3eb934ac54e1fd21ca52 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 18 May 2017 19:48:14 -0600 Subject: [PATCH 09/53] Also limit owners added by owners --- contracts/IdentityManager.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index 0775c7c..f5f1840 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -64,7 +64,7 @@ contract IdentityManager { // an owner can add a new device instantly function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited { - owners[identity][newOwner] = now; + owners[identity][newOwner] = now + 1 days; OwnerAdded(identity, newOwner, msg.sender); } From 875ed994c4cd40efd8e78c992cef44c4c0aebc02 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 18 May 2017 19:55:16 -0600 Subject: [PATCH 10/53] Add registerIdentity function for registering an existing proxy --- contracts/IdentityManager.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index f5f1840..f5eec09 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -58,6 +58,16 @@ contract IdentityManager { IdentityCreated(identity, msg.sender, owner, recoveryKey); } + // An identity Proxy can use this to register itself with the IdentityManager + // Note they also have to change the owner of the Proxy over to this, but after calling this + function registerIdentity(address owner, address recoveryKey) { + if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business + owners[msg.sender][owner] = now - 1 days; // This is to ensure original owner has full power from day one + recoveryKeys[msg.sender] = recoveryKey; + IdentityCreated(msg.sender, msg.sender, owner, recoveryKey); + } + + function forwardTo(Proxy identity, address destination, uint value, bytes data) onlyOwner(identity) { identity.forward(destination, value, data); } From ce9ae06da5b6b17ef168d7f72c237db55abb0c15 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 18 May 2017 23:04:16 -0600 Subject: [PATCH 11/53] beginning of reorganizing tests Fails due to various timestamp related issues --- test/IdentityManager.js | 470 ++++++++++++++++++++++++---------------- 1 file changed, 286 insertions(+), 184 deletions(-) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index 9f06c45..e8887d1 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -19,21 +19,22 @@ contract('IdentityManager', (accounts) => { let user2 let user3 let user4 + let user5 let nobody let recoveryKey let recoveryKey2 - before((done) => { + before(done => { // Truffle deploys contracts with accounts[0] user1 = accounts[0] nobody = accounts[1] // has no authority user2 = accounts[2] user3 = accounts[3] user4 = accounts[4] + user5 = accounts[5] recoveryKey = accounts[8] recoveryKey2 = accounts[9] - IdentityManager.deployed().then((instance) => { identityManager = instance return Proxy.new({from: accounts[0]}) @@ -42,11 +43,6 @@ contract('IdentityManager', (accounts) => { return TestRegistry.deployed() }).then((instance) => { testReg = instance - return identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) - }).then(tx => { - const log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - proxy = Proxy.at(log.args.identity) done() }) }) @@ -77,205 +73,311 @@ contract('IdentityManager', (accounts) => { }) }) - it('Only sends transactions initiated by owner', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 should not be able to send transaction') - done() - }).catch(done) - }) - - it('Allows multiple owners', (done) => { - const event = identityManager.OwnerAdded({identity: proxy.address}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - assert.equal(result.args.owner, - user2, - 'Owner key is set in event') - assert.equal(result.args.instigator, - user1, - 'Instigator key is set in event') + describe('existing identity', () => { + before(done => { + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + done() + }).catch(e => { + console.log(e) + done() + }) }) - identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) - }).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + // beforeEach(() => evm.snapshot()) + // afterEach(() => evm.revert()) - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) - }).then((tx) => { - return evm_increaseTime(1) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 can now send transaction') - done() - }).catch(done) - }) - - it('Allows recoveryKey to add owner', (done) => { - const event = identityManager.OwnerAdded({identity: proxy.address}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - assert.equal(result.args.owner, - user3, - 'Owner key is set in event') - assert.equal(result.args.instigator, - recoveryKey, - 'Instigator key is set in event') - }) - identityManager.addOwnerForRecovery(proxy.address, user3, {from: recoveryKey}).then(() => { + it('allow transactions initiated by owner', (done) => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + done() + }).catch(done) + }) + it('don\'t allow transactions initiated by non owner', (done) => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) - }).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User3 should not yet be able to send transaction') + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { + assert.isNotOk(true, 'This should have thrown an error in contract') + done() + }).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) - return evm_increaseTime(86400) - }).then(() => { + it('don\'t allow transactions initiated by recoveryKey', (done) => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) - }).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User3 can now send transaction') - done() - }).catch(done) - }) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: recoveryKey}).then(() => { + assert.isNotOk(true, 'This should have thrown an error in contract') + done() + }).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) - it('Allows removing of owners', (done) => { - identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { - return evm_increaseTime(1) - }).then(() => { - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User2 should be able to send transaction') - }).then(() => { - const event = identityManager.OwnerRemoved({identity: proxy.address}) + it('owner can add other owner', (done) => { + const event = identityManager.OwnerAdded({identity: proxy.address}) event.watch((error, result) => { if (error) throw Error(error) event.stopWatching() assert.equal(result.args.owner, - user2, - 'Owner key is set in event') + user5, + 'Owner key is set in event') assert.equal(result.args.instigator, user1, - 'Instigator key is set in event') + 'Instigator key is set in event') + done() }) - return identityManager.removeOwner(proxy.address, user2, {from: user1}) - }).then((tx) => { - return evm_increaseTime(1) - }).then(() => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) - }).then((tx) => { - return evm_increaseTime(1) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 can not send transaction now') - done() - }).catch(done) - }) + identityManager.addOwner(proxy.address, user5, {from: user1}).catch(error => { + console.log(error) + // assert.isNotOk(error, 'there should nor be an error') + done() + }) + }) - it('Allows changing of recoveryKey', (done) => { - const event = identityManager.RecoveryChanged({identity: proxy.address}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - assert.equal(result.args.recoveryKey, - recoveryKey2, - 'New recovery key is set in event') - assert.equal(result.args.instigator, - user1, - 'Instigator key is set in event') + it('non-owner can not add other owner', (done) => { + identityManager.addOwner(proxy.address, user4, {from: user3}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) }) - identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user1}).then(() => { - return evm_increaseTime(1) - }).then(() => { - identityManager.OwnerAdded({identity: proxy.address}).watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - assert.equal(result.args.owner, - user4, - 'New owner is set in event') - assert.equal(result.args.instigator, - recoveryKey2, - 'Instigator key is set in event') + + describe('new owner added by owner', () => { + before(done => { + // Deal with rate limiter + evm_increaseTime(360).then(() => { + return identityManager.addOwner(proxy.address, user2, {from: user1}) + }).then((tx) => { + console.log(tx) + done() + }).catch(error => { + console.log(error) + done() + }) }) - return identityManager.addOwnerForRecovery(proxy.address, user4, {from: recoveryKey2}) - }).then(() => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) - }).then(() => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) - }).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'user4 should not yet be able to send transaction') + it('within first hour is not allowed transactions', (done) => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { + assert.isNotOk(true, 'This should have thrown an error in contract') + done() + }).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) - return evm_increaseTime(86401) - }).then(() => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) - }).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User4 can now send transaction') - done() - }).catch(done) + describe('after an hour', () => { + before(() => evm_increaseTime(36000)) + it('Allow transactions', (done) => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 should be able to send transaction') + done() + }).catch(done) + }) + + it('can not add other owner yet', (done) => { + identityManager.addOwner(proxy.address, user4, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + + it('can not remove other owner yet', (done) => { + identityManager.removeOwner(proxy.address, user1, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + + it('can not change recoveryKey yet', (done) => { + identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + }) + + describe('after a day', () => { + before(() => evm_increaseTime(86401)) + + it('can add new owner', (done) => { + identityManager.addOwner(proxy.address, user3, {from: user2}).then(tx => { + console.log(tx) + const log = tx.logs[0] + assert.equal(log.args.owner, + user3, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) + }) + }) + + // it('Allows recoveryKey to add owner', (done) => { + // const event = identityManager.OwnerAdded({identity: proxy.address}) + // event.watch((error, result) => { + // if (error) throw Error(error) + // event.stopWatching() + // assert.equal(result.args.owner, + // user3, + // 'Owner key is set in event') + // assert.equal(result.args.instigator, + // recoveryKey, + // 'Instigator key is set in event') + // }) + // identityManager.addOwnerForRecovery(proxy.address, user3, {from: recoveryKey}).then(() => { + // // Encode the transaction to send to the Owner contract + // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + // }).then(() => { + // // Verify that the proxy address is logged as the sender + // return testReg.registry.call(proxy.address) + // }).then((regData) => { + // assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + + // // Encode the transaction to send to the Owner contract + // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) + // }).then((tx) => { + // // Verify that the proxy address is logged as the sender + // return testReg.registry.call(proxy.address) + // }).then((regData) => { + // assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User3 should not yet be able to send transaction') + + // return evm_increaseTime(86400) + // }).then(() => { + // // Encode the transaction to send to the Owner contract + // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) + // }).then((tx) => { + // // Verify that the proxy address is logged as the sender + // return testReg.registry.call(proxy.address) + // }).then((regData) => { + // assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User3 can now send transaction') + // done() + // }).catch(done) + // }) + +// it('Allows removing of owners', (done) => { +// identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { +// return evm_increaseTime(1) +// }).then(() => { +// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) +// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) +// }).then(() => { +// // Verify that the proxy address is logged as the sender +// return testReg.registry.call(proxy.address) +// }).then((regData) => { +// assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User2 should be able to send transaction') +// }).then(() => { +// const event = identityManager.OwnerRemoved({identity: proxy.address}) +// event.watch((error, result) => { +// if (error) throw Error(error) +// event.stopWatching() +// assert.equal(result.args.owner, +// user2, +// 'Owner key is set in event') +// assert.equal(result.args.instigator, +// user1, +// 'Instigator key is set in event') +// }) +// return identityManager.removeOwner(proxy.address, user2, {from: user1}) +// }).then((tx) => { +// return evm_increaseTime(1) +// }).then(() => { +// // Encode the transaction to send to the Owner contract +// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) +// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) +// }).then((tx) => { +// return evm_increaseTime(1) +// }).then(() => { +// // Verify that the proxy address is logged as the sender +// return testReg.registry.call(proxy.address) +// }).then((regData) => { +// assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 can not send transaction now') +// done() +// }).catch(done) +// }) + +// it('Allows changing of recoveryKey', (done) => { +// const event = identityManager.RecoveryChanged({identity: proxy.address}) +// event.watch((error, result) => { +// if (error) throw Error(error) +// event.stopWatching() +// assert.equal(result.args.recoveryKey, +// recoveryKey2, +// 'New recovery key is set in event') +// assert.equal(result.args.instigator, +// user1, +// 'Instigator key is set in event') +// }) +// identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user1}).then(() => { +// return evm_increaseTime(1) +// }).then(() => { +// identityManager.OwnerAdded({identity: proxy.address}).watch((error, result) => { +// if (error) throw Error(error) +// event.stopWatching() +// assert.equal(result.args.owner, +// user4, +// 'New owner is set in event') +// assert.equal(result.args.instigator, +// recoveryKey2, +// 'Instigator key is set in event') +// }) +// return identityManager.addOwnerForRecovery(proxy.address, user4, {from: recoveryKey2}) +// }).then(() => { +// // Encode the transaction to send to the Owner contract +// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) +// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) +// }).then(() => { +// // Verify that the proxy address is logged as the sender +// return testReg.registry.call(proxy.address) +// }).then((regData) => { +// assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + +// // Encode the transaction to send to the Owner contract +// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) +// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) +// }).then((tx) => { +// // Verify that the proxy address is logged as the sender +// return testReg.registry.call(proxy.address) +// }).then((regData) => { +// assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'user4 should not yet be able to send transaction') + +// return evm_increaseTime(86401) +// }).then(() => { +// // Encode the transaction to send to the Owner contract +// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) +// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) +// }).then((tx) => { +// // Verify that the proxy address is logged as the sender +// return testReg.registry.call(proxy.address) +// }).then((regData) => { +// assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User4 can now send transaction') +// done() +// }).catch(done) +// }) }) }) From 03a40ff27dd64a734013d2b7165681f615af443a Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Tue, 23 May 2017 21:06:22 -0600 Subject: [PATCH 12/53] set explicit 0.4.8 pragma --- contracts/IdentityManager.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index f5eec09..e550c7b 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.4; +pragma solidity 0.4.8; import "./Proxy.sol"; contract IdentityManager { From 03a546d137e8d518fa4538b05d7e3951949725b5 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Tue, 23 May 2017 21:15:14 -0600 Subject: [PATCH 13/53] Configurable time locks --- contracts/IdentityManager.sol | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index e550c7b..5603c21 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -2,6 +2,10 @@ pragma solidity 0.4.8; import "./Proxy.sol"; contract IdentityManager { + uint adminTimeLock; + uint userTimeLock; + uint adminRate; + event IdentityCreated( address indexed identity, address indexed creator, @@ -28,12 +32,12 @@ contract IdentityManager { mapping(address => uint) limiter; modifier onlyOwner(address identity) { - if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 hours) <= now ) _ ; + if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + userTimeLock) <= now ) _ ; else throw; } modifier onlyOlderOwner(address identity) { - if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + 1 days) <= now) _ ; + if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + adminTimeLock) <= now) _ ; else throw; } @@ -43,17 +47,27 @@ contract IdentityManager { } modifier rateLimited() { - if (limiter[msg.sender] < (now - 1 hours)) { + if (limiter[msg.sender] < (now - adminRate)) { limiter[msg.sender] = now; _ ; } else throw; } + // Instantiate IdentityManager with the following limits: + // - userTimeLock - Time before new owner can control proxy + // - adminTimeLock - Time before new owner can add/remove owners + // - adminRate - Time period used for rate limiting a given key for admin functionality + function IdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate) { + adminTimeLock = _adminTimeLock; + userTimeLock = _userTimeLock; + adminRate = _adminRate; + } + // Factory function // gas 289,311 function CreateIdentity(address owner, address recoveryKey) { Proxy identity = new Proxy(); - owners[identity][owner] = now - 1 days; // This is to ensure original owner has full power from day one + owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[identity] = recoveryKey; IdentityCreated(identity, msg.sender, owner, recoveryKey); } @@ -62,26 +76,26 @@ contract IdentityManager { // Note they also have to change the owner of the Proxy over to this, but after calling this function registerIdentity(address owner, address recoveryKey) { if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business - owners[msg.sender][owner] = now - 1 days; // This is to ensure original owner has full power from day one + owners[msg.sender][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[msg.sender] = recoveryKey; IdentityCreated(msg.sender, msg.sender, owner, recoveryKey); } - + // Primary forward function function forwardTo(Proxy identity, address destination, uint value, bytes data) onlyOwner(identity) { identity.forward(destination, value, data); } // an owner can add a new device instantly function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited { - owners[identity][newOwner] = now + 1 days; + owners[identity][newOwner] = now + adminTimeLock; OwnerAdded(identity, newOwner, msg.sender); } // a recovery key owner can add a new device with 1 days wait time function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) rateLimited { if (owners[identity][newOwner] > 0) throw; - owners[identity][newOwner] = now + 1 days; + owners[identity][newOwner] = now + adminTimeLock; OwnerAdded(identity, newOwner, msg.sender); } From 9f8767efc931572227a1b68f56e76a38c496fe83 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Wed, 24 May 2017 15:28:52 -0600 Subject: [PATCH 14/53] Pushing refactored tests. Still failing. --- test/IdentityManager.js | 61 +++++++++++++++++++++++++---------------- test/evmSnapshots.js | 32 +++++++++++++++++++++ 2 files changed, 69 insertions(+), 24 deletions(-) create mode 100644 test/evmSnapshots.js diff --git a/test/IdentityManager.js b/test/IdentityManager.js index e8887d1..e06e895 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -1,5 +1,6 @@ const lightwallet = require('eth-signer') const evm_increaseTime = require('./evmIncreaseTime.js') +const snapshots = require('./evmSnapshots.js') const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') @@ -10,6 +11,10 @@ web3.eth = Promise.promisifyAll(web3.eth) const LOG_NUMBER_1 = 1234 const LOG_NUMBER_2 = 2345 +const userTimeLock = 100; +const adminTimeLock = 1000; +const adminRate = 200; + contract('IdentityManager', (accounts) => { let proxy let deployedProxy @@ -25,6 +30,8 @@ contract('IdentityManager', (accounts) => { let recoveryKey let recoveryKey2 + let snapshotId + before(done => { // Truffle deploys contracts with accounts[0] user1 = accounts[0] @@ -35,18 +42,26 @@ contract('IdentityManager', (accounts) => { user5 = accounts[5] recoveryKey = accounts[8] recoveryKey2 = accounts[9] - IdentityManager.deployed().then((instance) => { + IdentityManager.new(userTimeLock, adminTimeLock, adminRate).then((instance) => { identityManager = instance - return Proxy.new({from: accounts[0]}) + return Proxy.new({from: user1}) }).then((instance) => { deployedProxy = instance return TestRegistry.deployed() }).then((instance) => { testReg = instance + // return snapshots.snapshot() + // }).then(id => { + // snapshotId = id done() }) }) + // afterEach(done => { + // snapshots.revert(snapshotId) + // done() + // }) + it('Correctly creates Identity', (done) => { let log identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { @@ -62,20 +77,24 @@ contract('IdentityManager', (accounts) => { assert.equal(log.args.creator, nobody, 'Creator is set in event') - // Check that the mapping has correct proxy address - return compareCode(log.args.identity, deployedProxy.address) - }).then(() => { - Proxy.at(log.args.identity).owner.call().then((proxyOwner) => { - assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') - done() - }).catch(done) + // TODO find out why this all of a sudden doesn't work + // return compareCode(log.args.identity, deployedProxy.address) + // }).then(() => { + return Proxy.at(log.args.identity).owner.call() + }).then((proxyOwner) => { + assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') + done() + }).catch((error) => { + console.log(error) + done() }) }) describe('existing identity', () => { - before(done => { + beforeEach(done => { identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { + // console.log(tx) const log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') proxy = Proxy.at(log.args.identity) @@ -85,8 +104,6 @@ contract('IdentityManager', (accounts) => { done() }) }) - // beforeEach(() => evm.snapshot()) - // afterEach(() => evm.revert()) it('allow transactions initiated by owner', (done) => { // Encode the transaction to send to the Owner contract @@ -139,7 +156,7 @@ contract('IdentityManager', (accounts) => { }) identityManager.addOwner(proxy.address, user5, {from: user1}).catch(error => { console.log(error) - // assert.isNotOk(error, 'there should nor be an error') + assert.isNotOk(error, 'there should nor be an error') done() }) }) @@ -152,11 +169,8 @@ contract('IdentityManager', (accounts) => { }) describe('new owner added by owner', () => { - before(done => { - // Deal with rate limiter - evm_increaseTime(360).then(() => { - return identityManager.addOwner(proxy.address, user2, {from: user1}) - }).then((tx) => { + beforeEach(done => { + identityManager.addOwner(proxy.address, user2, {from: user1}).then((tx) => { console.log(tx) done() }).catch(error => { @@ -165,7 +179,7 @@ contract('IdentityManager', (accounts) => { }) }) - it('within first hour is not allowed transactions', (done) => { + it('within userTimeLock is not allowed transactions', (done) => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { @@ -177,8 +191,8 @@ contract('IdentityManager', (accounts) => { }) }) - describe('after an hour', () => { - before(() => evm_increaseTime(36000)) + describe('after userTimeLock', () => { + beforeEach(() => evm_increaseTime(userTimeLock)) it('Allow transactions', (done) => { // Encode the transaction to send to the Owner contract let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) @@ -213,12 +227,11 @@ contract('IdentityManager', (accounts) => { }) }) - describe('after a day', () => { - before(() => evm_increaseTime(86401)) + describe('after adminTimeLock', () => { + beforeEach(() => evm_increaseTime(adminTimeLock)) it('can add new owner', (done) => { identityManager.addOwner(proxy.address, user3, {from: user2}).then(tx => { - console.log(tx) const log = tx.logs[0] assert.equal(log.args.owner, user3, diff --git a/test/evmSnapshots.js b/test/evmSnapshots.js new file mode 100644 index 0000000..a709b72 --- /dev/null +++ b/test/evmSnapshots.js @@ -0,0 +1,32 @@ +function snapshot () { + return new Promise(function(resolve, reject){ + web3.currentProvider.sendAsync( + { + jsonrpc: "2.0", + method: "evm_snapshot", + params: [], + id: 0 + }, + resolve + ) + }) +} + +function revert (id) { + return new Promise(function(resolve, reject){ + web3.currentProvider.sendAsync( + { + jsonrpc: "2.0", + method: "evm_revert", + params: [id], + id: 0 + }, + resolve + ) + }) +} + +module.exports = { + snapshot: snapshot, + revert: revert +} From 61097dec1facdea101be710400e30eef2cc3d163 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Wed, 24 May 2017 19:46:24 -0600 Subject: [PATCH 15/53] Fix time lock calculations and rate limiter --- contracts/IdentityManager.sol | 20 ++++++++++---------- test/IdentityManager.js | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index 5603c21..ecb8b42 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -29,7 +29,7 @@ contract IdentityManager { mapping(address => mapping(address => uint)) owners; mapping(address => address) recoveryKeys; - mapping(address => uint) limiter; + mapping(address => mapping(address => uint)) limiter; modifier onlyOwner(address identity) { if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + userTimeLock) <= now ) _ ; @@ -46,9 +46,9 @@ contract IdentityManager { else throw; } - modifier rateLimited() { - if (limiter[msg.sender] < (now - adminRate)) { - limiter[msg.sender] = now; + modifier rateLimited(Proxy identity) { + if (limiter[identity][msg.sender] < (now - adminRate)) { + limiter[identity][msg.sender] = now; _ ; } else throw; } @@ -87,26 +87,26 @@ contract IdentityManager { } // an owner can add a new device instantly - function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited { - owners[identity][newOwner] = now + adminTimeLock; + function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited(identity) { + owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, msg.sender); } // a recovery key owner can add a new device with 1 days wait time - function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) rateLimited { + function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) rateLimited(identity) { if (owners[identity][newOwner] > 0) throw; - owners[identity][newOwner] = now + adminTimeLock; + owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, msg.sender); } // an owner can remove another owner instantly - function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) rateLimited { + function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) rateLimited(identity) { owners[identity][owner] = 0; OwnerRemoved(identity, owner, msg.sender); } // an owner can add change the recoverykey whenever they want to - function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) rateLimited { + function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) rateLimited(identity) { recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, msg.sender); } diff --git a/test/IdentityManager.js b/test/IdentityManager.js index e06e895..9fc9a5c 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -171,7 +171,7 @@ contract('IdentityManager', (accounts) => { describe('new owner added by owner', () => { beforeEach(done => { identityManager.addOwner(proxy.address, user2, {from: user1}).then((tx) => { - console.log(tx) + // console.log(tx) done() }).catch(error => { console.log(error) From eca4abc68f595e9b40b03cd712c38eb86bdebb24 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Wed, 24 May 2017 19:58:36 -0600 Subject: [PATCH 16/53] Add remaining tests --- test/IdentityManager.js | 287 ++++++++++++++++++++-------------------- 1 file changed, 143 insertions(+), 144 deletions(-) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index 9fc9a5c..a4e1e3e 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -245,152 +245,151 @@ contract('IdentityManager', (accounts) => { done() }) }) + + it('can remove other owner yet', (done) => { + identityManager.removeOwner(proxy.address, user1, {from: user2}).then(tx => { + const log = tx.logs[0] + assert.equal(log.args.owner, + user1, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) + + it('can change recoveryKey yet', (done) => { + identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).then(tx => { + const log = tx.logs[0] + assert.equal(log.args.recoveryKey, + recoveryKey2, + 'recoveryKey key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) }) }) - // it('Allows recoveryKey to add owner', (done) => { - // const event = identityManager.OwnerAdded({identity: proxy.address}) - // event.watch((error, result) => { - // if (error) throw Error(error) - // event.stopWatching() - // assert.equal(result.args.owner, - // user3, - // 'Owner key is set in event') - // assert.equal(result.args.instigator, - // recoveryKey, - // 'Instigator key is set in event') - // }) - // identityManager.addOwnerForRecovery(proxy.address, user3, {from: recoveryKey}).then(() => { - // // Encode the transaction to send to the Owner contract - // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) - // }).then(() => { - // // Verify that the proxy address is logged as the sender - // return testReg.registry.call(proxy.address) - // }).then((regData) => { - // assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - - // // Encode the transaction to send to the Owner contract - // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) - // }).then((tx) => { - // // Verify that the proxy address is logged as the sender - // return testReg.registry.call(proxy.address) - // }).then((regData) => { - // assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User3 should not yet be able to send transaction') - - // return evm_increaseTime(86400) - // }).then(() => { - // // Encode the transaction to send to the Owner contract - // let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - // return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user3}) - // }).then((tx) => { - // // Verify that the proxy address is logged as the sender - // return testReg.registry.call(proxy.address) - // }).then((regData) => { - // assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User3 can now send transaction') - // done() - // }).catch(done) - // }) - -// it('Allows removing of owners', (done) => { -// identityManager.addOwner(proxy.address, user2, {from: user1}).then(() => { -// return evm_increaseTime(1) -// }).then(() => { -// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) -// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) -// }).then(() => { -// // Verify that the proxy address is logged as the sender -// return testReg.registry.call(proxy.address) -// }).then((regData) => { -// assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User2 should be able to send transaction') -// }).then(() => { -// const event = identityManager.OwnerRemoved({identity: proxy.address}) -// event.watch((error, result) => { -// if (error) throw Error(error) -// event.stopWatching() -// assert.equal(result.args.owner, -// user2, -// 'Owner key is set in event') -// assert.equal(result.args.instigator, -// user1, -// 'Instigator key is set in event') -// }) -// return identityManager.removeOwner(proxy.address, user2, {from: user1}) -// }).then((tx) => { -// return evm_increaseTime(1) -// }).then(() => { -// // Encode the transaction to send to the Owner contract -// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) -// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}) -// }).then((tx) => { -// return evm_increaseTime(1) -// }).then(() => { -// // Verify that the proxy address is logged as the sender -// return testReg.registry.call(proxy.address) -// }).then((regData) => { -// assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'User2 can not send transaction now') -// done() -// }).catch(done) -// }) - -// it('Allows changing of recoveryKey', (done) => { -// const event = identityManager.RecoveryChanged({identity: proxy.address}) -// event.watch((error, result) => { -// if (error) throw Error(error) -// event.stopWatching() -// assert.equal(result.args.recoveryKey, -// recoveryKey2, -// 'New recovery key is set in event') -// assert.equal(result.args.instigator, -// user1, -// 'Instigator key is set in event') -// }) -// identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user1}).then(() => { -// return evm_increaseTime(1) -// }).then(() => { -// identityManager.OwnerAdded({identity: proxy.address}).watch((error, result) => { -// if (error) throw Error(error) -// event.stopWatching() -// assert.equal(result.args.owner, -// user4, -// 'New owner is set in event') -// assert.equal(result.args.instigator, -// recoveryKey2, -// 'Instigator key is set in event') -// }) -// return identityManager.addOwnerForRecovery(proxy.address, user4, {from: recoveryKey2}) -// }).then(() => { -// // Encode the transaction to send to the Owner contract -// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) -// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) -// }).then(() => { -// // Verify that the proxy address is logged as the sender -// return testReg.registry.call(proxy.address) -// }).then((regData) => { -// assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - -// // Encode the transaction to send to the Owner contract -// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) -// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) -// }).then((tx) => { -// // Verify that the proxy address is logged as the sender -// return testReg.registry.call(proxy.address) -// }).then((regData) => { -// assert.notEqual(regData.toNumber(), LOG_NUMBER_2, 'user4 should not yet be able to send transaction') - -// return evm_increaseTime(86401) -// }).then(() => { -// // Encode the transaction to send to the Owner contract -// let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) -// return identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user4}) -// }).then((tx) => { -// // Verify that the proxy address is logged as the sender -// return testReg.registry.call(proxy.address) -// }).then((regData) => { -// assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User4 can now send transaction') -// done() -// }).catch(done) -// }) + describe('new owner added by recoveryKey', () => { + beforeEach(done => { + identityManager.addOwnerForRecovery(proxy.address, user2, {from: recoveryKey}).then((tx) => { + // console.log(tx) + done() + }).catch(error => { + console.log(error) + done() + }) + }) + + it('within userTimeLock is not allowed transactions', (done) => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { + assert.isNotOk(true, 'This should have thrown an error in contract') + done() + }).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + + describe('after userTimeLock', () => { + beforeEach(() => evm_increaseTime(userTimeLock)) + it('Allow transactions', (done) => { + // Encode the transaction to send to the Owner contract + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then((tx) => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 should be able to send transaction') + done() + }).catch(done) + }) + + it('can not add other owner yet', (done) => { + identityManager.addOwner(proxy.address, user4, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + + it('can not remove other owner yet', (done) => { + identityManager.removeOwner(proxy.address, user1, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + + it('can not change recoveryKey yet', (done) => { + identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).catch((error) => { + assert.match(error, /invalid JUMP/, 'throws an error') + done() + }) + }) + }) + + describe('after adminTimeLock', () => { + beforeEach(() => evm_increaseTime(adminTimeLock)) + + it('can add new owner', (done) => { + identityManager.addOwner(proxy.address, user3, {from: user2}).then(tx => { + const log = tx.logs[0] + assert.equal(log.args.owner, + user3, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) + + it('can remove other owner yet', (done) => { + identityManager.removeOwner(proxy.address, user1, {from: user2}).then(tx => { + const log = tx.logs[0] + assert.equal(log.args.owner, + user1, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) + + it('can change recoveryKey yet', (done) => { + identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).then(tx => { + const log = tx.logs[0] + assert.equal(log.args.recoveryKey, + recoveryKey2, + 'recoveryKey key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + done() + }).catch(error => { + console.log(error) + done() + }) + }) + }) + }) }) }) From 3ef76aacaa9aa68c7350e5fd2ec20ffd2c470258 Mon Sep 17 00:00:00 2001 From: Christian Lundkvist Date: Mon, 5 Jun 2017 12:36:31 -0400 Subject: [PATCH 17/53] Add function to migrate IdentityManager. --- contracts/IdentityManager.sol | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index ecb8b42..ad8b74c 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -30,6 +30,8 @@ contract IdentityManager { mapping(address => mapping(address => uint)) owners; mapping(address => address) recoveryKeys; mapping(address => mapping(address => uint)) limiter; + mapping(address => uint) migrationInitiated; + mapping(address => address) migrationNewAddress; modifier onlyOwner(address identity) { if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + userTimeLock) <= now ) _ ; @@ -111,4 +113,25 @@ contract IdentityManager { RecoveryChanged(identity, recoveryKey, msg.sender); } + // an owner can migrate away to a new IdentityManager + function initiateMigration(Proxy identity, address newIdManager) onlyOlderOwner(identity) { + migrationInitiated[identity] = now; + migrationNewAddress[identity] = newIdManager; + } + + // any owner can cancel a migration + function cancelMigration(Proxy identity, address newIdManager) onlyOwner(identity) { + migrationInitiated[identity] = 0; + migrationNewAddress[identity] = 0; + } + + // owner needs to finalize migration once adminTimeLock time has passed + function finalizeMigration(Proxy identity, address newIdManager) onlyOlderOwner(identity) { + if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { + migrationInitiated[identity] = 0; + migrationNewAddress[identity] = 0; + identity.transfer(migrationNewAddress[identity]); + } + } } + From e581692c43528d0d37f67cb419ef3cbb841448f1 Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Wed, 7 Jun 2017 18:41:03 -0400 Subject: [PATCH 18/53] Migration: added events, fixed bug, and cleaned up --- contracts/IdentityManager.sol | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index ad8b74c..1b9936c 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -26,6 +26,21 @@ contract IdentityManager { address indexed identity, address indexed recoveryKey, address instigator); + + event MigrationInitiated( + address indexed identity, + address indexed newIdManager, + address instigator); + + event MigrationCanceled( + address indexed identity, + address indexed newIdManager, + address instigator); + + event MigrationFinalized( + address indexed identity, + address indexed newIdManager, + address instigator); mapping(address => mapping(address => uint)) owners; mapping(address => address) recoveryKeys; @@ -117,20 +132,27 @@ contract IdentityManager { function initiateMigration(Proxy identity, address newIdManager) onlyOlderOwner(identity) { migrationInitiated[identity] = now; migrationNewAddress[identity] = newIdManager; + MigrationInitiated(identity, newIdManager, msg.sender); } // any owner can cancel a migration - function cancelMigration(Proxy identity, address newIdManager) onlyOwner(identity) { + function cancelMigration(Proxy identity) onlyOwner(identity) { + address canceledManager = migrationNewAddress[identity]; migrationInitiated[identity] = 0; migrationNewAddress[identity] = 0; + MigrationCanceled(identity, canceledManager, msg.sender); } // owner needs to finalize migration once adminTimeLock time has passed - function finalizeMigration(Proxy identity, address newIdManager) onlyOlderOwner(identity) { + // WARNING: before transfering to a new address, make sure this address is "ready to recieve" the proxy. + // Not doing so risks the proxy becoming stuck. + function finalizeMigration(Proxy identity) onlyOlderOwner(identity) { if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { + address newIdManager = migrationNewAddress[identity]; migrationInitiated[identity] = 0; migrationNewAddress[identity] = 0; - identity.transfer(migrationNewAddress[identity]); + identity.transfer(newIdManager); + MigrationFinalized(identity, newIdManager, msg.sender); } } } From fd749c0412dcf7b0e46e666a0d6f677ce4e24fb7 Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 8 Jun 2017 12:17:23 -0400 Subject: [PATCH 19/53] Migration Tests Added tests for migration. Would love some feedback on them :~) --- test/IdentityManager.js | 149 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/test/IdentityManager.js b/test/IdentityManager.js index a4e1e3e..b00e987 100644 --- a/test/IdentityManager.js +++ b/test/IdentityManager.js @@ -392,4 +392,153 @@ contract('IdentityManager', (accounts) => { }) }) }) + describe('migration', () => { + let newIdenManager + beforeEach(done => { + identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + return IdentityManager.new(userTimeLock, adminTimeLock, adminRate) + }).then((instance) => { + newIdenManager = instance + //user2 is now a younger owner, while user1 is an olderowner + return identityManager.addOwner(proxy.address, user2) + }).then(tx => { + let log = tx.logs[0] + assert.equal(log.event, 'OwnerAdded', 'wrong event') + assert.equal(log.args.identity, proxy.address, 'wrong proxy') + assert.equal(log.args.owner, user2, 'wrong owner added') + assert.equal(log.args.instigator, user1, 'wrong initiator') + done() + }).catch(e => { + console.log(e) + done() + }) + }) + + it('correct keys can start transfer', (done) => { + //olderOwner should be able to start transfer + identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { + let log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'migrating to wrong location') + //young owner should not be able to start transfer + return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user2}) + }).then(tx => { + assert.isFalse(true, 'Should have thrown an error here') + }).catch((error) => { + assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') + }).then(() => { + //non-owner should not be able to start transfer + return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: nobody}) + }).then(() => { + assert.isFalse(true, 'Should have thrown an error here') + }).catch((error) => { + assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') + done() + }) + }) + + it('correct keys can cancel migration', (done) => { + identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { + let log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'started migrating from wrong user') + return identityManager.cancelMigration(proxy.address, {from: user1}) + }).then(tx => { + let log = tx.logs[0] + assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') + assert.equal(log.args.instigator, user1, 'canceled migrating from wrong user') + //set up migration again + return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}) + }).then(tx => { + //Second migration attempt, should allow + let log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'started migrating from wrong person') + return identityManager.cancelMigration(proxy.address, {from: user2}) + }).then(tx => { + //young owner should also be able to cancel migration + let log = tx.logs[0] + assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') + assert.equal(log.args.instigator, user2, 'canceled migrating from wrong person') + return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}) + }).then(() => { + //Don't need to check setup again + return identityManager.cancelMigration(proxy.address, {from: nobody}) + }).then(tx => { + assert.isFalse(true, 'Should have thrown error') + }).catch(error => { + assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') + }).then(() => { + done() + }) + }) + + it('correct keys should finilize transfer', (done) => { + identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { + return identityManager.finalizeMigration(proxy.address, {from: nobody}) + }).then(() => { + assert.isFalse(true, 'non-owner should not be able to finalize') + }).catch(error => { + assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'should have thrown, did not') + return identityManager.finalizeMigration(proxy.address, {from: user2}) + }).then(() => { + assert.isFalse(true, 'young owner should not be able to finalize') + //has to be greater than the adminTimeLock past to be finalized + }).catch(error => { + assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'should have thrown, did not') + }).then(() => { + evm_increaseTime(2 * adminTimeLock) + }).then(() => { + return identityManager.finalizeMigration(proxy.address, {from: user1}) + }).then(tx => { + //console.log(tx.recipt) + let log = tx.logs[0] + assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') + assert.equal(log.args.instigator, user1, 'finalized migrating from wrong person') + }).then(() => { + done() + }) + }) + + it('should be owner of new identityManager after successful transfer', (done) => { + identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('registerIdentity', ['address', 'address'], [user1, recoveryKey]) + return identityManager.forwardTo(proxy.address, newIdenManager.address, 0, data, {from: user1}) + }).then(() => { + //increase time until migration can be finialized + evm_increaseTime(2 * adminTimeLock) + }).then(() => { + return identityManager.finalizeMigration(proxy.address, newIdenManager.address, {from: user1}) + }).then(tx => { + let log = tx.logs[0] + assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') + assert.equal(log.args.instigator, user1, 'finalized migrating from wrong user') + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + return newIdenManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) + }).then(tx => { + // Verify that the proxy address is logged as the sender + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction from new contract') + done() + }) + }) + }) }) From 4f84f012d2b0844e2776103de7284f9334aa1535 Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 8 Jun 2017 15:43:37 -0400 Subject: [PATCH 20/53] Stopped recoveryKey from ever equaling zero. This stops the following attack: Assume there is a single evil owner and any number of good owners. 1. EO calls changeRecovery and changes the recovery to 0. 2. EO then calls forwardTo, and sends data through the proxy to the registerIdentity function in the IdentityManager. 3. In this forward, the EO provides a new ownerKey and a recoveryKey of 0 to the registerIdentity function. Thus, the conditional in the first line is false, and this does not throw. 4. The new owner is then added immediately with full power. 5. Thus, the evilOwner could effectively add a ton of new evil owners and overpower the good identity. --- contracts/IdentityManager.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index 1b9936c..33727e8 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -83,6 +83,7 @@ contract IdentityManager { // Factory function // gas 289,311 function CreateIdentity(address owner, address recoveryKey) { + if (recoveryKey == address(0)) throw; Proxy identity = new Proxy(); owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[identity] = recoveryKey; @@ -92,6 +93,7 @@ contract IdentityManager { // An identity Proxy can use this to register itself with the IdentityManager // Note they also have to change the owner of the Proxy over to this, but after calling this function registerIdentity(address owner, address recoveryKey) { + if (recoveryKey == address(0)) throw; if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business owners[msg.sender][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[msg.sender] = recoveryKey; @@ -124,6 +126,7 @@ contract IdentityManager { // an owner can add change the recoverykey whenever they want to function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) rateLimited(identity) { + if (recoveryKey == address(0)) throw; recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, msg.sender); } From ef6112b349474574d7a7ef9e83cc1e647b357650 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 31 May 2017 08:20:43 +0200 Subject: [PATCH 21/53] Fixed ref to recovery quorum in indes.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index def7865..969ab5a 100644 --- a/index.js +++ b/index.js @@ -5,5 +5,5 @@ module.exports = { IdentityManager: require('./build/contracts/IdentityManager.json'), RecoverableController: require('./build/contracts/RecoverableController.json'), Proxy: require('./build/contracts/Proxy.json'), - RecoveryQuorum: require('./build/contracts/Proxy.json'), + RecoveryQuorum: require('./build/contracts/RecoveryQuorum.json'), } From be34616b45d197dec84db54789272705380b46a4 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 31 May 2017 19:43:53 +0200 Subject: [PATCH 22/53] Bumped version --- RELEASE-NOTES.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7d61270..00b6313 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,5 +1,8 @@ # Release notes +## v1.0.5 +Fixed small bug in js-lib + ## v1.0.4 Deployed contracts on Rinkeby testnet. diff --git a/package.json b/package.json index d9a2a68..f87ad22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uport-identity", - "version": "1.0.4", + "version": "1.0.5", "description": "uPort Contracts for identity", "main": "index.js", "directories": { From 998175ac1d66f2f1228685a3c57d5d965de1828e Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 15 Jun 2017 15:43:01 -0400 Subject: [PATCH 23/53] Add eth-lightwallet to packages --- package.json | 3 +++ yarn.lock | 70 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index f87ad22..c536254 100644 --- a/package.json +++ b/package.json @@ -37,5 +37,8 @@ "truffle": "3.1.2", "truffle-contract": "^1.1.10", "truffle-hdwallet-provider": "0.0.3" + }, + "dependencies": { + "eth-lightwallet": "^2.5.4" } } diff --git a/yarn.lock b/yarn.lock index 0807599..89a0919 100644 --- a/yarn.lock +++ b/yarn.lock @@ -684,10 +684,19 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", "bignumber.js@git+https://github.com/debris/bignumber.js.git#master", "bignumber.js@github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2": +bignumber.js@debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2, "bignumber.js@github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" resolved "https://codeload.github.com/debris/bignumber.js/tar.gz/94d7146671b9719e00a09c29b01a691bc85048c2" +"bignumber.js@git+https://github.com/debris/bignumber.js#master": + version "2.0.7" + resolved "git+https://github.com/debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2" + +"bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": + version "2.0.7" + uid "94d7146671b9719e00a09c29b01a691bc85048c2" + resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + bignumber.js@~2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.1.4.tgz#29b3bb693dbb238e88b72eac2fb89650888b2d59" @@ -704,16 +713,7 @@ bindings@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" -bip39@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.3.0.tgz#e4ee6c6d1bd90ca00ffd57ad446bdf8c017ff484" - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - unorm "^1.3.3" - -bip39@~2.2.0: +bip39@^2.2.0, bip39@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.2.0.tgz#40e73f70674c267f148cdbf8374f2a50be166b0d" dependencies: @@ -772,7 +772,7 @@ bn.js@4.11.6, bn.js@^4.0.0, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" -bn.js@=2.0.4, bn.js@^2.0.0: +bn.js@=2.0.4, bn.js@^2.0.0, bn.js@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.0.4.tgz#220a7cd677f7f1bfa93627ff4193776fe7819480" @@ -922,7 +922,7 @@ buffer-xor@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@^4.9.1: +buffer@^4.9.0, buffer@^4.9.1: version "4.9.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" dependencies: @@ -1229,7 +1229,7 @@ cryptiles@3.x.x: dependencies: boom "4.x.x" -crypto-js@^3.1.4: +crypto-js@^3.1.4, crypto-js@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" @@ -1408,6 +1408,15 @@ elliptic@=3.0.3: hash.js "^1.0.0" inherits "^2.0.1" +elliptic@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-3.1.0.tgz#c21682ef762769b56a74201609105da11d5f60cc" + dependencies: + bn.js "^2.0.3" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + elliptic@^6.2.3, elliptic@^6.3.1: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -1567,6 +1576,23 @@ etag@~1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" +eth-lightwallet@^2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/eth-lightwallet/-/eth-lightwallet-2.5.4.tgz#a2eddaffed9d45b78175afedaac01e167730bb53" + dependencies: + bignumber.js debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2 + bitcore-lib "^0.14.0" + bitcore-mnemonic "^1.2.2" + buffer "^4.9.0" + crypto-js "^3.1.5" + elliptic "^3.1.0" + ethereumjs-tx "^1.1.1" + ethereumjs-util "^5.1.1" + rlp "^2.0.0" + scrypt-async "^1.2.0" + tweetnacl "0.13.2" + web3 "^0.15.3" + eth-signer@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/eth-signer/-/eth-signer-0.2.2.tgz#41296b2ea5f9b227ee580f305c69c21967306eee" @@ -1645,7 +1671,7 @@ ethereumjs-tx@1.1.2: ethereum-common "^0.0.17" ethereumjs-util "^4.5.0" -ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.2, ethereumjs-tx@^1.2.0: +ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.1.2, ethereumjs-tx@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.2.5.tgz#ed36d7ffeb97bc889c61eef1ab76f47a613d8286" dependencies: @@ -1662,7 +1688,7 @@ ethereumjs-util@^4.0.0, ethereumjs-util@^4.0.1, ethereumjs-util@^4.4.0, ethereum rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1: +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.1.1.tgz#122fb38dea747dc62b3aebfc365d1bd48be4b73e" dependencies: @@ -2359,11 +2385,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@=2.0.1, inherits@^2.0.1: +inherits@=2.0.1, inherits@^2.0.1, inherits@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" @@ -4059,7 +4085,7 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -pbkdf2@^3.0.0, pbkdf2@^3.0.3, pbkdf2@^3.0.9: +pbkdf2@^3.0.0, pbkdf2@^3.0.3: version "3.0.9" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" dependencies: @@ -4653,7 +4679,7 @@ sandwich-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-1.0.0.tgz#7830e45797b5933287f1f9b28f871907456262f2" -scrypt-async@^1.3.0: +scrypt-async@^1.2.0, scrypt-async@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-1.3.1.tgz#a11fd6fac981b4b823ee01dee0221169500ddae9" @@ -5595,6 +5621,10 @@ tweetnacl-util@^0.13.3: version "0.13.5" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" +tweetnacl@0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.13.2.tgz#453161770469d45cd266c36404e2bc99a8fa9944" + tweetnacl@0.14.3, tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" From 6f07f58cd66240fa92b52c4c85905fe35a3e059e Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 15 Jun 2017 15:47:51 -0400 Subject: [PATCH 24/53] Add meta-tx contracts --- contracts/MetaIdentityManager.sol | 168 ++++++++++++++++++++++++++++++ contracts/TxRelay.sol | 75 +++++++++++++ 2 files changed, 243 insertions(+) create mode 100644 contracts/MetaIdentityManager.sol create mode 100644 contracts/TxRelay.sol diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol new file mode 100644 index 0000000..856fd13 --- /dev/null +++ b/contracts/MetaIdentityManager.sol @@ -0,0 +1,168 @@ +pragma solidity ^0.4.8; +import "./Proxy.sol"; + +contract MetaIdentityManager { + uint adminTimeLock; + uint userTimeLock; + uint adminRate; + address relay; + + event IdentityCreated( + address indexed identity, + address indexed creator, + address owner, + address indexed recoveryKey); + + event OwnerAdded( + address indexed identity, + address indexed owner, + address instigator); + + event OwnerRemoved( + address indexed identity, + address indexed owner, + address instigator); + + event RecoveryChanged( + address indexed identity, + address indexed recoveryKey, + address instigator); + + event MigrationInitiated( + address indexed identity, + address indexed newIdManager, + address instigator); + + event MigrationCanceled( + address indexed identity, + address indexed newIdManager, + address instigator); + + event MigrationFinalized( + address indexed identity, + address indexed newIdManager, + address instigator); + + mapping(address => mapping(address => uint)) owners; + mapping(address => address) recoveryKeys; + mapping(address => mapping(address => uint)) limiter; + mapping(address => uint) migrationInitiated; + mapping(address => address) migrationNewAddress; + + modifier onlyRelay() { + if (msg.sender == relay) _; + else throw; + } + + modifier onlyOwner(address identity, address sender) { + if (owners[identity][sender] > 0 && (owners[identity][sender] + userTimeLock) <= now ) _ ; + else throw; + } + + modifier onlyOlderOwner(address identity, address sender) { + if (owners[identity][sender] > 0 && (owners[identity][sender] + adminTimeLock) <= now) _ ; + else throw; + } + + modifier onlyRecovery(address identity, address sender) { + if (recoveryKeys[identity] == sender) _ ; + else throw; + } + + modifier rateLimited(Proxy identity, address sender) { + if (limiter[identity][sender] < (now - adminRate)) { + limiter[identity][sender] = now; + _ ; + } else throw; + } + + // Instantiate IdentityManager with the following limits: + // - userTimeLock - Time before new owner can control proxy + // - adminTimeLock - Time before new owner can add/remove owners + // - adminRate - Time period used for rate limiting a given key for admin functionality + function MetaIdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate, address relayAddress) { + adminTimeLock = _adminTimeLock; + userTimeLock = _userTimeLock; + adminRate = _adminRate; + relay = relayAddress; + } + + // Factory function + // gas 289,311 + function CreateIdentity(address owner, address recoveryKey) { + if (recoveryKey == address(0)) throw; + Proxy identity = new Proxy(); + owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one + recoveryKeys[identity] = recoveryKey; + IdentityCreated(identity, msg.sender, owner, recoveryKey); + } + + // An identity Proxy can use this to register itself with the IdentityManager + // Note they also have to change the owner of the Proxy over to this, but after calling this + function registerIdentity(address owner, address recoveryKey) { + if (recoveryKey == address(0)) throw; + if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business + owners[msg.sender][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one + recoveryKeys[msg.sender] = recoveryKey; + IdentityCreated(msg.sender, msg.sender, owner, recoveryKey); + } + + // Primary forward function + function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) payable onlyRelay onlyOwner(identity, sender) { + identity.forward(destination, value, data); + } + + // an owner can add a new device instantly + function addOwner(address sender, Proxy identity, address newOwner) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + owners[identity][newOwner] = now; + OwnerAdded(identity, newOwner, sender); + } + + // a recovery key owner can add a new device with 1 days wait time + function addOwnerForRecovery(address sender, Proxy identity, address newOwner) onlyRelay onlyRecovery(identity, sender) rateLimited(identity, sender) { + if (owners[identity][newOwner] > 0) throw; + owners[identity][newOwner] = now; + OwnerAdded(identity, newOwner, sender); + } + + // an owner can remove another owner instantly + function removeOwner(address sender, Proxy identity, address owner) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + owners[identity][owner] = 0; + OwnerRemoved(identity, owner, sender); + } + + // an owner can add change the recoverykey whenever they want to + function changeRecovery(address sender, Proxy identity, address recoveryKey) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + if (recoveryKey == address(0)) throw; + recoveryKeys[identity] = recoveryKey; + RecoveryChanged(identity, recoveryKey, sender); + } + + // an owner can migrate away to a new IdentityManager + function initiateMigration(address sender, Proxy identity, address newIdManager) onlyRelay onlyOlderOwner(identity, sender) { + migrationInitiated[identity] = now; + migrationNewAddress[identity] = newIdManager; + MigrationInitiated(identity, newIdManager, sender); + } + + // any owner can cancel a migration + function cancelMigration(address sender, Proxy identity) onlyRelay onlyOwner(identity, sender) { + address canceledManager = migrationNewAddress[identity]; + migrationInitiated[identity] = 0; + migrationNewAddress[identity] = 0; + MigrationCanceled(identity, canceledManager, sender); + } + + // owner needs to finalize migration once adminTimeLock time has passed + // WARNING: before transfering to a new address, make sure this address is "ready to recieve" the proxy. + // Not doing so risks the proxy becoming stuck. + function finalizeMigration(address sender, Proxy identity) onlyRelay onlyOlderOwner(identity, sender) { + if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { + address newIdManager = migrationNewAddress[identity]; + migrationInitiated[identity] = 0; + migrationNewAddress[identity] = 0; + identity.transfer(newIdManager); + MigrationFinalized(identity, newIdManager, sender); + } + } +} diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol new file mode 100644 index 0000000..c34ac1a --- /dev/null +++ b/contracts/TxRelay.sol @@ -0,0 +1,75 @@ +pragma solidity ^0.4.8; + +//This contract is meant as a "singleton" forwarding contract. +//Eventually, it will be able to forward any transaction to +//Any contract that is built to accept it. + +contract TxRelay { + + // Note: This is a local nonce. + // Different from the nonce defined w/in protocol. + mapping(address => uint) nonce; + + /* + * @dev Relays normal transactions + * @param destination The address to relay data to + * @param data The bytes necessary to call the function in the destination contract. + Note, the first encoded argument in data must be msg.sender's address + */ + function relayTx(address destination, bytes data) payable { + if (!checkAddress(data, msg.sender)) throw; + + //As no state is updated before, can just throw in the case of a failed call. + if (!destination.call.value(msg.value)(data)) throw; + } + + /* + * @dev Relays meta transactions + * @param sigV, sigR, sigS ECDSA signature on some data to be forwarded + * @param data The bytes necessary to call the function in the destination contract. + Note, the first encoded argument in data must be address of the signer + * @param claimedSender Address of the user who is having tx forwarded + */ + function relayMetaTx(uint8 sigV, bytes32 sigR, bytes32 sigS, + address destination, bytes data, + address claimedSender) { + + // relay :: nonce :: destination :: data :: relayer + bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender); + address addressFromSig = ecrecover(h, sigV, sigR, sigS); + + nonce[claimedSender]++; + + //Validity Checks (if these throw this time, they will always throw) + if (claimedSender != addressFromSig) throw; + if (!checkAddress(data, addressFromSig)) throw; + + //Do not throw, as the nonce should still update to protect against replay attacks + //In the future, this should output an event? This would have some overhead. + if (!destination.call(data)) {} + } + + + /* + * @dev Compares the first arg of a function call to an address + * @param b The byte array that may have an address on the end + * @param address Address to check on the end of the array + (Special thanks to tjade273 for optimization) + */ + function checkAddress(bytes b, address a) constant returns (bool t) { + if (b.length < 36) return false; + assembly { + let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + t := eq(and(mask, a), and(mask, mload(add(b,36)))) + } + } + + /* + * @dev Returns the local nonce of an account. + * @param add The address to return the nonce for. + * @return The specific-to-this-contract nonce of the address provided + */ + function getNonce(address add) constant returns (uint) { + return nonce[add]; + } +} From 3dfb959455acd83c0658ae35256fac1d0fd0abd4 Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 15 Jun 2017 15:52:34 -0400 Subject: [PATCH 25/53] Add migration and update index --- index.js | 2 ++ migrations/4_deploy_meta_tx.js | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 migrations/4_deploy_meta_tx.js diff --git a/index.js b/index.js index 969ab5a..725921e 100644 --- a/index.js +++ b/index.js @@ -6,4 +6,6 @@ module.exports = { RecoverableController: require('./build/contracts/RecoverableController.json'), Proxy: require('./build/contracts/Proxy.json'), RecoveryQuorum: require('./build/contracts/RecoveryQuorum.json'), + TxRelay: require('./build/contracts/TxRelay.json'), + MetaIdentityManager require('./build/contracts/MetaIdentityManager.json'), } diff --git a/migrations/4_deploy_meta_tx.js b/migrations/4_deploy_meta_tx.js new file mode 100644 index 0000000..fb96424 --- /dev/null +++ b/migrations/4_deploy_meta_tx.js @@ -0,0 +1,7 @@ +const MetaIdentityManager = artifacts.require('./MetaIdentityManager.sol') +const TxRelay = artifacts.require('./TxRelay.sol') + +module.exports = function (deployer) { + deployer.deploy(MetaIdentityManager) + deployer.deploy(TxRelay) +} From d71120d8d35092e19f1c79d99e85f7f31a2152d7 Mon Sep 17 00:00:00 2001 From: Nate Rush Date: Thu, 15 Jun 2017 15:53:14 -0400 Subject: [PATCH 26/53] Add basic relay tests --- test/MetaTx.js | 375 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 375 insertions(+) create mode 100644 test/MetaTx.js diff --git a/test/MetaTx.js b/test/MetaTx.js new file mode 100644 index 0000000..4f16630 --- /dev/null +++ b/test/MetaTx.js @@ -0,0 +1,375 @@ +const lightwallet = require('eth-lightwallet') +const evm_increaseTime = require('./evmIncreaseTime.js') +const MetaTxRelay = artifacts.require('TxRelay') +const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const Proxy = artifacts.require('Proxy') +const TestRegistry = artifacts.require('TestRegistry') +const Promise = require('bluebird') +const compareCode = require('./compareCode') +const solsha3 = require('solidity-sha3').default +web3.eth = Promise.promisifyAll(web3.eth) + +let zero = "0000000000000000000000000000000000000000000000000000000000000000" + +//Left packs a (hex) string +function pad(n) { + assert.equal(typeof(n), 'string', "Passed in a non string") + let data + if (n.startsWith("0x")) { + data = '0x' + new Array(64 - n.length + 3).join('0') + n.slice(2); + assert.equal(data.length, 66, "packed incorrectly") + return data; + } else { + data = '0x' + new Array(64 - n.length + 1).join('0') + n + assert.equal(data.length, 66, "packed incorrectly") + return data; + } +} + +function signPayload(relayContract, signingAddr, sendingAddress, destination, + functionName, functionTypes, functionParams, lw, keyFromPw) { + return new Promise( + function (resolve, reject) { + if (functionTypes.length !== functionParams.length || typeof(functionName) !== 'string') { + reject(error) + } + //Prolly should check inputs more thoroughly :@ + let data + let hashInput + let hash + let sig + let retVal = {} + data = '0x' + lightwallet.txutils._encodeFunctionTxData(functionName, functionTypes, functionParams) + + relayContract.getNonce.call(signingAddr).then(currNonce => { + //Tight packing, as Solidity sha3 does + hashInput = relayContract.address + pad(currNonce.toString()).slice(2) + + destination.slice(2) + data.slice(2) + sendingAddress.slice(2) + hash = solsha3(hashInput) + sig = lightwallet.signing.signMsgHash(lw, keyFromPw, hash, signingAddr) + retVal.r = '0x'+sig.r.toString('hex') + retVal.s = '0x'+sig.s.toString('hex') + retVal.v = sig.v //Q: Why is this not converted to hex? + retVal.data = data + retVal.hash = hash + retVal.nonce = currNonce + resolve(retVal) + }) + }) +} + + +const LOG_NUMBER_1 = 1234 +const LOG_NUMBER_2 = 2345 + +const userTimeLock = 100; +const adminTimeLock = 1000; +const adminRate = 200; + +contract('IdentityManagerMetaTx', (accounts) => { + let proxy + let deployedProxy + let testReg + let metaIdentityManager + let txRelay + let user1 + let user2 + let user3 + let user4 + let sender + + let recoveryKey + let recoveryKey2 + + let lw + let keyFromPw + + beforeEach((done) => { + let seed = "pull rent tower word science patrol economy legal yellow kit frequent fat" + + lightwallet.keystore.createVault( + {hdPathString: "m/44'/60'/0'/0", + seedPhrase: seed, + password: "test", + salt: "testsalt" + }, + function (err, keystore) { + + lw = keystore + lw.keyFromPassword("test", function(e,k) { + keyFromPw = k + + lw.generateNewAddress(keyFromPw, 10) + let acct = lw.getAddresses() + + user1 = '0x'+acct[0] + nobody = '0x'+acct[1] // has no authority + user2 = '0x'+acct[2] + user3 = '0x'+acct[3] + user4 = '0x'+acct[4] + recoveryKey = '0x'+acct[8] + recoveryKey2 = '0x'+acct[9] + + sender = accounts[0] + notSender = accounts[1] + + MetaTxRelay.new().then(instance => { + txRelay = instance + return MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + }).then(instance => { + metaIdentityManager = instance + return Proxy.new({from: sender}) + }).then(instance => { + deployedProxy = instance + return TestRegistry.new() + }).then((instance) => { + testReg = instance + return metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}) + }).then(tx => { + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + done() + }) + }) + }) + }) + + it('Correctly creates Identity', (done) => { + let log + metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}).then(tx => { + log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + + assert.equal(log.args.owner, + user1, + 'Owner key is set in event') + assert.equal(log.args.recoveryKey, + recoveryKey, + 'Recovery key is set in event') + assert.equal(log.args.creator, + sender, + 'Creator is set in event') + // Check that the mapping has correct proxy address + + return compareCode(log.args.identity, deployedProxy.address) + }).then(() => { + Proxy.at(log.args.identity).owner.call().then((proxyOwner) => { + assert.equal(proxyOwner, metaIdentityManager.address, 'Proxy owner should be the identity manager') + done() + }).catch(done) + }) + }) + + + it('Sends transactions initiated by owner', (done) => { + // Encode the transaction to send to the Owner contract + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, data] + signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + return txRelay.checkAddress.call(p.data, user1) + }).then(res => { + assert.isTrue(res, "Address should be included as first input in data") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') + //Send another transaction, as well as check that nonce is updated. + data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + return signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + }).then(retVal => { + p = retVal + assert.equal(p.nonce.toString(), "1", "Nonce did not increment") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User1 should be able to send another transaction') + done() + }).catch(done) + }) + + it('Sends properly formatted transactions initiated by non-owner, but MetaIdentityManager stops them', (done) => { + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user2, proxy.address, testReg.address, 0, data] + signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), 0, 'Should have reset the test registry') + return txRelay.checkAddress.call(p.data, user2) + }).then(res => { + assert.isTrue(res, "Address should be included as first input in data") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), 0, 'User2 should not be able to send transaction') + // note: the reason this does not throw an error is that the nonce should be updated. + // thus, while the sub call throws, the relay call itself does not. + // try again, this time should have a different nonce. + data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user2, proxy.address, testReg.address, 0, data] + return signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + }).then(retVal => { + p = retVal + assert.equal(p.nonce.toString(), '1', 'Nonce should have updated, even though sub-call failed') + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), 0, 'User2 should still not be able to send a transaction') + done() + }).catch(done) + }) + + + it('Doesn\'t send transactions initiated by someone claiming to be someone else', (done) => { + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, data] + //Claim to be user1 by encoding their address, but can only sign w/ user2 key, as they don't have user1's key + signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + return txRelay.checkAddress.call(p.data, user1) + }).then(res => { + //This will still pass. User should be able to encode anything they want in data. + assert.isTrue(res, "Address should be included as first input in data") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + }).then(tx => { + assert.isTrue(false, "Transaction above should have failed") + }).catch(error => { + assert.match(error.message, /invalid JUMP/, "should have thrown an error") + }).then(() => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), 0, 'Transaction should not have been processed') + done() + }).catch(done) + }) + + it('Shouldn\'t allow a relayer other than the one allowed', (done) => { + // Encode the transaction to send to the Owner contract + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, data] + //Claim to be user1 by encoding their address, but can only sign w/ their key, as they don't have user1's key + signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + return txRelay.checkAddress.call(p.data, user1) + }).then(res => { + assert.isTrue(res, "Address should be included as first input in data") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: notSender, gas: 3000000}) + }).then(tx => { + assert.isTrue(false, "Transaction above should have failed") + }).catch(error => { + assert.match(error.message, /invalid JUMP/, "should have thrown an error") + }).then(() => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), 0, 'Transaction should not have been processed') + done() + }).catch(done) + }) + + it('should not allow ether to be sent with a meta-tx ether', (done) => { + // Encode the transaction to send to the Owner contract + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, data] + signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + return txRelay.checkAddress.call(p.data, user1) + }).then(res => { + assert.isTrue(res, "Address should be included as first input in data") + //Same as first transaction, and sent with Wei + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender, value: 100}) + }).catch(error => { + assert.match(error, /invalid JUMP/, "should have thrown an error as ether was sent") + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), '0', 'User1 should be able to send transaction') + + //Sign again, this time should have a different nonce. + data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + return signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + }).then(retVal => { + p = retVal + assert.equal(p.nonce.toString(), "0", "Nonce should not have incremented, as tx threw.") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + }).then(tx => { + return testReg.registry.call(proxy.address) + }).then((regData) => { + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User1 should be able to another transaction') + done() + }).catch(done) + }) + + + //Issues w/ getting account to unlock as it is not a truffle account. will + //fix this later. + /* + it('Should allow ether to be sent with a regular transaction?', (done) => { + //Deposit money in the proxy contract + //this will call the fallback as there is no function w/ this signature, but need to ecode address + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('randomName', ['address'], [user1]) + txRelay.checkAddress.call(data, user1).then(res => { + assert.isTrue(res, "no data provided") + return txRelay.checkAddress.call(data, user2) + }).then(res => { + assert.isFalse(res, "should not be valid address") + return txRelay.relayTx(proxy.address, data, {from: user1, value: 100}) + }).then((tx) => { + console.log(tx) + // Verify that the proxy address is logged as the sender + done() + }).catch(done) + }) */ + + + it('Should not approve bad data', (done) => { + //This function needs some serious thought + testing + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, []] + + let emptyData = '0x' + lightwallet.txutils._encodeFunctionTxData('', [], []) + //What happens with a send? Are the first 4 bytes empty? Yes, so this is a worry. Should assume they can't send eth through a meta-tx + let shortData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params).substring(0, 16) + let longData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params) + let wrongAddressData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, [user2, proxy.address, testReg.address, 0, []]).substring(0, 16) + let firstHalfAddressData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params).substring(0, 26) + zero + + + txRelay.checkAddress.call(emptyData, user1).then(res => { + assert.isFalse(res, "Empty data should not return true") + return txRelay.checkAddress.call(shortData, user1) + }).then(res => { + assert.isFalse(res, "Data that is to short should return false") + return txRelay.checkAddress.call(longData, user1) + }).then(res => { + assert.isTrue(res, 'Correctly encoded address should return true') + return txRelay.checkAddress.call(wrongAddressData, user1) + }).then(res => { + assert.isFalse(res, "Other address should not be allowed") + return txRelay.checkAddress.call(firstHalfAddressData, user1) + }).then(res => { + assert.isFalse(res, "Full address is not included") + done() + }) + }) +}) From 3b24d00406d8dcb005ae320632a9bd2719b2533c Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 19 Jun 2017 14:01:48 -0400 Subject: [PATCH 27/53] Add blockTimeout, basic test --- contracts/TxRelay.sol | 11 +++++-- test/MetaTx.js | 75 ++++++++++++++++++++++++++++++++----------- 2 files changed, 64 insertions(+), 22 deletions(-) diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index c34ac1a..f637e0a 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -32,10 +32,11 @@ contract TxRelay { */ function relayMetaTx(uint8 sigV, bytes32 sigR, bytes32 sigS, address destination, bytes data, - address claimedSender) { + address claimedSender, uint blockTimeout) { + if (block.number > blockTimeout) throw; // relay :: nonce :: destination :: data :: relayer - bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender); + bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender, blockTimeout); address addressFromSig = ecrecover(h, sigV, sigR, sigS); nonce[claimedSender]++; @@ -49,7 +50,6 @@ contract TxRelay { if (!destination.call(data)) {} } - /* * @dev Compares the first arg of a function call to an address * @param b The byte array that may have an address on the end @@ -72,4 +72,9 @@ contract TxRelay { function getNonce(address add) constant returns (uint) { return nonce[add]; } + + //Testing; I am a fool and can't get web3 to cooperate. + function getBlock() constant returns (uint) { + return block.number; + } } diff --git a/test/MetaTx.js b/test/MetaTx.js index 4f16630..60665bc 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -26,7 +26,7 @@ function pad(n) { } } -function signPayload(relayContract, signingAddr, sendingAddress, destination, +function signPayload(relayContract, signingAddr, sendingAddress, destination, numBlocks, functionName, functionTypes, functionParams, lw, keyFromPw) { return new Promise( function (resolve, reject) { @@ -34,6 +34,8 @@ function signPayload(relayContract, signingAddr, sendingAddress, destination, reject(error) } //Prolly should check inputs more thoroughly :@ + let nonce + let blockTimeout let data let hashInput let hash @@ -42,17 +44,25 @@ function signPayload(relayContract, signingAddr, sendingAddress, destination, data = '0x' + lightwallet.txutils._encodeFunctionTxData(functionName, functionTypes, functionParams) relayContract.getNonce.call(signingAddr).then(currNonce => { + nonce = currNonce + return relayContract.getBlock.call() + }).then(currBlock => { + //console.log("Current Block:", currBlock) + blockTimeout = currBlock.plus(numBlocks) + //console.log("Block Timeout:", blockTimeout) //Tight packing, as Solidity sha3 does - hashInput = relayContract.address + pad(currNonce.toString()).slice(2) + hashInput = relayContract.address + pad(nonce.toString('16')).slice(2) + destination.slice(2) + data.slice(2) + sendingAddress.slice(2) + + pad(blockTimeout.toString('16')).slice(2) hash = solsha3(hashInput) sig = lightwallet.signing.signMsgHash(lw, keyFromPw, hash, signingAddr) retVal.r = '0x'+sig.r.toString('hex') retVal.s = '0x'+sig.s.toString('hex') retVal.v = sig.v //Q: Why is this not converted to hex? retVal.data = data + retVal.blockTimeout = blockTimeout.toString() retVal.hash = hash - retVal.nonce = currNonce + retVal.nonce = nonce resolve(retVal) }) }) @@ -168,12 +178,12 @@ contract('IdentityManagerMetaTx', (accounts) => { let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [user1, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { p = retVal return txRelay.checkAddress.call(p.data, user1) }).then(res => { assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) }).then(tx => { return testReg.registry.call(proxy.address) }).then((regData) => { @@ -182,11 +192,11 @@ contract('IdentityManagerMetaTx', (accounts) => { data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user1, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + return signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) }).then(retVal => { p = retVal assert.equal(p.nonce.toString(), "1", "Nonce did not increment") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) }).then(tx => { return testReg.registry.call(proxy.address) }).then((regData) => { @@ -200,7 +210,7 @@ contract('IdentityManagerMetaTx', (accounts) => { let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [user2, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { p = retVal return testReg.registry.call(proxy.address) }).then((regData) => { @@ -208,7 +218,7 @@ contract('IdentityManagerMetaTx', (accounts) => { return txRelay.checkAddress.call(p.data, user2) }).then(res => { assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) }).then(tx => { return testReg.registry.call(proxy.address) }).then((regData) => { @@ -219,11 +229,11 @@ contract('IdentityManagerMetaTx', (accounts) => { data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user2, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + return signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) }).then(retVal => { p = retVal assert.equal(p.nonce.toString(), '1', 'Nonce should have updated, even though sub-call failed') - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) }).then(tx => { return testReg.registry.call(proxy.address) }).then((regData) => { @@ -239,13 +249,13 @@ contract('IdentityManagerMetaTx', (accounts) => { let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [user1, proxy.address, testReg.address, 0, data] //Claim to be user1 by encoding their address, but can only sign w/ user2 key, as they don't have user1's key - signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { p = retVal return txRelay.checkAddress.call(p.data, user1) }).then(res => { //This will still pass. User should be able to encode anything they want in data. assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) }).then(tx => { assert.isTrue(false, "Transaction above should have failed") }).catch(error => { @@ -265,12 +275,12 @@ contract('IdentityManagerMetaTx', (accounts) => { let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [user1, proxy.address, testReg.address, 0, data] //Claim to be user1 by encoding their address, but can only sign w/ their key, as they don't have user1's key - signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { p = retVal return txRelay.checkAddress.call(p.data, user1) }).then(res => { assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: notSender, gas: 3000000}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: notSender, gas: 3000000}) }).then(tx => { assert.isTrue(false, "Transaction above should have failed") }).catch(error => { @@ -289,13 +299,13 @@ contract('IdentityManagerMetaTx', (accounts) => { let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [user1, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { p = retVal return txRelay.checkAddress.call(p.data, user1) }).then(res => { assert.isTrue(res, "Address should be included as first input in data") //Same as first transaction, and sent with Wei - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender, value: 100}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender, value: 100}) }).catch(error => { assert.match(error, /invalid JUMP/, "should have thrown an error as ether was sent") }).then(tx => { @@ -307,11 +317,11 @@ contract('IdentityManagerMetaTx', (accounts) => { data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user1, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + return signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) }).then(retVal => { p = retVal assert.equal(p.nonce.toString(), "0", "Nonce should not have incremented, as tx threw.") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) }).then(tx => { return testReg.registry.call(proxy.address) }).then((regData) => { @@ -320,6 +330,33 @@ contract('IdentityManagerMetaTx', (accounts) => { }).catch(done) }) + it('should not send transaction that has timed out', (done) => { + // Encode the transaction to send to the Owner contract + let p + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [user1, proxy.address, testReg.address, 0, data] + //Give it a 0 block leway, then call a function to advance block forward one + signPayload(txRelay, user1, sender, metaIdentityManager.address, 0, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { + p = retVal + //This will throw, but will advance blocks forward by one. + return metaIdentityManager.forwardTo(sender, deployedProxy.address, testReg.address, 0, data) + }).then(() => { + assert.isTrue(false, "should have thrown an error") + }).catch(e => { + assert.match(e, /invalid JUMP/, 'should have thrown') + return txRelay.checkAddress.call(p.data, user1) + }).then(res => { + assert.isTrue(res, "Address should be included as first input in data") + return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) + }).then(tx => { + assert.isTrue(false, 'should have thrown an error') + }).catch(e => { + assert.match(e, /invalid JUMP/, 'should have thrown') + done() + }).catch(done) + }) + //Issues w/ getting account to unlock as it is not a truffle account. will //fix this later. From f97f41d96f3db6065623dfc27d67411bb7e3be5d Mon Sep 17 00:00:00 2001 From: naterush Date: Sun, 25 Jun 2017 16:56:55 -0400 Subject: [PATCH 28/53] Change tests to async await, add tests --- .babelrc | 3 + build/contracts/ArrayLib.json | 4 +- build/contracts/IdentityFactory.json | 4 +- .../IdentityFactoryWithRecoveryKey.json | 4 +- build/contracts/IdentityManager.json | 356 + build/contracts/MetaIdentityManager.json | 392 + build/contracts/Migrations.json | 4 +- build/contracts/Owned.json | 4 +- build/contracts/Proxy.json | 4 +- build/contracts/RecoverableController.json | 4 +- build/contracts/RecoveryQuorum.json | 4 +- build/contracts/TestRegistry.json | 48 + build/contracts/TxRelay.json | 99 + circle.yml | 2 +- contracts/MetaIdentityManager.sol | 2 +- contracts/TxRelay.sol | 24 +- package-lock.json | 7442 +++++++++++++++++ package.json | 3 + test/MetaTx.js | 599 +- test/recoveryController.js | 18 + yarn.lock | 150 +- 21 files changed, 8877 insertions(+), 293 deletions(-) create mode 100644 .babelrc create mode 100644 build/contracts/IdentityManager.json create mode 100644 build/contracts/MetaIdentityManager.json create mode 100644 build/contracts/TestRegistry.json create mode 100644 build/contracts/TxRelay.json create mode 100644 package-lock.json diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..ce6eb60 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015", "stage-2", "stage-3"] +} diff --git a/build/contracts/ArrayLib.json b/build/contracts/ArrayLib.json index 7a5083e..84a3438 100644 --- a/build/contracts/ArrayLib.json +++ b/build/contracts/ArrayLib.json @@ -41,7 +41,7 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820716584b2fde1c641931f4cef74554e539ea0c151c6826cf73959f21c6e3019850029", + "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820516e471dc70991131ddc690f9231b497258dd55ca77107174305667663cc698e0029", "networks": { "1": { "events": {}, @@ -81,5 +81,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1494766483133 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/IdentityFactory.json b/build/contracts/IdentityFactory.json index 6cd2ed7..bd1d7df 100644 --- a/build/contracts/IdentityFactory.json +++ b/build/contracts/IdentityFactory.json @@ -72,7 +72,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b612135806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103828061033183396040519101819003906000f0801561000057925082878686604051610a13806106b38339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051611044806110c68339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a723058201d08dfdc10daed12ae0a5bfec3c85fac4143262d2bd01733fa3346596904f36a002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582055dd5e79ac17387077c5f0283d2c23a9a796b29b0b8e40631c3d8ca89c91216900296060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c903da7784132f5c31dd104017432f2db6df8711988e0e3f62b882a52bc8ac8e0029a165627a7a723058202260a2b94f5ea2875e53bf61e0f5dfafb9780272a2e4e8e506112fbfb090533c0029", + "unlinked_binary": "0x606060405234610000575b612135806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103828061033183396040519101819003906000f0801561000057925082878686604051610a13806106b38339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051611044806110c68339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a6500296060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c5a8f3b795c8dbee7c5b4947eb620a1a3f2535289465700e07cf1c52db0e9ce40029a165627a7a72305820b5b29fee59691f7012de114728a87a41313dd550e6103a166595bb5786dc2a2e0029", "networks": { "1": { "events": { @@ -256,5 +256,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1494766483134 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/IdentityFactoryWithRecoveryKey.json b/build/contracts/IdentityFactoryWithRecoveryKey.json index 06c58b0..65c86bc 100644 --- a/build/contracts/IdentityFactoryWithRecoveryKey.json +++ b/build/contracts/IdentityFactoryWithRecoveryKey.json @@ -90,7 +90,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b61109d806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b60006000604051610382806102dd83396040519101819003906000f0801561000057915081868585604051610a138061065f8339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a723058201d08dfdc10daed12ae0a5bfec3c85fac4143262d2bd01733fa3346596904f36a002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582055dd5e79ac17387077c5f0283d2c23a9a796b29b0b8e40631c3d8ca89c9121690029a165627a7a723058206487a3117e249333dc025a547e0b1c1c1c8b3c07c0e2a0448543a187148f94db0029", + "unlinked_binary": "0x606060405234610000575b61109d806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b60006000604051610382806102dd83396040519101819003906000f0801561000057915081868585604051610a138061065f8339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a650029a165627a7a723058209fd376266664192c335d5d46b908b18fb241916bd5918c5635f82aad08f459a40029", "networks": { "3": { "events": { @@ -196,5 +196,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1494766483141 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/IdentityManager.json b/build/contracts/IdentityManager.json new file mode 100644 index 0000000..0425873 --- /dev/null +++ b/build/contracts/IdentityManager.json @@ -0,0 +1,356 @@ +{ + "contract_name": "IdentityManager", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwnerForRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "newIdManager", + "type": "address" + } + ], + "name": "initiateMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "changeRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + } + ], + "name": "finalizeMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + } + ], + "name": "cancelMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "forwardTo", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "registerIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "CreateIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "identity", + "type": "address" + }, + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "inputs": [ + { + "name": "_userTimeLock", + "type": "uint256" + }, + { + "name": "_adminTimeLock", + "type": "uint256" + }, + { + "name": "_adminRate", + "type": "uint256" + } + ], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + } + ], + "name": "IdentityCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "RecoveryChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationFinalized", + "type": "event" + } + ], + "unlinked_binary": "0x6060604052346100005760405160608061119b8339810160409081528151602083015191909201515b6000829055600183905560028190555b5050505b6111508061004b6000396000f300606060405236156100885763ffffffff60e060020a600035041663120ec6f0811461008d57806316d390bf146100ae5780633dcf59ca146100cf57806353faa9a9146100f0578063633b1954146101115780636f022ac41461012c57806373b40a5c14610147578063781f5a83146101b1578063ac1028de146101d2578063fbe5ce0a146101f3575b610000565b34610000576100ac600160a060020a0360043581169060243516610214565b005b34610000576100ac600160a060020a036004358116906024351661033b565b005b34610000576100ac600160a060020a0360043581169060243516610470565b005b34610000576100ac600160a060020a036004358116906024351661055d565b005b34610000576100ac600160a060020a03600435166106b7565b005b34610000576100ac600160a060020a036004351661085a565b005b3461000057604080516020600460643581810135601f81018490048402850184019095528484526100ac948235600160a060020a0390811695602480359092169560443595946084949293019190819084018382808284375094965061094a95505050505050565b005b34610000576100ac600160a060020a0360043581169060243516610aa6565b005b34610000576100ac600160a060020a0360043581169060243516610ba2565b005b34610000576100ac600160a060020a0360043581169060243516610c6d565b005b600160a060020a0382811660009081526004602052604090205483913381169116141561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a0380821660009081526005602090815260408083203385168452825280832042905587841683526003825280832093871683529290529081205411156102bc57610000565b600160a060020a0380851660008181526003602090815260408083208886168085529083529281902042905580513390951685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a0380831660009081526003602090815260408083203390941683529290529081205483919011801561039f575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a038082166000908152600560209081526040808320338516808552908352818420429081905589861680865260038552838620968a168087529685529483902055815190815290517f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a038083166000908152600360209081526040808320339094168352929052908120548391901180156104d4575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600160a060020a03838116600081815260066020908152604080832042905560078252918290208054600160a060020a0319168786169081179091558251339095168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b610335565b610000565b5b505050565b600160a060020a038083166000908152600360209081526040808320339094168352929052908120548391901180156105c1575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a038082166000908152600560209081526040808320338516845290915290204290558316151561063157610000565b600160a060020a038481166000818152600460209081526040918290208054600160a060020a0319168886169081179091558251339095168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a038082166000908152600360209081526040808320339094168352929052908120548290829011801561071c575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600160a060020a038316600090815260066020526040812054118015610762575060008054600160a060020a03851682526006602052604090912054429101105b1561054d57600160a060020a038084166000818152600760208181526040808420805460068452828620869055939092528154600160a060020a03191690915580517f1a695230000000000000000000000000000000000000000000000000000000008152919094166004820181905293519395509192631a69523092602480820193929182900301818387803b156100005760325a03f1156100005750506040805133600160a060020a03908116825291518286169350918616917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b610335565b610000565b5b505050565b600160a060020a03808216600090815260036020908152604080832033909416835292905290812054829082901180156108bf5750600154600160a060020a038083166000908152600360209081526040808320339094168352929052205442910111155b1561008857600160a060020a038084166000818152600760208181526040808420805460068452828620959095559282528254600160a060020a03191690925581513386168152915192909416955085937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f56792918290030190a35b610335565b610000565b5b505050565b600160a060020a038085166000908152600360209081526040808320339094168352929052908120548591901180156109ae5750600154600160a060020a038083166000908152600360209081526040808320339094168352929052205442910111155b156100885784600160a060020a031663d7f31eb98585856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360008314610a40575b805182526020831115610a4057601f199092019160209182019101610a20565b505050905090810190601f168015610a6c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b610a9e565b610000565b5b5050505050565b600160a060020a0381161515610abb57610000565b600160a060020a0333811660009081526003602090815260408083209386168352929052908120541180610b095750600160a060020a03338116600090815260046020526040812054909116115b15610b1357610000565b60008054600160a060020a03338116808452600360209081526040808620888516808852908352818720429690960390955582865260048252948590208054938716600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b5050565b6000600160a060020a0382161515610bb957610000565b60405161038280610da383396040519101819003906000f080156100005760008054600160a060020a038381168084526003602090815260408086208a8516808852908352818720429690960390955582865260048252948590208054600160a060020a031916898516908117909155855194855294519596509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b505050565b600160a060020a03808316600090815260036020908152604080832033909416835292905290812054839190118015610cd1575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a0380821660009081526005602090815260408083203385168085529083528184204290558885168085526003845282852095891680865295845282852094909455815190815290517fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029a165627a7a72305820cbf37d4f353a1677e0dc0bdada6b20c4a967834e47ab2c55dabe1ffae01324c80029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1498235266074 +} \ No newline at end of file diff --git a/build/contracts/MetaIdentityManager.json b/build/contracts/MetaIdentityManager.json new file mode 100644 index 0000000..5635517 --- /dev/null +++ b/build/contracts/MetaIdentityManager.json @@ -0,0 +1,392 @@ +{ + "contract_name": "MetaIdentityManager", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newIdManager", + "type": "address" + } + ], + "name": "initiateMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "changeRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwnerForRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "forwardTo", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "registerIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + } + ], + "name": "cancelMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "CreateIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + } + ], + "name": "finalizeMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "inputs": [ + { + "name": "_userTimeLock", + "type": "uint256" + }, + { + "name": "_adminTimeLock", + "type": "uint256" + }, + { + "name": "_adminRate", + "type": "uint256" + }, + { + "name": "relayAddress", + "type": "address" + } + ], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + } + ], + "name": "IdentityCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "RecoveryChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationFinalized", + "type": "event" + } + ], + "unlinked_binary": "0x6060604052346100005760405160808061132683398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b6112b78061006f6000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008d5780631e2629e1146100b45780633061e0ef146100db5780634466772514610102578063701b882614610129578063781f5a8314610196578063a5967039146101b7578063a949c637146101d8578063ac1028de146101ff578063c7576ed414610220575b610000565b34610000576100b2600160a060020a0360043581169060243581169060443516610241565b005b34610000576100b2600160a060020a03600435811690602435811690604435166103a2565b005b34610000576100b2600160a060020a03600435811690602435811690604435166104b1565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610632565b005b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061078395505050505050565b005b34610000576100b2600160a060020a0360043581169060243516610902565b005b34610000576100b2600160a060020a03600435811690602435166109fe565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610b13565b005b34610000576100b2600160a060020a0360043581169060243516610c77565b005b34610000576100b2600160a060020a0360043581169060243516610d42565b005b60035433600160a060020a039081169116141561008857600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102bb575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a0380831660009081526004602090815260408083209387168352929052908120548391859111801561041c575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a03848116600081815260076020908152604080832042905560088252918290208054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a0380831660009081526004602090815260408083209387168352929052908120548391859111801561052b575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a038083166000908152600660209081526040808320858516845290915290204290558516151561059f57610000565b600160a060020a038681166000818152600560209081526040918290208054600160a060020a0319168a86169081179091558251948c168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a03808316600090815260056020526040902054839185918116908216141561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156106f757610000565b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c1685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a038085166000908152600460209081526040808320938916835292905290812054859187911180156107fd5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156100885785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018060200182810382528381815181526020019150805190602001908083836000831461088f575b80518252602083111561088f57601f19909201916020918201910161086f565b505050905090810190601f1680156108bb5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b6108ed565b610000565b5b50506108fa565b610000565b5b5050505050565b600160a060020a038116151561091757610000565b600160a060020a03338116600090815260046020908152604080832093861683529290529081205411806109655750600160a060020a03338116600090815260056020526040812054909116115b1561096f57610000565b60008054600160a060020a03338116808452600460209081526040808620888516808852908352818720429690960390955582865260058252948590208054938716600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b5050565b60035460009033600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610a7b5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561008857600160a060020a038085166000818152600860208181526040808420805460078452828620959095559282528254600160a060020a03191690925581518a86168152915192909416965086937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f56792918290030190a35b61038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610b8d575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190558a8516808552600484528285208b871680875290855294839020919091558151948c1685529051929390927f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b6000600160a060020a0382161515610c8e57610000565b60405161038280610f0a83396040519101819003906000f080156100005760008054600160a060020a038381168084526004602090815260408086208a8516808852908352818720429690960390955582865260058252948590208054600160a060020a031916898516908117909155855194855294519596509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b505050565b60035460009033600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610dbf575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038416600090815260076020526040812054118015610e05575060008054600160a060020a03861682526007602052604090912054429101105b1561049457600160a060020a038085166000818152600860208181526040808420805460078452828620869055939092528154600160a060020a03191690915580517f1a695230000000000000000000000000000000000000000000000000000000008152919094166004820181905293519396509192631a69523092602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b61038f565b610000565b5b505061039c565b610000565b5b505050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029a165627a7a7230582048404a60fc8ddb7b84bf94a352b91212d973ec50e8654d1830eb2bd6805c12a00029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1498235266075 +} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index ee62f26..c093e40 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -59,7 +59,7 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a7230582032674b2bcd8e47b00a96f7a6ef896cc7e00a449ba022c653e5196591d2d6877d0029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820b18a6c34ac37a512b50372bc4497102c8b911522eb850928205fee1b09a6291d0029", "networks": { "1": { "events": {}, @@ -87,5 +87,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1494766483149 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/Owned.json b/build/contracts/Owned.json index ff54759..e193d41 100644 --- a/build/contracts/Owned.json +++ b/build/contracts/Owned.json @@ -51,8 +51,8 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610129806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811460365780632f54bf6e14604e5780638da5cb5b146078575b6000565b34600057604c600160a060020a0360043516609e565b005b346000576064600160a060020a036004351660d7565b604080519115158252519081900360200190f35b34600057608260ee565b60408051600160a060020a039092168252519081900360200190f35b60a53360d7565b1560d2576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820d4aa4677681f85dd6e4f5f2f30c9aad0b20cf2c2c31803b273d31100bc4d88650029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610129806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811460365780632f54bf6e14604e5780638da5cb5b146078575b6000565b34600057604c600160a060020a0360043516609e565b005b346000576064600160a060020a036004351660d7565b604080519115158252519081900360200190f35b34600057608260ee565b60408051600160a060020a039092168252519081900360200190f35b60a53360d7565b1560d2576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820305069a344df1e66707cf3339bfe577b50f57df283a7c425efbd248a9aeeb3b30029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1494766301725 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 2308878..662b43b 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -110,8 +110,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a723058201d08dfdc10daed12ae0a5bfec3c85fac4143262d2bd01733fa3346596904f36a0029", + "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1494766301725 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/RecoverableController.json b/build/contracts/RecoverableController.json index 42670bd..c3e461d 100644 --- a/build/contracts/RecoverableController.json +++ b/build/contracts/RecoverableController.json @@ -307,8 +307,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582055dd5e79ac17387077c5f0283d2c23a9a796b29b0b8e40631c3d8ca89c9121690029", + "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a650029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1494766301725 + "updated_at": 1498235266076 } \ No newline at end of file diff --git a/build/contracts/RecoveryQuorum.json b/build/contracts/RecoveryQuorum.json index a5ccfdc..77b7ea5 100644 --- a/build/contracts/RecoveryQuorum.json +++ b/build/contracts/RecoveryQuorum.json @@ -177,7 +177,7 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c903da7784132f5c31dd104017432f2db6df8711988e0e3f62b882a52bc8ac8e0029", + "unlinked_binary": "0x6060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c5a8f3b795c8dbee7c5b4947eb620a1a3f2535289465700e07cf1c52db0e9ce40029", "networks": { "4": { "events": { @@ -206,5 +206,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1494766483143 + "updated_at": 1498235266077 } \ No newline at end of file diff --git a/build/contracts/TestRegistry.json b/build/contracts/TestRegistry.json new file mode 100644 index 0000000..058716a --- /dev/null +++ b/build/contracts/TestRegistry.json @@ -0,0 +1,48 @@ +{ + "contract_name": "TestRegistry", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "testThrow", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "x", + "type": "uint256" + } + ], + "name": "register", + "outputs": [], + "payable": false, + "type": "function" + } + ], + "unlinked_binary": "0x606060405234610000575b60f6806100186000396000f300606060405263ffffffff60e060020a600035041663038defd78114603657806350bff6bf14606b578063f207564e146077575b6000565b34600057605973ffffffffffffffffffffffffffffffffffffffff600435166086565b60408051918252519081900360200190f35b3460005760756032565b005b346000576075600435609e565b005b60006020819052908152604090205481565b6000565b565b73ffffffffffffffffffffffffffffffffffffffff331660009081526020819052604090208190555b505600a165627a7a72305820f858765ee2f10bcec3eda8958beec2ee4967db8a30f5f3e2b7bc006c875196670029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1498235266075 +} \ No newline at end of file diff --git a/build/contracts/TxRelay.json b/build/contracts/TxRelay.json new file mode 100644 index 0000000..8392546 --- /dev/null +++ b/build/contracts/TxRelay.json @@ -0,0 +1,99 @@ +{ + "contract_name": "TxRelay", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "add", + "type": "address" + } + ], + "name": "getNonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "b", + "type": "bytes" + }, + { + "name": "a", + "type": "address" + } + ], + "name": "checkAddress", + "outputs": [ + { + "name": "t", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "relayTx", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sigV", + "type": "uint8" + }, + { + "name": "sigR", + "type": "bytes32" + }, + { + "name": "sigS", + "type": "bytes32" + }, + { + "name": "destination", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "claimedSender", + "type": "address" + } + ], + "name": "relayMetaTx", + "outputs": [], + "payable": false, + "type": "function" + } + ], + "unlinked_binary": "0x606060405234610000575b610528806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab81146100455780636bea166e1461007057806391a55b13146100e2578063c3f44c0a14610141575b610000565b346100005761005e600160a060020a03600435166101b6565b60408051918252519081900360200190f35b34610000576100ce600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a031692506101d5915050565b604080519115158252519081900360200190f35b346100005760408051602060046024803582810135601f810185900485028601850190965285855261013f958335600160a060020a0316959394604494939290920191819084018382808284375094965061020495505050505050565b005b3461000057604080516020601f60843560048181013592830184900484028501840190955281845261013f9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965050509235600160a060020a031692506102b1915050565b005b600160a060020a0381166000908152602081905260409020545b919050565b60006024835110156101e9575060006101fe565b506024820151600160a060020a038281169116145b92915050565b61020e81336101d5565b151561021957610000565b81600160a060020a0316816040518082805190602001908083836000831461025c575b80518252602083111561025c57601f19909201916020918201910161023c565b505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f191505015156102ac57610000565b5b5050565b60006000306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106103505780518252601f199092019160209182019101610331565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461045357610000565b61045d84826101d5565b151561046857610000565b84600160a060020a031684604051808280519060200190808383600083146104ab575b8051825260208311156104ab57601f19909201916020918201910161048b565b505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b50505050505050505600a165627a7a723058206fea6cb6840a18ae1b2e29fe1c7a60e8ca89295764b8cf54e273ca0c2db2f1d80029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1498235266075 +} \ No newline at end of file diff --git a/circle.yml b/circle.yml index b55d127..a8f9643 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,6 @@ machine: node: - version: v7.3.0 + version: v8.1.0 test: override: - npm test diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index 856fd13..f4b87b5 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -108,7 +108,7 @@ contract MetaIdentityManager { } // Primary forward function - function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) payable onlyRelay onlyOwner(identity, sender) { + function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) onlyRelay onlyOwner(identity, sender) { identity.forward(destination, value, data); } diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index f637e0a..6a35776 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -16,11 +16,11 @@ contract TxRelay { * @param data The bytes necessary to call the function in the destination contract. Note, the first encoded argument in data must be msg.sender's address */ - function relayTx(address destination, bytes data) payable { + function relayTx(address destination, bytes data) { if (!checkAddress(data, msg.sender)) throw; //As no state is updated before, can just throw in the case of a failed call. - if (!destination.call.value(msg.value)(data)) throw; + if (!destination.call(data)) throw; } /* @@ -32,22 +32,21 @@ contract TxRelay { */ function relayMetaTx(uint8 sigV, bytes32 sigR, bytes32 sigS, address destination, bytes data, - address claimedSender, uint blockTimeout) { - if (block.number > blockTimeout) throw; + address claimedSender) { - // relay :: nonce :: destination :: data :: relayer - bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender, blockTimeout); + // relay :: nonce :: destination :: data :: relayer :: blockTimeout + bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender); address addressFromSig = ecrecover(h, sigV, sigR, sigS); nonce[claimedSender]++; - //Validity Checks (if these throw this time, they will always throw) if (claimedSender != addressFromSig) throw; if (!checkAddress(data, addressFromSig)) throw; - //Do not throw, as the nonce should still update to protect against replay attacks - //In the future, this should output an event? This would have some overhead. - if (!destination.call(data)) {} + if (!destination.call(data)) { + //Output an event? + //Do not throw; want nonce to still update + } } /* @@ -72,9 +71,4 @@ contract TxRelay { function getNonce(address add) constant returns (uint) { return nonce[add]; } - - //Testing; I am a fool and can't get web3 to cooperate. - function getBlock() constant returns (uint) { - return block.number; - } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0668912 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7442 @@ +{ + "name": "uport-identity", + "version": "1.0.5", + "lockfileVersion": 1, + "dependencies": { + "@types/mkdirp": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", + "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", + "dev": true, + "optional": true + }, + "@types/node": { + "version": "6.0.78", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.78.tgz", + "integrity": "sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==", + "dev": true + }, + "abstract-leveldown": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz", + "integrity": "sha1-s7/tuITraToSd18MVenwpCDM7mQ=", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true + }, + "acorn": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", + "dev": true + }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, + "aes-js": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-0.2.4.tgz", + "integrity": "sha1-lLiBq3FyhtAV+iGeCPtmcJ3aWj0=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "optional": true + }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-eventemitter": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.3.tgz", + "integrity": "sha1-959IDf2mZFqXvWFCwBcVDWO05w4=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-cli": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", + "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true + }, + "babel-helper-define-map": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "dev": true + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", + "dev": true + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true + }, + "babel-polyfill": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "dev": true + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true + }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", + "dev": true + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-1.1.0.tgz", + "integrity": "sha1-QtPXF0dPnqAiB/bRqh9CaRPut6w=", + "dev": true + }, + "base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha1-tYLexpPC8R6JPPBk7mrFthMaIgI=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true + }, + "bignumber.js": { + "version": "github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "dev": true + }, + "bip39": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.2.0.tgz", + "integrity": "sha1-QOc/cGdMJn8UjNv4N08qUL4Waw0=", + "dev": true + }, + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "dev": true + }, + "bitcore-lib": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-0.14.0.tgz", + "integrity": "sha1-IcsjWf57mXo7e3c+t9cnWuN9ZE4=", + "dev": true, + "dependencies": { + "bn.js": { + "version": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.4.tgz", + "integrity": "sha1-Igp81nf38b+pNif/QZN3b+eBlIA=", + "dev": true + }, + "bs58": { + "version": "https://registry.npmjs.org/bs58/-/bs58-2.0.0.tgz", + "integrity": "sha1-crcTvtIjoKxRi72g484/SBfznrU=", + "dev": true + }, + "buffer-compare": { + "version": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.0.0.tgz", + "integrity": "sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI=", + "dev": true + }, + "elliptic": { + "version": "https://registry.npmjs.org/elliptic/-/elliptic-3.0.3.tgz", + "integrity": "sha1-hlybQgv75VAGuflp+XoNLESWZZU=", + "dev": true, + "dependencies": { + "brorand": { + "version": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", + "integrity": "sha1-B7VMowKGq9Fxig4qgwgD79yb+gQ=", + "dev": true + }, + "hash.js": { + "version": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", + "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", + "dev": true + } + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "bitcore-mnemonic": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/bitcore-mnemonic/-/bitcore-mnemonic-1.2.5.tgz", + "integrity": "sha1-Rfq6ABY8VXoFQgL/6aIPuiNgaF8=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true + }, + "borc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/borc/-/borc-2.0.2.tgz", + "integrity": "sha1-jq4aTVmc/f38n6hXy7ppyQ6DKR8=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-3.0.1.tgz", + "integrity": "sha1-gHZS0Q453jfp40lyR+3HmLt0b3Y=", + "dev": true + } + } + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "brfs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.4.3.tgz", + "integrity": "sha1-22ddb16SPm3wh/ylhZyQkKrtMhY=", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true + }, + "browserify-sha3": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.1.tgz", + "integrity": "sha1-P/NKMAbvFcD7NWflQbkaI0ASPRE=", + "dev": true + }, + "browserify-zlib-next": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-zlib-next/-/browserify-zlib-next-1.0.1.tgz", + "integrity": "sha1-iAQDhotPYmLw8+rPBGmav58Hb58=", + "dev": true, + "dependencies": { + "pako": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.5.tgz", + "integrity": "sha1-0iBd/ludqK95fnwWPbTR+E5GALw=", + "dev": true + } + } + }, + "bs58": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-3.1.0.tgz", + "integrity": "sha1-1MJjiL9IBMrHFBQbGUWqR+XrJI4=", + "dev": true + }, + "bs58check": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-1.3.4.tgz", + "integrity": "sha1-xSVABzdJEXcU+gQsMEfrj5FRy/g=", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-loader": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-loader/-/buffer-loader-0.0.1.tgz", + "integrity": "sha1-TWd8qS3YiTEIeLAqL7z6txICTPI=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true + }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cids": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.4.2.tgz", + "integrity": "sha1-8UFOePpGb+l6fOnNbAOJKZO+8wc=", + "dev": true, + "dependencies": { + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "multihashes": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", + "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", + "dev": true + } + } + }, + "cipher-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coinstring": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz", + "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", + "dev": true, + "dependencies": { + "bs58": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz", + "integrity": "sha1-VZCNWPGYKrogCPob7Y+RmYopv40=", + "dev": true + } + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true + }, + "commander": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", + "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", + "integrity": "sha1-yj3eBEgPElGbcVJuxEvUiN37P+8=", + "dev": true, + "dependencies": { + "boom": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", + "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", + "dev": true + }, + "hoek": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", + "dev": true + } + } + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cpr": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-0.4.3.tgz", + "integrity": "sha1-CiPktuwj87jMekBey1z9x3j33iU=", + "dev": true, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true + } + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true + }, + "crypto-js": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz", + "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deferred-leveldown": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz", + "integrity": "sha1-XSXDMQ9f6QmUb2JA3J+Q3RCace8=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "dependencies": { + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "delimit-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", + "integrity": "sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=", + "dev": true + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "dexie": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dexie/-/dexie-1.5.1.tgz", + "integrity": "sha1-rDrVoOuvfm5Cdg21hxBBjUp1ZiQ=", + "dev": true + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true + }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true + }, + "engine.io": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz", + "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", + "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "dependencies": { + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + } + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "es-abstract": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", + "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", + "dev": true + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", + "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", + "dev": true, + "dependencies": { + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", + "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "eth-signer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/eth-signer/-/eth-signer-0.2.2.tgz", + "integrity": "sha1-QSlrLqX5sifuWA8wXGnCGWcwbu4=", + "dev": true + }, + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", + "dev": true + }, + "ethereumjs-account": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.4.tgz", + "integrity": "sha1-+MMCMby3B/RRTYoFLB+doQNiTUc=", + "dev": true + }, + "ethereumjs-block": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.2.2.tgz", + "integrity": "sha1-LsdTSlkCG47JuDww5JaQxuuu3aE=", + "dev": true, + "dependencies": { + "ethereum-common": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.16.tgz", + "integrity": "sha1-mh4Wnq00q3XgifUMpRK/0PvRJlU=", + "dev": true + } + } + }, + "ethereumjs-testrpc": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-testrpc/-/ethereumjs-testrpc-3.0.5.tgz", + "integrity": "sha1-DVxRdND5InjHzIeFuFpar+3XUTo=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.1.4.tgz", + "integrity": "sha1-KbO7aT27I46Ity6sL7iWUIiLLVk=", + "dev": true + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + } + } + } + } + }, + "ethereumjs-tx": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.1.tgz", + "integrity": "sha1-1pCavPs32mQE/BgSTTUe2iAEfaw=", + "dev": true, + "dependencies": { + "ethereumjs-util": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", + "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "dev": true + }, + "ethereumjs-vm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.0.2.tgz", + "integrity": "sha1-hOI3KlcVqApi9/KjEvjGRTfoqEI=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz", + "integrity": "sha1-gnY7Fpfuenlr5xVdqd+0my+Yz9s=", + "dev": true + }, + "ethjs-abi": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.9.tgz", + "integrity": "sha1-UhHErcOiB5OtMZqdIgTkOAfnb+o=", + "dev": true, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", + "dev": true + } + } + }, + "ethjs-util": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.4.tgz", + "integrity": "sha1-HItoeSV0RO9NPz+7rC3tEs2ZfZM=", + "dev": true + }, + "ethpm": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ethpm/-/ethpm-0.0.9.tgz", + "integrity": "sha1-SvW5k7jC9eGU+ytgmhNEl0QrLjo=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true + } + } + }, + "ethpm-registry": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ethpm-registry/-/ethpm-registry-0.0.8.tgz", + "integrity": "sha1-nZTQiqJU4VAqB0QW2MA9b0zQZdM=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "solc": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.11.tgz", + "integrity": "sha1-JSLrQ+fAQZusIGC5biCiWTv7Xos=", + "dev": true, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true + } + } + }, + "truffle": { + "version": "3.2.93", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-3.2.93.tgz", + "integrity": "sha1-qbaZS2xFV54e2DZOTT0BD30fiHc=", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true + } + } + } + } + }, + "ethpm-spec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-1.0.1.tgz", + "integrity": "sha1-rTwJrgSSrT0+x7lLf1/YBX1N65E=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "expand-template": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz", + "integrity": "sha1-bDAzIxd6YrGyLAcCefeGEoe2mxo=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", + "dev": true + }, + "falafel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", + "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "finalhandler": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "flatmap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/flatmap/-/flatmap-0.0.3.tgz", + "integrity": "sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ=", + "dev": true + }, + "for-each": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", + "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true + }, + "fs-pull-blob-store": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fs-pull-blob-store/-/fs-pull-blob-store-0.3.0.tgz", + "integrity": "sha1-tIl1e0RFzcqOLqs1qXRKRPNFOxY=", + "dev": true, + "dependencies": { + "pull-file": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz", + "integrity": "sha1-s8pAUwbggvnUUoKIkzutsrZWNls=", + "dev": true + } + } + }, + "fs-readdir-recursive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", + "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true + }, + "get-browser-rtc": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz", + "integrity": "sha1-u81AyEUaftTvXDc7gWmkCd0dEdk=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "github-download": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/github-download/-/github-download-0.5.0.tgz", + "integrity": "sha1-92R6cKrEMm+wkeV4bI9mrhV9pRs=", + "dev": true, + "dependencies": { + "fs-extra": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.24.0.tgz", + "integrity": "sha1-1OQ0KpZnXLeEZjOmCZJJMytTmVI=", + "dev": true + } + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "graphlib": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.1.tgz", + "integrity": "sha1-QjUsUrovTQNctWbrkfc5X3bryVE=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "hapi": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/hapi/-/hapi-15.2.0.tgz", + "integrity": "sha1-VwTKLAS2OGwDyvnukB8d4IAxbSM=", + "dev": true, + "dependencies": { + "accept": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.2.tgz", + "integrity": "sha1-VRh07Y8saLJwe/8qsl/hNT5GHWs=", + "dev": true + }, + "ammo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.2.tgz", + "integrity": "sha1-NmxV97xPLyQhjtOk3UuN8TXC5so=", + "dev": true + }, + "boom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", + "integrity": "sha1-fllGkmTq3bdP7fvBsWUk1pppRXc=", + "dev": true + }, + "call": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/call/-/call-3.0.3.tgz", + "integrity": "sha1-5HSN27t/Qa5AzuBV+LJwtzO/fI0=", + "dev": true + }, + "catbox": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.2.tgz", + "integrity": "sha1-RnIbHJmWdRP9e36UUXBqBe3+1a0=", + "dev": true + }, + "catbox-memory": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.3.tgz", + "integrity": "sha1-36qcFj+tND2a3W18H9x7Qps2nDg=", + "dev": true + }, + "cryptiles": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.0.2.tgz", + "integrity": "sha1-7M30qFuHVPFdC1Mg1Kt41A0PokQ=", + "dev": true + }, + "heavy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.2.tgz", + "integrity": "sha1-27Zs2l8BellPxsgwHfaZnqjVM/A=", + "dev": true + }, + "hoek": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.0.2.tgz", + "integrity": "sha1-e5afTIoa+KOMosZmxmv6bEL+LN0=", + "dev": true + }, + "iron": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.3.tgz", + "integrity": "sha1-DA0yUmYdihxhS+2e07B32A6g/Xg=", + "dev": true + }, + "items": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", + "dev": true + }, + "joi": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz", + "integrity": "sha1-iNZIkJFavrEnzXVwJxFtUN8+aN8=", + "dev": true, + "dependencies": { + "isemail": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", + "dev": true + }, + "moment": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", + "integrity": "sha1-s1snxH5X7S3ccAU9awe+zbKRdBw=", + "dev": true + } + } + }, + "mimos": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", + "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", + "dev": true, + "dependencies": { + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=", + "dev": true + } + } + }, + "podium": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/podium/-/podium-1.2.3.tgz", + "integrity": "sha1-XJW3zC9ch90yTgrUqTY6xi1ms3E=", + "dev": true + }, + "shot": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/shot/-/shot-3.3.2.tgz", + "integrity": "sha1-aRwmEXWd7MIEh7INJcwpnznl+bc=", + "dev": true + }, + "statehood": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/statehood/-/statehood-5.0.0.tgz", + "integrity": "sha1-ziKFqr6uOYrofLunRhhLdZm4+jE=", + "dev": true + }, + "subtext": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.3.0.tgz", + "integrity": "sha1-36yQSS7DVmn9bgDG5dk4sG18z7s=", + "dev": true, + "dependencies": { + "content": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/content/-/content-3.0.2.tgz", + "integrity": "sha1-8di0w6uyHqTA4hc/Q6wCKaTtbRw=", + "dev": true + }, + "pez": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.2.tgz", + "integrity": "sha1-0dEjcXkqVYluI+IeUJxAle0IHbI=", + "dev": true, + "dependencies": { + "b64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", + "integrity": "sha1-ep1gRmrfe43hFMvfZRpf38yQiU0=", + "dev": true + }, + "nigel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", + "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", + "dev": true, + "dependencies": { + "vise": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", + "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", + "dev": true + } + } + } + } + }, + "wreck": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-10.0.0.tgz", + "integrity": "sha1-mKuIL4XhalJjMlB/EB9aeEEWIng=", + "dev": true + } + } + }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true + } + } + }, + "hapi-set-header": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hapi-set-header/-/hapi-set-header-1.0.2.tgz", + "integrity": "sha1-KvrgAsZxnW1U8/qIRi+CKJLS3xM=", + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true + }, + "hash.js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", + "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true + }, + "hdkey": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-0.7.1.tgz", + "integrity": "sha1-yu5L6BqneSHpCbjSKN0PKayu5jI=", + "dev": true + }, + "heap": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", + "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", + "dev": true + }, + "idb-pull-blob-store": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/idb-pull-blob-store/-/idb-pull-blob-store-0.5.1.tgz", + "integrity": "sha1-nBP58Q6wWqOp8g71cVE8R1efddQ=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "interface-connection": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/interface-connection/-/interface-connection-0.3.2.tgz", + "integrity": "sha1-5JSYg/bqeft+3QHuP0/KR6Kf0sQ=", + "dev": true + }, + "interface-pull-blob-store": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/interface-pull-blob-store/-/interface-pull-blob-store-0.6.0.tgz", + "integrity": "sha1-1Mo4v6Y00iwA9jHJANiTnzPIXrM=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-address": { + "version": "5.8.8", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.8.8.tgz", + "integrity": "sha1-X9H490ZSSft9Kzwe7HtB0p0fG3Y=", + "dev": true, + "dependencies": { + "jsbn": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", + "dev": true + } + } + }, + "ipfs": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.18.0.tgz", + "integrity": "sha1-ihJUu70enLP3f8bGau6Fa1ZqkYk=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "hoek": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true + } + } + }, + "ipfs-api": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-11.2.0.tgz", + "integrity": "sha1-BlKdB+gCUIKzS9h6BfxxZ5if7Jg=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "ipfs-bitswap": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-0.8.3.tgz", + "integrity": "sha1-NUXZEBHTViqMz4ePx4fjt7tV5+M=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "cids": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.3.6.tgz", + "integrity": "sha1-oKOiw4YQWpLs2cii8iOb6y9UTBU=", + "dev": true + }, + "multihashes": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", + "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", + "dev": true + } + } + }, + "ipfs-block": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.5.5.tgz", + "integrity": "sha1-lWpNGnWMJXT7U2JjRlXM+hwOvSQ=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "ipfs-block-service": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.7.2.tgz", + "integrity": "sha1-GFks8UgZOR0Nx6H9s75iAdPG/uI=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "cids": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.3.6.tgz", + "integrity": "sha1-oKOiw4YQWpLs2cii8iOb6y9UTBU=", + "dev": true + }, + "multihashes": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", + "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", + "dev": true + } + } + }, + "ipfs-multipart": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ipfs-multipart/-/ipfs-multipart-0.1.0.tgz", + "integrity": "sha1-Wo7RP0LoLYvvfS4VHY6vXjow4+o=", + "dev": true + }, + "ipfs-repo": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.11.3.tgz", + "integrity": "sha1-65IZ+gkJVZz3LAzLZUniCKgIeko=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "multihashes": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", + "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", + "dev": true + } + } + }, + "ipfs-unixfs": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-0.1.12.tgz", + "integrity": "sha1-R/SFd2/Qhh1w4Xcf2rjk61zu3DM=", + "dev": true + }, + "ipfs-unixfs-engine": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.13.0.tgz", + "integrity": "sha1-RgBDTkhyxViNryxOBOvPUZ1/P4o=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "browserify-sha3": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.2.tgz", + "integrity": "sha1-JWzMx+2XLEqA60mcgqrMy+5sCkU=", + "dev": true + }, + "cids": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.2.0.tgz", + "integrity": "sha1-Cnn2IcNOs/+cO+UF/aK4CXEIR/w=", + "dev": true + }, + "ipld-dag-pb": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.8.0.tgz", + "integrity": "sha1-juNfLGgcasBGMA6Mgcwa2bhAxOI=", + "dev": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "multibase": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.2.0.tgz", + "integrity": "sha1-jA+dX/M/hj3Eciyn0G3B3Z5fAG4=", + "dev": true + }, + "multicodec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.0.tgz", + "integrity": "sha1-AAZ/zAUX1XG+wcbzJdLJh7OnTMg=", + "dev": true + }, + "multihashing-async": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.2.0.tgz", + "integrity": "sha1-jewZWiD+QCzKOOJyjWk2B9HFo3s=", + "dev": true + }, + "varint": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/varint/-/varint-4.0.1.tgz", + "integrity": "sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk=", + "dev": true + } + } + }, + "ipld-dag-cbor": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-0.8.6.tgz", + "integrity": "sha1-oKk/T1TbayYgDtsX3VC+H9u71dY=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "multihashes": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", + "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", + "dev": true + } + } + }, + "ipld-dag-pb": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.9.5.tgz", + "integrity": "sha1-6MfcYaTdg6hlhzVVkmTuT+3YtjU=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "is-ipfs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.3.0.tgz", + "integrity": "sha1-yZNfIrGd9QqX57Jl+VreTCka05U=", + "dev": true + }, + "multihashes": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", + "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", + "dev": true + } + } + }, + "ipld-resolver": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ipld-resolver/-/ipld-resolver-0.2.0.tgz", + "integrity": "sha1-0njtcqQ6mKlt9hGeVD5RLW4l0aI=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "browserify-sha3": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.2.tgz", + "integrity": "sha1-JWzMx+2XLEqA60mcgqrMy+5sCkU=", + "dev": true + }, + "cids": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.2.0.tgz", + "integrity": "sha1-Cnn2IcNOs/+cO+UF/aK4CXEIR/w=", + "dev": true + }, + "ipfs-block-service": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.6.0.tgz", + "integrity": "sha1-5TekYk6wBlh/bmGga8F1Dq5Mt0o=", + "dev": true + }, + "ipld-dag-pb": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.8.0.tgz", + "integrity": "sha1-juNfLGgcasBGMA6Mgcwa2bhAxOI=", + "dev": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "multibase": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.2.0.tgz", + "integrity": "sha1-jA+dX/M/hj3Eciyn0G3B3Z5fAG4=", + "dev": true + }, + "multicodec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.0.tgz", + "integrity": "sha1-AAZ/zAUX1XG+wcbzJdLJh7OnTMg=", + "dev": true + }, + "multihashing-async": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.2.0.tgz", + "integrity": "sha1-jewZWiD+QCzKOOJyjWk2B9HFo3s=", + "dev": true + }, + "varint": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/varint/-/varint-4.0.1.tgz", + "integrity": "sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk=", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-circular": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-circular/-/is-circular-1.0.1.tgz", + "integrity": "sha1-ZbBHaoWI5Ua4CHwdZtTAjYKjFnk=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "dev": true + }, + "is-ipfs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.2.1.tgz", + "integrity": "sha1-EDV9P93Hze1LbqbMHab+fY2EtDg=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isemail": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "items": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", + "dev": true + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "joi": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", + "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", + "dev": true, + "dependencies": { + "hoek": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", + "dev": true + } + } + }, + "js-sha3": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz", + "integrity": "sha1-hhIoAhQvCChQKg0d7h2V4lO7AkM=", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-to-markdown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-schema-to-markdown/-/json-schema-to-markdown-1.0.3.tgz", + "integrity": "sha1-RBHKIisrZ2DmFmY/C7K9drsm67g=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json-text-sequence": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", + "integrity": "sha1-py8hfcSvxGKf/1/rME3BvVGi89I=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonschema": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.1.1.tgz", + "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "keccak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.3.0.tgz", + "integrity": "sha512-JgsKPxYhcJxKrV+TrCyg/GwZbOjhpRPrz2kG8xbAsUaIDelUlKjm08YcwBO9Fm8sqf/Kg8ZWkk6nWujhLykfvw==", + "dev": true + }, + "keccakjs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.1.tgz", + "integrity": "sha1-HWM6+QfvMFu/ny+mFtVsRFYd+k0=", + "dev": true + }, + "keypair": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.1.tgz", + "integrity": "sha1-dgNxknCvtlZO04oiCHoG/Jqk6hs=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true + }, + "left-pad": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.1.3.tgz", + "integrity": "sha1-YS9hwDPzqeCOk58crr7qQbbzGZo=", + "dev": true + }, + "level-codec": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz", + "integrity": "sha1-9d8KmVgvdtrEOFUVGrb05NDWAEU=", + "dev": true + }, + "level-errors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz", + "integrity": "sha1-NYXmI5dMc3qTdVSSpDwCZ82kQl8=", + "dev": true + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true + } + } + }, + "levelup": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.8.tgz", + "integrity": "sha1-+0QsSI776hBD9+uZKaeSp0+9HaY=", + "dev": true + }, + "libp2p-crypto": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.8.8.tgz", + "integrity": "sha1-3IpJy87bUjnel3YZ8tGN+fwRDzk=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true + } + } + }, + "libp2p-crypto-secp256k1": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.1.4.tgz", + "integrity": "sha1-IRN4/jqFnYmtEgOqng111obIW98=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "libp2p-identify": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/libp2p-identify/-/libp2p-identify-0.3.3.tgz", + "integrity": "sha1-cObE0yK570dadc5XtLtomK23Xyk=", + "dev": true + }, + "libp2p-ipfs": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/libp2p-ipfs/-/libp2p-ipfs-0.15.0.tgz", + "integrity": "sha1-4suhQYWwTrz3lIhvn0iwTEjjkLs=", + "dev": true + }, + "libp2p-ipfs-browser": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/libp2p-ipfs-browser/-/libp2p-ipfs-browser-0.16.0.tgz", + "integrity": "sha1-/LLAsNvKChxhdakhjSj4hhk5wPk=", + "dev": true + }, + "libp2p-secio": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/libp2p-secio/-/libp2p-secio-0.6.8.tgz", + "integrity": "sha1-KaRKciWg9hSRmfzAuwl3KskV7gM=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "libp2p-spdy": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/libp2p-spdy/-/libp2p-spdy-0.10.6.tgz", + "integrity": "sha1-p8GCjR3mEVjixDL2wtHbyOJTgDU=", + "dev": true + }, + "libp2p-swarm": { + "version": "0.26.19", + "resolved": "https://registry.npmjs.org/libp2p-swarm/-/libp2p-swarm-0.26.19.tgz", + "integrity": "sha1-MF+rEItuuu7aoZCxlhossKIk+X4=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "libp2p-tcp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.9.4.tgz", + "integrity": "sha1-nA3EF30zQeBPnxQL1VpLjcaHctg=", + "dev": true + }, + "libp2p-webrtc-star": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.5.0.tgz", + "integrity": "sha1-PNHlVJUQDkcy9eP+eKruKNjQcSo=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "libp2p-websockets": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.9.6.tgz", + "integrity": "sha1-Ht8vVDqUvhiFynpWWQ0WytVngGs=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lock": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/lock/-/lock-0.1.3.tgz", + "integrity": "sha1-9mwcqgxBlW4UJmCAOe1ZtxvfGFQ=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", + "dev": true + }, + "lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequalwith": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz", + "integrity": "sha1-Jmcm3dUo+FTyH06pigZWBuD7xrA=", + "dev": true + }, + "lodash.isfunction": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", + "integrity": "sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=", + "dev": true + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.max": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", + "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", + "dev": true + }, + "lodash.noop": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", + "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=", + "dev": true + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", + "dev": true + }, + "lodash.range": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz", + "integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=", + "dev": true + }, + "lodash.repeat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", + "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=", + "dev": true + }, + "looper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", + "integrity": "sha1-Zs0Md0rz1P7axTeU90LbVtqPCew=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + }, + "ltgt": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", + "integrity": "sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ=", + "dev": true + }, + "mafmt": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-2.1.8.tgz", + "integrity": "sha1-2Lf3Y75W22KgNDvFxH04qyy+9F4=", + "dev": true + }, + "memdown": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.2.4.tgz", + "integrity": "sha1-zZo0qvB01TRFonEQjrS43U7A8n8=", + "dev": true + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "merkle-patricia-tree": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.1.2.tgz", + "integrity": "sha1-ckSD1Ut1YxpI/t2lXhFAUXBqcpE=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true + }, + "mocha": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", + "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", + "dev": true, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "debug": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true + } + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multiaddr": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-2.3.0.tgz", + "integrity": "sha1-VmNIJPSLy9hAX9VDTDGyd0JMYvw=", + "dev": true, + "dependencies": { + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + } + } + }, + "multibase": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.3.4.tgz", + "integrity": "sha1-+6iwqslyT2LiR4JVfioGLjDTrn8=", + "dev": true, + "dependencies": { + "base-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.0.tgz", + "integrity": "sha1-d7VvAxEHC3gLPIpfU0vqxH5QZwI=", + "dev": true + } + } + }, + "multicodec": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.7.tgz", + "integrity": "sha1-ZY8tFfQvoZ5mCS/pF6BRob8H5B4=", + "dev": true + }, + "multihashes": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.2.2.tgz", + "integrity": "sha1-jM8uO6PQQeEUZyjeDYpNqeixglE=", + "dev": true + }, + "multihashing-async": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.5.tgz", + "integrity": "sha1-6UtAimjDbDkxgBRuP62RJhCOtqk=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "multihashes": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", + "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", + "dev": true + } + } + }, + "multipart-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/multipart-stream/-/multipart-stream-2.0.1.tgz", + "integrity": "sha1-GVyctLLEHnjHKh6POMfQ66HNC6A=", + "dev": true + }, + "multistream-select": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-0.13.5.tgz", + "integrity": "sha1-/jNnYgLmRhkFSu60UzaogcycVOk=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "murmurhash3js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz", + "integrity": "sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true + }, + "ndjson": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", + "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-abi": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.0.3.tgz", + "integrity": "sha1-DKZ+XmZ7jhNDVJyhcVOoFdC7/ao=", + "dev": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true + }, + "node-fetch": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "dev": true + }, + "node-nailgun-client": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/node-nailgun-client/-/node-nailgun-client-0.1.0.tgz", + "integrity": "sha1-tkJNsGA3gaGT82c4Xi1hXKbfILI=", + "dev": true + }, + "node-nailgun-server": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/node-nailgun-server/-/node-nailgun-server-0.1.3.tgz", + "integrity": "sha1-plCRjkhhXI18TSOT22cxblrQEvE=", + "dev": true + }, + "node-plantuml": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/node-plantuml/-/node-plantuml-0.5.0.tgz", + "integrity": "sha1-A8LthW5rJyxxShVoRTp0fCZv3B8=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "node-webcrypto-ossl": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.26.tgz", + "integrity": "sha512-psdPxEdu56vMLND0LuvuO1qUwuDjmddo1k4+1/enmuRQ0wtiGdClbSv1fuSd/HGaL/x2PKUbJU0AgJCnGqpb8A==", + "dev": true, + "optional": true + }, + "nodegit-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz", + "integrity": "sha1-VyKxhPLfcycWEGSnkdLoQskWezQ=", + "dev": true + }, + "nodeify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", + "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", + "dev": true + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true + }, + "npm-programmatic": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/npm-programmatic/-/npm-programmatic-0.0.6.tgz", + "integrity": "sha1-PI9NuyEO/WW5nualrHbye01da3g=", + "dev": true + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "dev": true, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-inspect": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.2.2.tgz", + "integrity": "sha1-yCEV5PzIiK6hTWTCLk8X9qcNXlo=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "optimist": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", + "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true + }, + "pako": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.3.tgz", + "integrity": "sha1-X1FbDGci4ZgpIK6ABerLC3ynPM8=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true + }, + "peer-book": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/peer-book/-/peer-book-0.3.2.tgz", + "integrity": "sha1-Kl9CrLGbvDFwoTrv+0szEDiP6vQ=", + "dev": true, + "dependencies": { + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + } + } + }, + "peer-id": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.8.7.tgz", + "integrity": "sha1-yb2dFYjUzM5xdSqQSa+p8QF2oz0=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "base-x": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", + "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", + "dev": true + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true + }, + "multihashes": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", + "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", + "dev": true + } + } + }, + "peer-info": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/peer-info/-/peer-info-0.8.5.tgz", + "integrity": "sha1-uPvuY3ZAXATItkRhDNBiMcQmKh4=", + "dev": true + }, + "pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", + "dev": true + }, + "pem-jwk": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-1.5.1.tgz", + "integrity": "sha1-eoY3/S9nqCflfAxC4cI8P9Us+wE=", + "dev": true, + "dependencies": { + "asn1.js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-1.0.3.tgz", + "integrity": "sha1-KBuj7B8kSP52X5Kk7s+IP+E2S1Q=", + "dev": true + }, + "bn.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-1.3.0.tgz", + "integrity": "sha1-DbTL+W+PI7dC9by50ap6mZSgXoM=", + "dev": true, + "optional": true + } + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true + }, + "plantuml-encoder": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.2.4.tgz", + "integrity": "sha1-XwBW98BL12ru9CC/zd7zOen0QIE=", + "dev": true + }, + "prebuild-install": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.1.2.tgz", + "integrity": "sha1-2a4MqFMw4Dli2TKS+VqLRMLr9QU=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", + "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", + "dev": true + }, + "promisify-es6": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promisify-es6/-/promisify-es6-1.0.2.tgz", + "integrity": "sha1-Ywk1U+Ob5QNtdXtFX7k9FV2ktYk=", + "dev": true + }, + "promisify-node": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.4.0.tgz", + "integrity": "sha1-MoA4dOxBF4TkeGwzmQKoeheaRpw=", + "dev": true + }, + "protocol-buffers": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/protocol-buffers/-/protocol-buffers-3.2.1.tgz", + "integrity": "sha1-NyWOF+JKCC8G67F3MekoUdHHaIk=", + "dev": true + }, + "protocol-buffers-schema": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.1.tgz", + "integrity": "sha1-rRURQYd8aviChkeFGvZqDbaSdfU=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pull-block": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pull-block/-/pull-block-1.2.0.tgz", + "integrity": "sha1-45R/CoNCboR+zs7LC5ujCLAZs+E=", + "dev": true + }, + "pull-cat": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", + "integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs=", + "dev": true + }, + "pull-defer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz", + "integrity": "sha1-CIew/7MK8ypW2+z6csFnInHwexM=", + "dev": true + }, + "pull-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pull-file/-/pull-file-1.0.0.tgz", + "integrity": "sha1-WgywNteO4Q4+C0KT389u/6EDYxg=", + "dev": true + }, + "pull-handshake": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz", + "integrity": "sha1-YACg/QGIhM39c3JU+Mxgqypjd5E=", + "dev": true + }, + "pull-length-prefixed": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pull-length-prefixed/-/pull-length-prefixed-1.3.0.tgz", + "integrity": "sha512-FkxMYPNUSFjEDEXuS6MAaKwagQAN0sonifeC+NeutQmgXy+WBdPOtPzDT1dyT69Io1wzraZ+GzXAbBGnFcjdFQ==", + "dev": true + }, + "pull-pair": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz", + "integrity": "sha1-fuQnJj/fTaglOXrAoF4atLdL120=", + "dev": true + }, + "pull-paramap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz", + "integrity": "sha1-UaQZPOnI1yFdla2tReK824STsjo=", + "dev": true, + "dependencies": { + "looper": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", + "integrity": "sha1-dwat7VmpntygbmtUu4bI7BnJUVU=", + "dev": true + } + } + }, + "pull-pushable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.1.1.tgz", + "integrity": "sha1-hmZqu+P1QC8ffq0D7v1pt4Xspbg=", + "dev": true + }, + "pull-reader": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.9.tgz", + "integrity": "sha1-0umtALz7VOYqpm1Cwtu8tetoQ7A=", + "dev": true + }, + "pull-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pull-sort/-/pull-sort-1.0.0.tgz", + "integrity": "sha1-Djn7mjjlQXW+/kGOq6ISI/LA5wU=", + "dev": true + }, + "pull-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.0.tgz", + "integrity": "sha1-WdAzpoFdTjCX1Hw9KxiTqeWKI1E=", + "dev": true + }, + "pull-stream-to-stream": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/pull-stream-to-stream/-/pull-stream-to-stream-1.3.4.tgz", + "integrity": "sha1-P4HYIWvRjSv9GhmBkEcRgOJzg5k=", + "dev": true + }, + "pull-through": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz", + "integrity": "sha1-jdYjFCY+Wc9Qlur7sSeitu8xBzU=", + "dev": true, + "dependencies": { + "looper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", + "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", + "dev": true + } + } + }, + "pull-traverse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pull-traverse/-/pull-traverse-1.0.3.tgz", + "integrity": "sha1-dPtde+f6a9enjpeTPhmbeUWGaTg=", + "dev": true + }, + "pull-utf8-decoder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz", + "integrity": "sha1-p6+iOE0eZBWl1gIFQSbMjeO8vOc=", + "dev": true + }, + "pull-window": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", + "integrity": "sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA=", + "dev": true + }, + "pull-write": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz", + "integrity": "sha1-3d6jFJO0j2douEooHQHrO1Mf4Lg=", + "dev": true, + "dependencies": { + "looper": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", + "integrity": "sha1-dwat7VmpntygbmtUu4bI7BnJUVU=", + "dev": true + } + } + }, + "pull-write-file": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/pull-write-file/-/pull-write-file-0.2.4.tgz", + "integrity": "sha1-Q3NErrIYn2XmeO0a838PdgpUU+8=", + "dev": true + }, + "pull-ws": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.9.tgz", + "integrity": "sha1-ipBQKkHZBY/LMJatSCOg8YnWE7o=", + "dev": true + }, + "pull-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pull-zip/-/pull-zip-2.0.1.tgz", + "integrity": "sha1-4GQc6v+WSvJ1ltqsBwDnmzgQKPU=", + "dev": true + }, + "pump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "dev": true + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regenerator-transform": { + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true + }, + "relative-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz", + "integrity": "sha1-0hxSpy1gYQGLzun5yfwQa/fWUoc=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "dependencies": { + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-nocache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/require-nocache/-/require-nocache-1.0.0.tgz", + "integrity": "sha1-pmXQtgoH6CSYdXkKTTUCGdPIX6M=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true + }, + "rlp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz", + "integrity": "sha1-nbOE/0uJqPYVY9kjldhiWxjzr7A=", + "dev": true + }, + "rsa-pem-to-jwk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz", + "integrity": "sha1-JF52vbfnI0z+58oDLTG1TDj6uY4=", + "dev": true, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + } + } + }, + "rsa-unpack": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/rsa-unpack/-/rsa-unpack-0.0.6.tgz", + "integrity": "sha1-9Q69VqYoN45jHylxYQJs6atO3bo=", + "dev": true + }, + "run-parallel-limit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.0.3.tgz", + "integrity": "sha1-bDkwzHwLR9Na50IBCfZgqt4kAeM=", + "dev": true + }, + "run-series": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz", + "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sandwich-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-1.0.0.tgz", + "integrity": "sha1-eDDkV5e1kzKH8fmyj4cZB0ViYvI=", + "dev": true + }, + "scrypt": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", + "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", + "dev": true + }, + "scrypt-async": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/scrypt-async/-/scrypt-async-1.3.1.tgz", + "integrity": "sha1-oR/W+smBtLgj7gHe4CIRaVAN2uk=", + "dev": true + }, + "scrypt.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.0.tgz", + "integrity": "sha1-r40UZbcemZARC+38WTuUeeA6ito=", + "dev": true + }, + "scryptsy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", + "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", + "dev": true + }, + "secp256k1": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.3.0.tgz", + "integrity": "sha512-CbrQoeGG5V0kQ1ohEMGI+J7oKerapLTpivLICBaXR0R4HyQcN3kM9itLsV5fdpV1UR1bD14tOkJ1xughmlDIiQ==", + "dev": true + }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=", + "dev": true + }, + "semaphore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.0.5.tgz", + "integrity": "sha1-tJJXbmavGT25XWXiXsU/Xxl5jWA=", + "dev": true + }, + "semver": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz", + "integrity": "sha1-oykqNz5vPgeY2gsgZBuanFvEfhk=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true + }, + "sha3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.0.tgz", + "integrity": "sha1-aYnxtwpJhwWHajc+LGKs6WqpOZo=", + "dev": true + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shelljs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", + "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "signed-varint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", + "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", + "dev": true + }, + "simple-get": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", + "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", + "dev": true + }, + "simple-peer": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-6.4.4.tgz", + "integrity": "sha1-TkIfSFrHsTsIB3pEdpNNUsW6O7M=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true + }, + "socket.io": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", + "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "dev": true, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "solc": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.6.tgz", + "integrity": "sha1-r6kpoc6vwCUs+7QhfI4rHasTnbc=", + "dev": true, + "dependencies": { + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true + } + } + }, + "solidity-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/solidity-parser/-/solidity-parser-0.2.0.tgz", + "integrity": "sha1-MXqoZf9xI5v8Ly0D5ljs4aGW7co=", + "dev": true, + "dependencies": { + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true + } + } + }, + "solidity-sha3": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/solidity-sha3/-/solidity-sha3-0.4.1.tgz", + "integrity": "sha1-F1d+k/bP1YSJxOx/LaMEdTAynsE=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "dev": true + } + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true + }, + "spawn-args": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.1.0.tgz", + "integrity": "sha1-PgIyoFcbOHkH+LP1RKpTHGIkhIw=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true + }, + "split2": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.1.1.tgz", + "integrity": "sha1-eh9VHhdqkOzTNF9yRqDP4XXvT9A=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=", + "dev": true + }, + "static-eval": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.4.tgz", + "integrity": "sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns=", + "dev": true, + "dependencies": { + "escodegen": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", + "integrity": "sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M=", + "dev": true + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "estraverse": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz", + "integrity": "sha1-N8K4k+8T1yPydth41g2FNRUqbEI=", + "dev": true + } + } + }, + "static-module": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-1.3.2.tgz", + "integrity": "sha1-Mp+58iOlZiZr2nGEO32TLHZxdPM=", + "dev": true, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-inspect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", + "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=", + "dev": true + }, + "quote-stream": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz", + "integrity": "sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true + }, + "stream-to-pull-stream": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz", + "integrity": "sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4=", + "dev": true, + "dependencies": { + "looper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", + "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", + "dev": true + } + } + }, + "streamifier": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", + "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", + "dev": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tape": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.6.3.tgz", + "integrity": "sha1-Y353WB6ass4XV36b1M5PV1gG2LY=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tar-fs": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz", + "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", + "dev": true + }, + "tar-stream": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "dev": true + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "timed-tape": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/timed-tape/-/timed-tape-0.1.1.tgz", + "integrity": "sha1-m25WnxfmbHnx7tLSX/eWL8dBjkk=", + "dev": true + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", + "dev": true + }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true, + "dependencies": { + "hoek": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", + "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", + "dev": true + } + } + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "truffle": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-3.1.2.tgz", + "integrity": "sha1-2s3QeZldtGc25mDQ/4zvWeBL8tc=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "dev": true + }, + "web3": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.0.tgz", + "integrity": "sha1-A+RHG8KFOoF38GIS/K1q3xsWc2o=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true + } + } + }, + "truffle-artifactor": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/truffle-artifactor/-/truffle-artifactor-2.1.4.tgz", + "integrity": "sha1-Mgs44QKn+au38qqa9ngbmdc1vRM=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "ethjs-abi": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.8.tgz", + "integrity": "sha1-zSiFg+1ijN+tr4re+juh28vKbBg=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", + "dev": true + }, + "truffle-contract": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/truffle-contract/-/truffle-contract-2.0.1.tgz", + "integrity": "sha1-+D4/GNgEQCfyqe58M3Z7oQ/Tndg=", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + } + } + }, + "truffle-blockchain-utils": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.1.tgz", + "integrity": "sha1-B6WOVbsFVaZCCMkRnAsE/+FGSqQ=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + } + } + }, + "truffle-compile": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/truffle-compile/-/truffle-compile-1.0.0.tgz", + "integrity": "sha1-pisxav/Q8KoJnlVXOAMd38XrN9c=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "solc": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.8.tgz", + "integrity": "sha1-lqu+4SZjQa6X+0vcOrzJvBtQUqs=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true + } + } + }, + "truffle-config": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.7.tgz", + "integrity": "sha1-Axhbud3YjGKmowbP38SVs8cV58Q=", + "dev": true, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + } + } + }, + "truffle-contract": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/truffle-contract/-/truffle-contract-1.1.11.tgz", + "integrity": "sha1-zh+nh/eXdYr/Vy9F6LEXRSf27ao=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "ethjs-abi": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.8.tgz", + "integrity": "sha1-zSiFg+1ijN+tr4re+juh28vKbBg=", + "dev": true + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", + "dev": true + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "dev": true + } + } + }, + "truffle-contract-schema": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/truffle-contract-schema/-/truffle-contract-schema-0.0.5.tgz", + "integrity": "sha1-Xp0gvQvyon/pQxB0gknUhO7kmWE=", + "dev": true, + "dependencies": { + "crypto-js": { + "version": "3.1.9-1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz", + "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=", + "dev": true + } + } + }, + "truffle-contract-sources": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-contract-sources/-/truffle-contract-sources-0.0.1.tgz", + "integrity": "sha1-KbYnA2bIYQnLsOswdBj8ayeV1/0=", + "dev": true + }, + "truffle-deployer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/truffle-deployer/-/truffle-deployer-0.1.2.tgz", + "integrity": "sha1-VCQcKLGdL28ce6Nw2PdDnuMJhz8=", + "dev": true + }, + "truffle-error": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.2.tgz", + "integrity": "sha1-AbGJt4UFVmrhaJwjnHyi3RIc/kw=", + "dev": true + }, + "truffle-expect": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/truffle-expect/-/truffle-expect-0.0.3.tgz", + "integrity": "sha1-m3XO80O9WW5+XbyHj18bLjGKlEw=", + "dev": true + }, + "truffle-hdwallet-provider": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz", + "integrity": "sha1-Dh3gIQS3PTh14c9wkzBbTqii2EM=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "ethereumjs-util": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", + "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + }, + "web3-provider-engine": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz", + "integrity": "sha1-TYbhnjDKr5ffNRUR7A9gE25bMOs=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "dev": true + } + } + } + } + }, + "truffle-init": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/truffle-init/-/truffle-init-1.0.6.tgz", + "integrity": "sha1-gHZaQJ2fL1w+i2a27UrF2+dcnZQ=", + "dev": true, + "dependencies": { + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "dev": true + } + } + }, + "truffle-migrate": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/truffle-migrate/-/truffle-migrate-0.0.5.tgz", + "integrity": "sha1-tKMTkk7Ya1wzOtqkL2NT9Qrb8So=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "truffle-config": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.2.tgz", + "integrity": "sha1-xBvM3nmHkSRHJMYrIx9x5nd9vPo=", + "dev": true + }, + "truffle-deployer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/truffle-deployer/-/truffle-deployer-0.1.1.tgz", + "integrity": "sha1-BP6ng6x7wy1/4qdgasy1+B4G2Yg=", + "dev": true + }, + "truffle-error": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.1.tgz", + "integrity": "sha1-Szm631SAWiBulfynK+yrzsLAWm8=", + "dev": true + }, + "truffle-require": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/truffle-require/-/truffle-require-0.0.2.tgz", + "integrity": "sha1-8j6szEB3NaYEns/VnpkYO8RgE2w=", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + } + } + }, + "truffle-provider": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-provider/-/truffle-provider-0.0.1.tgz", + "integrity": "sha1-nQ3bARMd4ePFnE+KBTK9J3CBHx8=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + } + } + }, + "truffle-provisioner": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/truffle-provisioner/-/truffle-provisioner-0.1.0.tgz", + "integrity": "sha1-Ap5SScEBUwBzhTXgT97ZMaU8T2I=", + "dev": true + }, + "truffle-require": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/truffle-require/-/truffle-require-0.0.3.tgz", + "integrity": "sha1-csCQgiuTWJedgr5vSru1MFr22XY=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "truffle-config": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.6.tgz", + "integrity": "sha1-m/zu4p8LYuGt7zfwMF3zE/Y9RWs=", + "dev": true + }, + "truffle-error": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.1.tgz", + "integrity": "sha1-Szm631SAWiBulfynK+yrzsLAWm8=", + "dev": true + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "dev": true + } + } + }, + "truffle-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/truffle-resolver/-/truffle-resolver-1.0.1.tgz", + "integrity": "sha1-sMwWuBAcTGtqF703Hf26aTLvEEo=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + } + } + }, + "truffle-solidity-utils": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/truffle-solidity-utils/-/truffle-solidity-utils-0.0.1.tgz", + "integrity": "sha1-E6kOO9l53wHbszEujyrgw++W0bM=", + "dev": true + }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true + }, + "tunnel": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.2.tgz", + "integrity": "sha1-8jvNi3p7ioZCYbIIT2b5MZM5YzQ=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", + "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", + "dev": true + }, + "tweetnacl-util": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz", + "integrity": "sha1-45zV2ZcJ7nEloYsDiVtFoSmeR18=", + "dev": true + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz", + "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=", + "dev": true + }, + "typescript": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "unorm": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", + "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "utf8": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", + "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY=", + "dev": true + }, + "utf8-bytes": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz", + "integrity": "sha1-EWsCVEjJtQAIHN+/H01sbDfYg30=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", + "dev": true + }, + "vcsurl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/vcsurl/-/vcsurl-0.1.1.tgz", + "integrity": "sha1-XgChCec4G1W11FuJJTPI7DXJMgw=", + "dev": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true + }, + "web3": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.15.3.tgz", + "integrity": "sha1-+ZfM2kGfxSjA1sXY1TgiEr+nRig=", + "dev": true, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + } + } + }, + "web3-provider-engine": { + "version": "8.1.19", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.1.19.tgz", + "integrity": "sha1-PMrpWt7O9VYy4qc7877mS35i/Pc=", + "dev": true, + "dependencies": { + "async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", + "dev": true + }, + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "dev": true + }, + "ethereumjs-util": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", + "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", + "dev": true + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "dev": true + } + } + }, + "webcrypto-core": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.16.tgz", + "integrity": "sha1-3kkUtZFI23Moe8T45hz0+y9W8CA=", + "dev": true, + "optional": true + }, + "webcrypto-shim": { + "version": "github:dignifiedquire/webcrypto-shim#effe03d3401ccbfb4837191bc393bb347e0c0f0a", + "dev": true + }, + "wget-improved": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/wget-improved/-/wget-improved-1.5.0.tgz", + "integrity": "sha512-t+G+g9SQSy2h2+dg7h54r9adllfdI0fHHtshbl1V4jwIIBj1c10SmHwjP8vFx9fn1dr9QuF27uC7xoZr9YwEmg==", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true + }, + "ws": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", + "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", + "dev": true + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true + }, + "xhr": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz", + "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=", + "dev": true + }, + "xhr2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", + "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz", + "integrity": "sha1-GquWYOrnnYuPZ1vK7qtu40ws9pw=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/package.json b/package.json index c536254..c691518 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,9 @@ }, "homepage": "https://github.com/uport-project/uport-identity#readme", "devDependencies": { + "babel-preset-es2015": "^6.24.1", + "babel-preset-stage-2": "^6.24.1", + "babel-preset-stage-3": "^6.24.1", "bluebird": "^3.5.0", "eth-signer": "^0.2.2", "ethereumjs-testrpc": "^3.0.3", diff --git a/test/MetaTx.js b/test/MetaTx.js index 60665bc..a769356 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -2,6 +2,7 @@ const lightwallet = require('eth-lightwallet') const evm_increaseTime = require('./evmIncreaseTime.js') const MetaTxRelay = artifacts.require('TxRelay') const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') const Promise = require('bluebird') @@ -9,7 +10,35 @@ const compareCode = require('./compareCode') const solsha3 = require('solidity-sha3').default web3.eth = Promise.promisifyAll(web3.eth) -let zero = "0000000000000000000000000000000000000000000000000000000000000000" + + +const LOG_NUMBER_1 = 1234 +const LOG_NUMBER_2 = 2345 + +const userTimeLock = 100; +const adminTimeLock = 1000; +const adminRate = 200; + +const zero = "0000000000000000000000000000000000000000000000000000000000000000" + +function enc(funName, types, params) { + return '0x' + lightwallet.txutils._encodeFunctionTxData(funName, types, params) +} + +//Returns random number in [1, 99] +function getRandomNumber() { //Thanks Oed :~) + return Math.floor(Math.random() * (100 - 1)) + 1; +} + +//Returns a random hex string +function getRandomHexString(length) { + var randStr = ""; + var hexChar = "0123456789abcdef" + for (var i = 0; i < length; i++) { + randStr += hexChar.charAt(Math.floor(Math.random() * hexChar.length)) + } + return randStr +} //Left packs a (hex) string function pad(n) { @@ -26,7 +55,7 @@ function pad(n) { } } -function signPayload(relayContract, signingAddr, sendingAddress, destination, numBlocks, +function signPayload(relayContract, signingAddr, sendingAddress, destination, functionName, functionTypes, functionParams, lw, keyFromPw) { return new Promise( function (resolve, reject) { @@ -45,22 +74,16 @@ function signPayload(relayContract, signingAddr, sendingAddress, destination, nu relayContract.getNonce.call(signingAddr).then(currNonce => { nonce = currNonce - return relayContract.getBlock.call() - }).then(currBlock => { - //console.log("Current Block:", currBlock) - blockTimeout = currBlock.plus(numBlocks) - //console.log("Block Timeout:", blockTimeout) + //Tight packing, as Solidity sha3 does hashInput = relayContract.address + pad(nonce.toString('16')).slice(2) + destination.slice(2) + data.slice(2) + sendingAddress.slice(2) - + pad(blockTimeout.toString('16')).slice(2) hash = solsha3(hashInput) sig = lightwallet.signing.signMsgHash(lw, keyFromPw, hash, signingAddr) retVal.r = '0x'+sig.r.toString('hex') retVal.s = '0x'+sig.s.toString('hex') retVal.v = sig.v //Q: Why is this not converted to hex? retVal.data = data - retVal.blockTimeout = blockTimeout.toString() retVal.hash = hash retVal.nonce = nonce resolve(retVal) @@ -68,14 +91,6 @@ function signPayload(relayContract, signingAddr, sendingAddress, destination, nu }) } - -const LOG_NUMBER_1 = 1234 -const LOG_NUMBER_2 = 2345 - -const userTimeLock = 100; -const adminTimeLock = 1000; -const adminRate = 200; - contract('IdentityManagerMetaTx', (accounts) => { let proxy let deployedProxy @@ -94,6 +109,15 @@ contract('IdentityManagerMetaTx', (accounts) => { let lw let keyFromPw + let data + let types + let params + let newData + let res + let regData + let p + let errorThrown = false; + beforeEach((done) => { let seed = "pull rent tower word science patrol economy legal yellow kit frequent fat" @@ -122,6 +146,7 @@ contract('IdentityManagerMetaTx', (accounts) => { sender = accounts[0] notSender = accounts[1] + regularUser = accounts[2] MetaTxRelay.new().then(instance => { txRelay = instance @@ -145,268 +170,328 @@ contract('IdentityManagerMetaTx', (accounts) => { }) }) - it('Correctly creates Identity', (done) => { - let log - metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}).then(tx => { - log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - - assert.equal(log.args.owner, - user1, - 'Owner key is set in event') - assert.equal(log.args.recoveryKey, - recoveryKey, - 'Recovery key is set in event') - assert.equal(log.args.creator, - sender, - 'Creator is set in event') - // Check that the mapping has correct proxy address - - return compareCode(log.args.identity, deployedProxy.address) - }).then(() => { - Proxy.at(log.args.identity).owner.call().then((proxyOwner) => { - assert.equal(proxyOwner, metaIdentityManager.address, 'Proxy owner should be the identity manager') - done() - }).catch(done) + describe("Regular transactions", () => { + //Deploy a new Proxy controlled by regular user who does not use meta tx + beforeEach(async function() { + errorThrown = false + metaIdentityManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + let tx = await metaIdentityManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) + assert.equal(tx.logs[0].event, 'IdentityCreated', 'Wrong event') + proxy = Proxy.at(tx.logs[0].args.identity) + }) + + it('Should forward properly formatted tx', async function() { + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [regularUser, proxy.address, testReg.address, 0, data] + newData = enc('forwardTo', types, params) + + res = await txRelay.checkAddress(newData, regularUser) + assert.isTrue(res, "Address is not first parameter") + + await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') + }) + + it('Should not forward tx from someone lying about address', async function() { + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] //lies about who they are + newData = enc('forwardTo', types, params) + + res = await txRelay.checkAddress(newData, regularUser) + assert.isFalse(res, "Address is first parameter, should be someone else") + + try { + await txRelay.relayTx( metaIdentityManager.address, newData, {from: regularUser}) + } catch(e) { + assert.isFalse(errorThrown, "Sanity check") + assert.match(e.message, /invalid JUMP/, "Should have thrown, user lied about address") + errorThrown = true + } + + assert.isTrue(errorThrown, "Should have thrown, user lied about address") + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) + + it('Should not forward properly formatted tx with Ether', async function() { + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [regularUser, proxy.address, testReg.address, 0, data] + newData = enc('forwardTo', types, params) + + res = await txRelay.checkAddress(newData, regularUser) + assert.isTrue(res, "Address is not first parameter") + + try { + await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser, value: 100}) + } catch (e) { + assert.isFalse(errorThrown, "Sanity check") + assert.match(e.message, /invalid JUMP/, "Should have thrown, cannot forward Ether") + errorThrown = true; + } + + assert.isTrue(errorThrown, "Should have thrown, cannot forward Ether") + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) + + it('Should forward tx multiple times', async function() { + for (let i = 0; i < 100; i++) { + let randNum = getRandomNumber() + data = enc('register', ['uint256'], [randNum]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [regularUser, proxy.address, testReg.address, 0, data] + newData = enc('forwardTo', types, params) + + await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') + } }) }) + describe("Meta transactions", () => { + beforeEach(async function() { + errorThrown = false + }) + + it('Should forward properly formatted meta tx', async function() { + //Setup data and sign + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") - it('Sends transactions initiated by owner', (done) => { - // Encode the transaction to send to the Owner contract - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - return txRelay.checkAddress.call(p.data, user1) - }).then(res => { - assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - //Send another transaction, as well as check that nonce is updated. - data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') + + //Setup another transaction + data = enc('register', ['uint256'], [LOG_NUMBER_2]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user1, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) - }).then(retVal => { - p = retVal + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) assert.equal(p.nonce.toString(), "1", "Nonce did not increment") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User1 should be able to send another transaction') - done() - }).catch(done) - }) - it('Sends properly formatted transactions initiated by non-owner, but MetaIdentityManager stops them', (done) => { - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user2, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), 0, 'Should have reset the test registry') - return txRelay.checkAddress.call(p.data, user2) - }).then(res => { - assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), 0, 'User2 should not be able to send transaction') - // note: the reason this does not throw an error is that the nonce should be updated. - // thus, while the sub call throws, the relay call itself does not. - // try again, this time should have a different nonce. - data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'Registry did not update properly') + }) + + + it('Should forward properly formatted meta tx, though future calls may fail', async function() { + data = enc('register', ['uint256'], [LOG_NUMBER_1]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user2, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) - }).then(retVal => { - p = retVal + p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user2) + assert.isTrue(res, "Address is not first parameter") + + //Does not throw as the nonce needs to be updated + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + + //Try another transaction, where nonce should have updated. + data = enc('register', ['uint256'], [LOG_NUMBER_2]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user2, proxy.address, testReg.address, 0, data] + p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) assert.equal(p.nonce.toString(), '1', 'Nonce should have updated, even though sub-call failed') - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), 0, 'User2 should still not be able to send a transaction') - done() - }).catch(done) - }) + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) - it('Doesn\'t send transactions initiated by someone claiming to be someone else', (done) => { - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, data] - //Claim to be user1 by encoding their address, but can only sign w/ user2 key, as they don't have user1's key - signPayload(txRelay, user2, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - return txRelay.checkAddress.call(p.data, user1) - }).then(res => { + it('Should not forward meta tx from someone lying about address', async function() { + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + //Claim to be user1 by encoding their address, but can only sign w/ user2 key, as they don't have user1's key + p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + res = await txRelay.checkAddress.call(p.data, user1) //This will still pass. User should be able to encode anything they want in data. - assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: sender}) - }).then(tx => { - assert.isTrue(false, "Transaction above should have failed") - }).catch(error => { - assert.match(error.message, /invalid JUMP/, "should have thrown an error") - }).then(() => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), 0, 'Transaction should not have been processed') - done() - }).catch(done) - }) + assert.isTrue(res, "Address is not first parameter") + + try { + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "Should have thrown, user lied about address") + errorThrown = true + } + + assert.isTrue(errorThrown, "Should have thrown, user lied about address") + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) - it('Shouldn\'t allow a relayer other than the one allowed', (done) => { - // Encode the transaction to send to the Owner contract - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, data] - //Claim to be user1 by encoding their address, but can only sign w/ their key, as they don't have user1's key - signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - return txRelay.checkAddress.call(p.data, user1) - }).then(res => { - assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, p.blockTimeout, {from: notSender, gas: 3000000}) - }).then(tx => { - assert.isTrue(false, "Transaction above should have failed") - }).catch(error => { - assert.match(error.message, /invalid JUMP/, "should have thrown an error") - }).then(() => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), 0, 'Transaction should not have been processed') - done() - }).catch(done) - }) + it('Should not forward meta tx from a dishonest relayer', async function() { + // Encode the transaction to send to the Owner contract + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + //Claim to be user1 by encoding their address, but can only sign w/ their key, as they don't have user1's key + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + try { + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: notSender}) + } catch (e) { + assert.isFalse(errorThrown, "Sanity check") + assert.match(e.message, /invalid JUMP/, "Should have thrown, wrong relayer forwarded") + errorThrown = true + } + assert.isTrue(errorThrown, "Should have thrown, wrong relayer forwarded") + + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) - it('should not allow ether to be sent with a meta-tx ether', (done) => { - // Encode the transaction to send to the Owner contract - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, data] - signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - return txRelay.checkAddress.call(p.data, user1) - }).then(res => { - assert.isTrue(res, "Address should be included as first input in data") - //Same as first transaction, and sent with Wei - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender, value: 100}) - }).catch(error => { - assert.match(error, /invalid JUMP/, "should have thrown an error as ether was sent") - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), '0', 'User1 should be able to send transaction') - - //Sign again, this time should have a different nonce. - data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) + it('Should not forward meta tx with Ether', async function () { + //Setup data and sign + data = enc('register', ['uint256'], [LOG_NUMBER_1]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user1, proxy.address, testReg.address, 0, data] - return signPayload(txRelay, user1, sender, metaIdentityManager.address, 100, 'forwardTo', types, params, lw, keyFromPw) - }).then(retVal => { - p = retVal - assert.equal(p.nonce.toString(), "0", "Nonce should not have incremented, as tx threw.") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) - }).then(tx => { - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User1 should be able to another transaction') - done() - }).catch(done) - }) + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + try { + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender, value: 10000}) + } catch(e) { + assert.isFalse(errorThrown, "Sanity check") + assert.match(e.message, /invalid JUMP/, "Should have thrown an error, included Ether") + errorThrown = true; + } + assert.isTrue(errorThrown, "Should have thrown an error, included Ether") + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') + }) - it('should not send transaction that has timed out', (done) => { - // Encode the transaction to send to the Owner contract - let p - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, data] - //Give it a 0 block leway, then call a function to advance block forward one - signPayload(txRelay, user1, sender, metaIdentityManager.address, 0, 'forwardTo', types, params, lw, keyFromPw).then(retVal => { - p = retVal - //This will throw, but will advance blocks forward by one. - return metaIdentityManager.forwardTo(sender, deployedProxy.address, testReg.address, 0, data) - }).then(() => { - assert.isTrue(false, "should have thrown an error") - }).catch(e => { - assert.match(e, /invalid JUMP/, 'should have thrown') - return txRelay.checkAddress.call(p.data, user1) - }).then(res => { - assert.isTrue(res, "Address should be included as first input in data") - return txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, p.blockTimeout, {from: sender}) - }).then(tx => { - assert.isTrue(false, 'should have thrown an error') - }).catch(e => { - assert.match(e, /invalid JUMP/, 'should have thrown') - done() - }).catch(done) + it('Should forward meta tx multiple times', async function() { + for (let i = 0; i < 100; i++) { + let randNum = getRandomNumber() + data = enc('register', ['uint256'], [randNum]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + assert.equal(p.nonce, i.toString(), "Nonce should have updated") + await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') + } + }) }) + //Not working properly + it('Should not have massive overhead :~)', async function() { + //Setup data and sign + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + + //FIRST: Test throw, to increment the nonce for better reporting + throwData = enc('doThrow', [], []) + throwParams = [user1, proxy.address, testReg.address, 0, throwData] + pThrow = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + await txRelay.relayMetaTx(pThrow.v, pThrow.r, pThrow.s, metaIdentityManager.address, + pThrow.data, user1, {from: sender}) + + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + assert.equal(p.nonce.toString(), "1", "Nonce should have been incremented") + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + let tx = await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + //console.log("Meta-tx, set from zeros: ", tx.receipt.gasUsed) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') - //Issues w/ getting account to unlock as it is not a truffle account. will - //fix this later. - /* - it('Should allow ether to be sent with a regular transaction?', (done) => { - //Deposit money in the proxy contract - //this will call the fallback as there is no function w/ this signature, but need to ecode address - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('randomName', ['address'], [user1]) - txRelay.checkAddress.call(data, user1).then(res => { - assert.isTrue(res, "no data provided") - return txRelay.checkAddress.call(data, user2) - }).then(res => { - assert.isFalse(res, "should not be valid address") - return txRelay.relayTx(proxy.address, data, {from: user1, value: 100}) - }).then((tx) => { - console.log(tx) - // Verify that the proxy address is logged as the sender - done() - }).catch(done) - }) */ - - - it('Should not approve bad data', (done) => { + //Try with a non-meta tx + let idenManager = await IdentityManager.new(userTimeLock, adminTimeLock, adminRate) + tx = await idenManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + let newProxy = Proxy.at(log.args.identity) + + tx = await idenManager.forwardTo(newProxy.address, testReg.address, 0, data, {from: regularUser}) + //console.log("IdenManager (no meta) tx, set from zeros: ", tx.receipt.gasUsed) + + tx = await testReg.register(LOG_NUMBER_1) + //console.log("regular transaction, set from zeros: ", tx.receipt.gasUsed) + + //Try again. + data = enc('register', ['uint256'], [LOG_NUMBER_2]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + assert.equal(p.nonce.toString(), "2", "Nonce should have been incremented twice") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) + //console.log("Meta-tx, set from non-zeros: ", tx.receipt.gasUsed) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_2, 'Registry did not update properly') + + tx = await idenManager.forwardTo(newProxy.address, testReg.address, 0, data, {from: regularUser}) + //console.log("IdenManager (no meta) tx, set from non-zeros: ", tx.receipt.gasUsed) + + tx = await testReg.register(LOG_NUMBER_1) + //console.log("regular transaction, set from non-zeros: ", tx.receipt.gasUsed) + }) + + it('Should not approve bad data', async function () { //This function needs some serious thought + testing - let types = ['address', 'address', 'address', 'uint256', 'bytes'] - let params = [user1, proxy.address, testReg.address, 0, []] - - let emptyData = '0x' + lightwallet.txutils._encodeFunctionTxData('', [], []) - //What happens with a send? Are the first 4 bytes empty? Yes, so this is a worry. Should assume they can't send eth through a meta-tx - let shortData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params).substring(0, 16) - let longData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params) - let wrongAddressData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, [user2, proxy.address, testReg.address, 0, []]).substring(0, 16) - let firstHalfAddressData = '0x' + lightwallet.txutils._encodeFunctionTxData('forwardTo', types, params).substring(0, 26) + zero - - - txRelay.checkAddress.call(emptyData, user1).then(res => { - assert.isFalse(res, "Empty data should not return true") - return txRelay.checkAddress.call(shortData, user1) - }).then(res => { - assert.isFalse(res, "Data that is to short should return false") - return txRelay.checkAddress.call(longData, user1) - }).then(res => { - assert.isTrue(res, 'Correctly encoded address should return true') - return txRelay.checkAddress.call(wrongAddressData, user1) - }).then(res => { - assert.isFalse(res, "Other address should not be allowed") - return txRelay.checkAddress.call(firstHalfAddressData, user1) - }).then(res => { - assert.isFalse(res, "Full address is not included") - done() + let t = ['address', 'address', 'address', 'uint256', 'bytes'] //types + let p = [user1, proxy.address, testReg.address, 0, []] //params + let n = "forwardTo" //name of function + + //encoded correctly + data = enc(n, t, p) + res = await txRelay.checkAddress.call(data, user1) + assert.isTrue(res, "Address is not first parameter") + //off by a nibble + data = enc(n, t, p).slice(1) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be shifted off") + //short + data = enc(n, t, p).substring(0, 16) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be too short") + //wrong address + let badParam = [user2, proxy.address, testReg.address, 0, []] + data = enc(n, t, badParam) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be someone else") + //first half of address + data = enc(n, t, p).substring(0, 26) + zero + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be too short") + + //Test with a bunch of randomly generated data + for (let i = 0; i < 10; i++) { + data = getRandomHexString(36); //minimal length to possibly pass + res = await txRelay.checkAddress(data, user1) //probabilistically, should never be true. + assert.isFalse(res, "Address is first parameter, probabilistically should not be") + } }) - }) }) diff --git a/test/recoveryController.js b/test/recoveryController.js index d8dfeac..43b491f 100644 --- a/test/recoveryController.js +++ b/test/recoveryController.js @@ -116,6 +116,24 @@ contract('RecoverableController', (accounts) => { }).catch(done) }) + + + + it('Correctly calculates gas price', (done) => { // userkey is currently user2 + recoverableController.changeUserKeyFromRecovery(user3, {from: admin1}).then(tx => { + console.log("gas used: ", tx.receipt.gasUsed) + return recoverableController.userKey() + }).then((userKey) => { + assert.equal(user3, user3, 'New user should immediately take affect') + return recoverableController.changeUserKeyFromRecovery(user2, {from: admin1}) + }).then(tx => { + + console.log("gas used again: ", tx.receipt.gasUsed) + done() + }).catch(done) + }) + + it('Updates userKey as recovery', (done) => { // userkey is currently user2 recoverableController.changeUserKeyFromRecovery(user3, {from: user2}).then(() => { return recoverableController.userKey() diff --git a/yarn.lock b/yarn.lock index 89a0919..a533b9a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -275,6 +275,22 @@ babel-generator@^6.24.1: source-map "^0.5.0" trim-right "^1.0.1" +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" @@ -293,6 +309,23 @@ babel-helper-define-map@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" @@ -332,6 +365,16 @@ babel-helper-regex@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" @@ -362,6 +405,73 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -530,6 +640,21 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: babel-runtime "^6.22.0" regexpu-core "^2.0.0" +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.22.0" + babel-plugin-transform-regenerator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" @@ -551,7 +676,7 @@ babel-polyfill@^6.23.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-preset-es2015@*: +babel-preset-es2015@*, babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" dependencies: @@ -580,6 +705,25 @@ babel-preset-es2015@*: babel-plugin-transform-es2015-unicode-regex "^6.24.1" babel-plugin-transform-regenerator "^6.24.1" +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + babel-register@*, babel-register@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" @@ -1243,7 +1387,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@2.2.0, debug@~2.2.0: +debug@2.2.0, debug@^2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: @@ -1261,7 +1405,7 @@ debug@2.6.1: dependencies: ms "0.7.2" -debug@^2.1.0, debug@^2.1.1, debug@^2.2.0, debug@^2.3.2, debug@^2.3.3, debug@^2.6.3: +debug@^2.1.0, debug@^2.1.1, debug@^2.3.2, debug@^2.3.3, debug@^2.6.3: version "2.6.4" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" dependencies: From 4f788dbbd9486ab4993f2dad1df50abc82d7ff46 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 10:19:29 -0400 Subject: [PATCH 29/53] Change compiler version --- contracts/MetaIdentityManager.sol | 2 +- contracts/TxRelay.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index f4b87b5..589fc9b 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.8; +pragma solidity 0.4.8; import "./Proxy.sol"; contract MetaIdentityManager { diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index 6a35776..4a70323 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.8; +pragma solidity 0.4.8; //This contract is meant as a "singleton" forwarding contract. //Eventually, it will be able to forward any transaction to From 30a4e24273170c105915d20850abb075cb63b2ff Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 10:21:34 -0400 Subject: [PATCH 30/53] Add TestRegistry to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b3732f2..8230268 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules notes.txt .DS_Store seed +TestRegistry.json From 2c25882f9cdd1712367ae1e551dfb8adc1dea76b Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:35:27 -0400 Subject: [PATCH 31/53] Reduce idenManager overheadon non-meta-tx --- contracts/MetaIdentityManager.sol | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index 589fc9b..212ab06 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -49,8 +49,8 @@ contract MetaIdentityManager { mapping(address => uint) migrationInitiated; mapping(address => address) migrationNewAddress; - modifier onlyRelay() { - if (msg.sender == relay) _; + modifier onlyAuthorized() { + if (msg.sender == relay || checkMessageData(msg.sender)) _; else throw; } @@ -108,45 +108,45 @@ contract MetaIdentityManager { } // Primary forward function - function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) onlyRelay onlyOwner(identity, sender) { + function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) onlyAuthorized onlyOwner(identity, sender) { identity.forward(destination, value, data); } // an owner can add a new device instantly - function addOwner(address sender, Proxy identity, address newOwner) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + function addOwner(address sender, Proxy identity, address newOwner) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, sender); } // a recovery key owner can add a new device with 1 days wait time - function addOwnerForRecovery(address sender, Proxy identity, address newOwner) onlyRelay onlyRecovery(identity, sender) rateLimited(identity, sender) { + function addOwnerFromRecovery(address sender, Proxy identity, address newOwner) onlyAuthorized onlyRecovery(identity, sender) rateLimited(identity, sender) { if (owners[identity][newOwner] > 0) throw; owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, sender); } // an owner can remove another owner instantly - function removeOwner(address sender, Proxy identity, address owner) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + function removeOwner(address sender, Proxy identity, address owner) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { owners[identity][owner] = 0; OwnerRemoved(identity, owner, sender); } // an owner can add change the recoverykey whenever they want to - function changeRecovery(address sender, Proxy identity, address recoveryKey) onlyRelay onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + function changeRecovery(address sender, Proxy identity, address recoveryKey) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { if (recoveryKey == address(0)) throw; recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, sender); } // an owner can migrate away to a new IdentityManager - function initiateMigration(address sender, Proxy identity, address newIdManager) onlyRelay onlyOlderOwner(identity, sender) { + function initiateMigration(address sender, Proxy identity, address newIdManager) onlyAuthorized onlyOlderOwner(identity, sender) { migrationInitiated[identity] = now; migrationNewAddress[identity] = newIdManager; MigrationInitiated(identity, newIdManager, sender); } // any owner can cancel a migration - function cancelMigration(address sender, Proxy identity) onlyRelay onlyOwner(identity, sender) { + function cancelMigration(address sender, Proxy identity) onlyAuthorized onlyOwner(identity, sender) { address canceledManager = migrationNewAddress[identity]; migrationInitiated[identity] = 0; migrationNewAddress[identity] = 0; @@ -156,7 +156,7 @@ contract MetaIdentityManager { // owner needs to finalize migration once adminTimeLock time has passed // WARNING: before transfering to a new address, make sure this address is "ready to recieve" the proxy. // Not doing so risks the proxy becoming stuck. - function finalizeMigration(address sender, Proxy identity) onlyRelay onlyOlderOwner(identity, sender) { + function finalizeMigration(address sender, Proxy identity) onlyAuthorized onlyOlderOwner(identity, sender) { if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { address newIdManager = migrationNewAddress[identity]; migrationInitiated[identity] = 0; @@ -165,4 +165,14 @@ contract MetaIdentityManager { MigrationFinalized(identity, newIdManager, sender); } } + + //Checks that address a is the first input in msg.data. + //Has very minimal gas overhead. Apparently, negative lol + function checkMessageData(address a) constant internal returns (bool t) { + if (msg.data.length < 36) return false; + assembly { + let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + t := eq(and(mask, a), and(mask, calldataload(4))) + } + } } From c0db8fa824b8fbcb609824b79da83696108841f8 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:35:49 -0400 Subject: [PATCH 32/53] update build --- build/contracts/ArrayLib.json | 4 +- build/contracts/IdentityFactory.json | 4 +- .../IdentityFactoryWithRecoveryKey.json | 4 +- build/contracts/MetaIdentityManager.json | 40 ++++++++++++++++++- build/contracts/Migrations.json | 4 +- build/contracts/Owned.json | 4 +- build/contracts/Proxy.json | 4 +- build/contracts/RecoverableController.json | 4 +- build/contracts/RecoveryQuorum.json | 8 ++-- build/contracts/TestRegistry.json | 29 +++++++++++++- build/contracts/TxRelay.json | 4 +- 11 files changed, 85 insertions(+), 24 deletions(-) diff --git a/build/contracts/ArrayLib.json b/build/contracts/ArrayLib.json index 84a3438..2df91cd 100644 --- a/build/contracts/ArrayLib.json +++ b/build/contracts/ArrayLib.json @@ -41,7 +41,7 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820516e471dc70991131ddc690f9231b497258dd55ca77107174305667663cc698e0029", + "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820b808e7322e3a3f6e9cd3537987354352d4b3f4b408ebd107d7c7269f0b254b0e0029", "networks": { "1": { "events": {}, @@ -81,5 +81,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105319 } \ No newline at end of file diff --git a/build/contracts/IdentityFactory.json b/build/contracts/IdentityFactory.json index bd1d7df..2449b95 100644 --- a/build/contracts/IdentityFactory.json +++ b/build/contracts/IdentityFactory.json @@ -72,7 +72,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b612135806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103828061033183396040519101819003906000f0801561000057925082878686604051610a13806106b38339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051611044806110c68339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a6500296060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c5a8f3b795c8dbee7c5b4947eb620a1a3f2535289465700e07cf1c52db0e9ce40029a165627a7a72305820b5b29fee59691f7012de114728a87a41313dd550e6103a166595bb5786dc2a2e0029", + "unlinked_binary": "0x606060405234610000575b6120b8806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103a88061033183396040519101819003906000f0801561000057925082878686604051610a13806106d98339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051610fa1806110ec8339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b007002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda3002960606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820422a49255190e2886a76104564ed7ad9d2ae2439b95318837c953decdc1e8a1d0029a165627a7a72305820c224ec59791a323cd5a65d75517817c84819f90046d4893889a280585ac5d5100029", "networks": { "1": { "events": { @@ -256,5 +256,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/IdentityFactoryWithRecoveryKey.json b/build/contracts/IdentityFactoryWithRecoveryKey.json index 65c86bc..6111eba 100644 --- a/build/contracts/IdentityFactoryWithRecoveryKey.json +++ b/build/contracts/IdentityFactoryWithRecoveryKey.json @@ -90,7 +90,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b61109d806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b60006000604051610382806102dd83396040519101819003906000f0801561000057915081868585604051610a138061065f8339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a650029a165627a7a723058209fd376266664192c335d5d46b908b18fb241916bd5918c5635f82aad08f459a40029", + "unlinked_binary": "0x606060405234610000575b6110c3806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b600060006040516103a8806102dd83396040519101819003906000f0801561000057915081868585604051610a13806106858339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b007002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda30029a165627a7a72305820fe9e1b8c199cdbefd4eae130f6b6f33f77204ecc3f0ce2c5a2ee35ae85dfe31f0029", "networks": { "3": { "events": { @@ -196,5 +196,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105319 } \ No newline at end of file diff --git a/build/contracts/MetaIdentityManager.json b/build/contracts/MetaIdentityManager.json index 5635517..a6ef718 100644 --- a/build/contracts/MetaIdentityManager.json +++ b/build/contracts/MetaIdentityManager.json @@ -64,6 +64,24 @@ "payable": false, "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "a", + "type": "address" + } + ], + "name": "checkMessageData", + "outputs": [ + { + "name": "t", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, { "constant": false, "inputs": [ @@ -186,6 +204,24 @@ "payable": false, "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "sender", + "type": "address" + } + ], + "name": "test", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, { "constant": false, "inputs": [ @@ -385,8 +421,8 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052346100005760405160808061132683398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b6112b78061006f6000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008d5780631e2629e1146100b45780633061e0ef146100db5780634466772514610102578063701b882614610129578063781f5a8314610196578063a5967039146101b7578063a949c637146101d8578063ac1028de146101ff578063c7576ed414610220575b610000565b34610000576100b2600160a060020a0360043581169060243581169060443516610241565b005b34610000576100b2600160a060020a03600435811690602435811690604435166103a2565b005b34610000576100b2600160a060020a03600435811690602435811690604435166104b1565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610632565b005b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061078395505050505050565b005b34610000576100b2600160a060020a0360043581169060243516610902565b005b34610000576100b2600160a060020a03600435811690602435166109fe565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610b13565b005b34610000576100b2600160a060020a0360043581169060243516610c77565b005b34610000576100b2600160a060020a0360043581169060243516610d42565b005b60035433600160a060020a039081169116141561008857600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102bb575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a0380831660009081526004602090815260408083209387168352929052908120548391859111801561041c575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a03848116600081815260076020908152604080832042905560088252918290208054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a0380831660009081526004602090815260408083209387168352929052908120548391859111801561052b575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a038083166000908152600660209081526040808320858516845290915290204290558516151561059f57610000565b600160a060020a038681166000818152600560209081526040918290208054600160a060020a0319168a86169081179091558251948c168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a03808316600090815260056020526040902054839185918116908216141561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156106f757610000565b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c1685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a038085166000908152600460209081526040808320938916835292905290812054859187911180156107fd5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156100885785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018060200182810382528381815181526020019150805190602001908083836000831461088f575b80518252602083111561088f57601f19909201916020918201910161086f565b505050905090810190601f1680156108bb5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b6108ed565b610000565b5b50506108fa565b610000565b5b5050505050565b600160a060020a038116151561091757610000565b600160a060020a03338116600090815260046020908152604080832093861683529290529081205411806109655750600160a060020a03338116600090815260056020526040812054909116115b1561096f57610000565b60008054600160a060020a03338116808452600460209081526040808620888516808852908352818720429690960390955582865260058252948590208054938716600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b5050565b60035460009033600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610a7b5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561008857600160a060020a038085166000818152600860208181526040808420805460078452828620959095559282528254600160a060020a03191690925581518a86168152915192909416965086937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f56792918290030190a35b61038f565b610000565b5b505061039c565b610000565b5b505050565b60035433600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610b8d575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190558a8516808552600484528285208b871680875290855294839020919091558151948c1685529051929390927f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b610382565b610000565b5b505061038f565b610000565b5b505061039c565b610000565b5b505050565b6000600160a060020a0382161515610c8e57610000565b60405161038280610f0a83396040519101819003906000f080156100005760008054600160a060020a038381168084526004602090815260408086208a8516808852908352818720429690960390955582865260058252948590208054600160a060020a031916898516908117909155855194855294519596509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b505050565b60035460009033600160a060020a039081169116141561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610dbf575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038416600090815260076020526040812054118015610e05575060008054600160a060020a03861682526007602052604090912054429101105b1561049457600160a060020a038085166000818152600860208181526040808420805460078452828620869055939092528154600160a060020a03191690915580517f1a695230000000000000000000000000000000000000000000000000000000008152919094166004820181905293519396509192631a69523092602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b61038f565b610000565b5b505061039c565b610000565b5b505050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029a165627a7a7230582048404a60fc8ddb7b84bf94a352b91212d973ec50e8654d1830eb2bd6805c12a00029", + "unlinked_binary": "0x6060604052346100005760405160808061147b83398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b61140c8061006f6000396000f3006060604052361561009e5763ffffffff60e060020a6000350416631a45fac781146100a35780631e2629e1146100ca5780633061e0ef146100f1578063417a7d60146101185780634466772514610145578063701b88261461016c578063781f5a83146101d9578063a5967039146101fa578063a949c6371461021b578063ac1028de14610242578063bb29998e14610263578063c7576ed414610290575b610000565b34610000576100c8600160a060020a03600435811690602435811690604435166102b1565b005b34610000576100c8600160a060020a0360043581169060243581169060443516610422565b005b34610000576100c8600160a060020a0360043581169060243581169060443516610541565b005b3461000057610131600160a060020a03600435166106d2565b604080519115158252519081900360200190f35b34610000576100c8600160a060020a03600435811690602435811690604435166106fe565b005b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100c894600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061085f95505050505050565b005b34610000576100c8600160a060020a03600435811690602435166109ee565b005b34610000576100c8600160a060020a0360043581169060243516610aea565b005b34610000576100c8600160a060020a0360043581169060243581169060443516610c0f565b005b34610000576100c8600160a060020a0360043581169060243516610d83565b005b3461000057610131600160a060020a0360043516610e4e565b604080519115158252519081900360200190f35b34610000576100c8600160a060020a0360043581169060243516610e61565b005b60035433600160a060020a03908116911614806102d257506102d2336106d2565b5b1561009e57600160a060020a0380831660009081526004602090815260408083209387168352929052908120548391859111801561033b575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561009e57600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561009e57600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b610402565b610000565b5b505061040f565b610000565b5b505061041c565b610000565b5b505050565b60035433600160a060020a03908116911614806104435750610443336106d2565b5b1561009e57600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156104ac575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561009e57600160a060020a03848116600081815260076020908152604080832042905560088252918290208054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b61040f565b610000565b5b505061041c565b610000565b5b505050565b60035433600160a060020a03908116911614806105625750610562336106d2565b5b1561009e57600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156105cb575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561009e57600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561009e57600160a060020a038083166000908152600660209081526040808320858516845290915290204290558516151561063f57610000565b600160a060020a038681166000818152600560209081526040918290208054600160a060020a0319168a86169081179091558251948c168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610402565b610000565b5b505061040f565b610000565b5b505061041c565b610000565b5b505050565b600060243610156106e5575060006106f9565b50600160a060020a03818116602435909116145b919050565b60035433600160a060020a039081169116148061071f575061071f336106d2565b5b1561009e57600160a060020a03808316600090815260056020526040902054839185918116908216141561009e57600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561009e57600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156107d357610000565b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c1685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b610402565b610000565b5b505061040f565b610000565b5b505061041c565b610000565b5b505050565b60035433600160a060020a03908116911614806108805750610880336106d2565b5b1561009e57600160a060020a038085166000908152600460209081526040808320938916835292905290812054859187911180156108e95750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561009e5785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018060200182810382528381815181526020019150805190602001908083836000831461097b575b80518252602083111561097b57601f19909201916020918201910161095b565b505050905090810190601f1680156109a75780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b6109d9565b610000565b5b50506109e6565b610000565b5b5050505050565b600160a060020a0381161515610a0357610000565b600160a060020a0333811660009081526004602090815260408083209386168352929052908120541180610a515750600160a060020a03338116600090815260056020526040812054909116115b15610a5b57610000565b60008054600160a060020a03338116808452600460209081526040808620888516808852908352818720429690960390955582865260058252948590208054938716600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b5050565b60035460009033600160a060020a0390811691161480610b0e5750610b0e336106d2565b5b1561009e57600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610b775750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561009e57600160a060020a038085166000818152600860208181526040808420805460078452828620959095559282528254600160a060020a03191690925581518a86168152915192909416965086937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f56792918290030190a35b61040f565b610000565b5b505061041c565b610000565b5b505050565b60035433600160a060020a0390811691161480610c305750610c30336106d2565b5b1561009e57600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610c99575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561009e57600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429190910390101561009e57600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190558a8516808552600484528285208b871680875290855294839020919091558151948c1685529051929390927f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b610402565b610000565b5b505061040f565b610000565b5b505061041c565b610000565b5b505050565b6000600160a060020a0382161515610d9a57610000565b6040516103a88061103983396040519101819003906000f080156100005760008054600160a060020a038381168084526004602090815260408086208a8516808852908352818720429690960390955582865260058252948590208054600160a060020a031916898516908117909155855194855294519596509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b505050565b6000610e59336106d2565b90505b919050565b60035460009033600160a060020a0390811691161480610e855750610e85336106d2565b5b1561009e57600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610eee575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561009e57600160a060020a038416600090815260076020526040812054118015610f34575060008054600160a060020a03861682526007602052604090912054429101105b1561052457600160a060020a038085166000818152600860208181526040808420805460078452828620869055939092528154600160a060020a03191690915580517f1a695230000000000000000000000000000000000000000000000000000000008152919094166004820181905293519396509192631a69523092602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b61040f565b610000565b5b505061041c565b610000565b5b505050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b0070029a165627a7a723058203806312d9501655b039fb9e761115107668027254ea87da7b579bd59acef98310029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266075 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index c093e40..9e232c1 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -59,7 +59,7 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820b18a6c34ac37a512b50372bc4497102c8b911522eb850928205fee1b09a6291d0029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820b544a7af1fdc6544131df47ec0d21fb1479faf6599edce5dee99e759d39100240029", "networks": { "1": { "events": {}, @@ -87,5 +87,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/Owned.json b/build/contracts/Owned.json index e193d41..86c8ee4 100644 --- a/build/contracts/Owned.json +++ b/build/contracts/Owned.json @@ -51,8 +51,8 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610129806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811460365780632f54bf6e14604e5780638da5cb5b146078575b6000565b34600057604c600160a060020a0360043516609e565b005b346000576064600160a060020a036004351660d7565b604080519115158252519081900360200190f35b34600057608260ee565b60408051600160a060020a039092168252519081900360200190f35b60a53360d7565b1560d2576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820305069a344df1e66707cf3339bfe577b50f57df283a7c425efbd248a9aeeb3b30029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b61015a806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811461003a5780632f54bf6e146100555780638da5cb5b14610082575b610000565b3461000057610053600160a060020a03600435166100ab565b005b346100005761006e600160a060020a0360043516610108565b604080519115158252519081900360200190f35b346100005761008f61011f565b60408051600160a060020a039092168252519081900360200190f35b6100b433610108565b15156100bf57610000565b30600160a060020a031681600160a060020a0316141515610103576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820c95a2afb899587dcacb4d695fd8856f11bba0aeba73dd7bade627b124966af4c0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 662b43b..98a5092 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -110,8 +110,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029", + "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b0070029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/RecoverableController.json b/build/contracts/RecoverableController.json index c3e461d..0c04f11 100644 --- a/build/contracts/RecoverableController.json +++ b/build/contracts/RecoverableController.json @@ -307,8 +307,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820fd771db9bfa1b2b40c8f4d2f26c5519931169eb7f1f0b3f66233cdc80ea20a650029", + "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda30029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266076 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/RecoveryQuorum.json b/build/contracts/RecoveryQuorum.json index 77b7ea5..850c16c 100644 --- a/build/contracts/RecoveryQuorum.json +++ b/build/contracts/RecoveryQuorum.json @@ -2,7 +2,7 @@ "contract_name": "RecoveryQuorum", "abi": [ { - "constant": false, + "constant": true, "inputs": [ { "name": "_proposedUserKey", @@ -90,7 +90,7 @@ "type": "function" }, { - "constant": false, + "constant": true, "inputs": [], "name": "neededSignatures", "outputs": [ @@ -177,7 +177,7 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052346100005760405161104438038061104483398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b8151811015610174576001805480600101828181548183558181151161008e5760008381526020902061008e9181019083015b8082111561008a5760008155600101610076565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610ebc806101886000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610cdc565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610e84565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610e84565b15610ccf57600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060000181905550600060026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060010181905550600060026000600184815481101561000057906000526020600020900160005b90546101009190910a9004600160a060020a0390811682526020820192909252604090810160009081206002018054600160a060020a031916949093169390931790915580517fc6f315210000000000000000000000000000000000000000000000000000000081526004810184905260016024820152905173__ArrayLib______________________________9263c6f315219260448082019391829003018186803b156100005760325a03f41561000057505050610cd3565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610d2590610922565b158015610d355750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610e4e57600083815260209020610e4e9181019083015b80821115610e4a5760008155600101610e36565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820c5a8f3b795c8dbee7c5b4947eb620a1a3f2535289465700e07cf1c52db0e9ce40029", + "unlinked_binary": "0x60606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820422a49255190e2886a76104564ed7ad9d2ae2439b95318837c953decdc1e8a1d0029", "networks": { "4": { "events": { @@ -206,5 +206,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498235266077 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/TestRegistry.json b/build/contracts/TestRegistry.json index 058716a..6953d5e 100644 --- a/build/contracts/TestRegistry.json +++ b/build/contracts/TestRegistry.json @@ -19,6 +19,31 @@ "payable": false, "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "with", + "type": "uint256" + }, + { + "name": "many", + "type": "address" + }, + { + "name": "strange", + "type": "string" + }, + { + "name": "params", + "type": "uint256" + } + ], + "name": "reallyLongFunctionName", + "outputs": [], + "payable": false, + "type": "function" + }, { "constant": false, "inputs": [], @@ -41,8 +66,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b60f6806100186000396000f300606060405263ffffffff60e060020a600035041663038defd78114603657806350bff6bf14606b578063f207564e146077575b6000565b34600057605973ffffffffffffffffffffffffffffffffffffffff600435166086565b60408051918252519081900360200190f35b3460005760756032565b005b346000576075600435609e565b005b60006020819052908152604090205481565b6000565b565b73ffffffffffffffffffffffffffffffffffffffff331660009081526020819052604090208190555b505600a165627a7a72305820f858765ee2f10bcec3eda8958beec2ee4967db8a30f5f3e2b7bc006c875196670029", + "unlinked_binary": "0x606060405234610000575b61017b806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a4241461007057806350bff6bf146100d4578063f207564e146100e3575b610000565b346100005761005e600160a060020a03600435166100f5565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061010792505050565b005b34610000576100d2610040565b005b34610000576100d2600435610130565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820cb91dd6e3f04cdc9c738360fa22a89e466a845485c2c5df43ad25d11eff687120029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266075 + "updated_at": 1498489105320 } \ No newline at end of file diff --git a/build/contracts/TxRelay.json b/build/contracts/TxRelay.json index 8392546..730fe75 100644 --- a/build/contracts/TxRelay.json +++ b/build/contracts/TxRelay.json @@ -92,8 +92,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b610528806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab81146100455780636bea166e1461007057806391a55b13146100e2578063c3f44c0a14610141575b610000565b346100005761005e600160a060020a03600435166101b6565b60408051918252519081900360200190f35b34610000576100ce600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a031692506101d5915050565b604080519115158252519081900360200190f35b346100005760408051602060046024803582810135601f810185900485028601850190965285855261013f958335600160a060020a0316959394604494939290920191819084018382808284375094965061020495505050505050565b005b3461000057604080516020601f60843560048181013592830184900484028501840190955281845261013f9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965050509235600160a060020a031692506102b1915050565b005b600160a060020a0381166000908152602081905260409020545b919050565b60006024835110156101e9575060006101fe565b506024820151600160a060020a038281169116145b92915050565b61020e81336101d5565b151561021957610000565b81600160a060020a0316816040518082805190602001908083836000831461025c575b80518252602083111561025c57601f19909201916020918201910161023c565b505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f191505015156102ac57610000565b5b5050565b60006000306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106103505780518252601f199092019160209182019101610331565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461045357610000565b61045d84826101d5565b151561046857610000565b84600160a060020a031684604051808280519060200190808383600083146104ab575b8051825260208311156104ab57601f19909201916020918201910161048b565b505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b50505050505050505600a165627a7a723058206fea6cb6840a18ae1b2e29fe1c7a60e8ca89295764b8cf54e273ca0c2db2f1d80029", + "unlinked_binary": "0x606060405234610000575b610528806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab81146100455780636bea166e1461007057806391a55b13146100e2578063c3f44c0a14610141575b610000565b346100005761005e600160a060020a03600435166101b6565b60408051918252519081900360200190f35b34610000576100ce600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a031692506101d5915050565b604080519115158252519081900360200190f35b346100005760408051602060046024803582810135601f810185900485028601850190965285855261013f958335600160a060020a0316959394604494939290920191819084018382808284375094965061020495505050505050565b005b3461000057604080516020601f60843560048181013592830184900484028501840190955281845261013f9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965050509235600160a060020a031692506102b1915050565b005b600160a060020a0381166000908152602081905260409020545b919050565b60006024835110156101e9575060006101fe565b506024820151600160a060020a038281169116145b92915050565b61020e81336101d5565b151561021957610000565b81600160a060020a0316816040518082805190602001908083836000831461025c575b80518252602083111561025c57601f19909201916020918201910161023c565b505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f191505015156102ac57610000565b5b5050565b60006000306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106103505780518252601f199092019160209182019101610331565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461045357610000565b61045d84826101d5565b151561046857610000565b84600160a060020a031684604051808280519060200190808383600083146104ab575b8051825260208311156104ab57601f19909201916020918201910161048b565b505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b50505050505050505600a165627a7a723058207e49bf68ea3cd5505a2ef36b3ffe7570ef76f9a78b81d30bf69059bad9bbe1720029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498235266075 + "updated_at": 1498489105320 } \ No newline at end of file From f33af8030158ff27e101afe52ca163c86185bc5e Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:37:28 -0400 Subject: [PATCH 33/53] update IdentityManager tests --- test/MetaIdentityManager.js | 450 ++++++++++++++++++++++++++++++++++++ 1 file changed, 450 insertions(+) create mode 100644 test/MetaIdentityManager.js diff --git a/test/MetaIdentityManager.js b/test/MetaIdentityManager.js new file mode 100644 index 0000000..7fd023c --- /dev/null +++ b/test/MetaIdentityManager.js @@ -0,0 +1,450 @@ +const lightwallet = require('eth-signer') +const evm_increaseTime = require('./evmIncreaseTime.js') +const snapshots = require('./evmSnapshots.js') +const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const Proxy = artifacts.require('Proxy') +const TestRegistry = artifacts.require('TestRegistry') +const Promise = require('bluebird') +const compareCode = require('./compareCode') +web3.eth = Promise.promisifyAll(web3.eth) + +const LOG_NUMBER_1 = 1234 +const LOG_NUMBER_2 = 2345 + +const userTimeLock = 100; +const adminTimeLock = 1000; +const adminRate = 200; + +function getRandomNumber() { + return Math.floor(Math.random() * (1000000 - 1)) + 1; +} + +async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAccount, shouldEqual) { + let errorThrown = false + let testNum = getRandomNumber() + // Encode the transaction to send to the proxy contract + let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) + // Send forward request from the owner + try { + await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) + } catch (error) { + errorThrown = error.message + } + let regData = await testReg.registry.call(proxyAddress) + if (shouldEqual) { + assert.isNotOk(errorThrown, 'An error should not have been thrown') + assert.equal(regData.toNumber(), testNum) + } else { + assert.match(errorThrown, /invalid JUMP/, 'throws an error') + assert.notEqual(regData.toNumber(), testNum) + } +} + +async function testForwardToFromRelay(testReg, metaIdentityManager, proxyAddress, fromAccount, txRelay, shouldEqual) { + let errorThrown = false + let testNum = getRandomNumber() + // Encode the transaction to send to the proxy contract + let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) + // Send forward request from the owner + try { + await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelay.address}) + } catch (error) { + errorThrown = error.message + } + let regData = await testReg.registry.call(proxyAddress) + if (shouldEqual) { + assert.isNotOk(errorThrown, 'An error should not have been thrown') + assert.equal(regData.toNumber(), testNum) + } else { + assert.match(errorThrown, /invalid JUMP/, 'throws an error') + assert.notEqual(regData.toNumber(), testNum) + } +} + + +contract('MetaIdentityManager', (accounts) => { + let proxy + let deployedProxy + let testReg + let identityManager + let user1 + let user2 + let user3 + let user4 + let user5 + let nobody + let relay + + let recoveryKey + let recoveryKey2 + + let snapshotId + + before(async function() { + // Truffle deploys contracts with accounts[0] + user1 = accounts[0] + nobody = accounts[1] // has no authority + user2 = accounts[2] + user3 = accounts[3] + user4 = accounts[4] + user5 = accounts[5] + relay = accounts[6] + recoveryKey = accounts[8] + recoveryKey2 = accounts[9] + metaIdentityManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) + deployedProxy = await Proxy.new({from: user1}) + testReg = await TestRegistry.deployed() + // return snapshots.snapshot() + // }).then(id => { + // snapshotId = id + }) + + // afterEach(done => { + // snapshots.revert(snapshotId) + // done() + // }) + + it('Correctly creates Identity', async function() { + let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let log = tx.logs[0] + + assert.equal(log.event, 'IdentityCreated', 'wrong event') + assert.equal(log.args.owner, user1, 'Owner key is set in event') + assert.equal(log.args.recoveryKey, recoveryKey, 'Recovery key is set in event') + assert.equal(log.args.creator, nobody, 'Creator is set in event') + + await compareCode(log.args.identity, deployedProxy.address) + let proxyOwner = await Proxy.at(log.args.identity).owner.call() + assert.equal(proxyOwner, metaIdentityManager.address, 'Proxy owner should be the identity manager') + }) + + describe('existing identity', () => { + + beforeEach(async function() { + let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + }) + + it('allow transactions initiated by owner', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, true) + }) + + it('don\'t allow transactions initiated by non owner', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + }) + + it('don\'t allow transactions initiated by recoveryKey', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, recoveryKey, false) + }) + + it('owner can add other owner', async function() { + let tx = await metaIdentityManager.addOwner(user1, proxy.address, user5, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') + assert.equal(log.args.identity, + proxy.address, + 'event should be for correct proxy') + assert.equal(log.args.owner, + user5, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user1, + 'Instigator key is set in event') + }) + + it('non-owner can not add other owner', async function() { + try { + await metaIdentityManager.addOwner(user3, proxy.address, user4, {from: user3}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + } + }) + + describe('new owner added by owner', () => { + beforeEach(async function() { + await metaIdentityManager.addOwner(user1, proxy.address, user2, {from: user1}) + errorThrown = false + }) + + it('within userTimeLock is not allowed transactions', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + }) + + describe('after userTimeLock', () => { + beforeEach(() => evm_increaseTime(userTimeLock)) + + it('Allow transactions', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, true) + }) + + it('can not add other owner yet', async function() { + let errorThrown = false + try { + await metaIdentityManager.addOwner(user2, proxy.address, user4, {from: user2}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + errorThrown = true + } + assert.isTrue(errorThrown, 'Should have thrown') + }) + + it('can not remove other owner yet', async function() { + let errorThrown = false + try { + await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + errorThrown = true + } + assert.isTrue(errorThrown, 'Should have thrown') + }) + + it('can not change recoveryKey yet', async function() { + let errorThrown = false + try { + await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + errorThrown = true + } + assert.isTrue(errorThrown, 'Should have thrown') + }) + }) + + describe('after adminTimeLock', () => { + beforeEach(() => evm_increaseTime(adminTimeLock)) + + it('can add new owner', async function() { + let tx = await metaIdentityManager.addOwner(user2, proxy.address, user3, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.owner, + user3, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + + it('can remove other owner', async function() { + let tx = await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.owner, + user1, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + + it('can change recoveryKey', async function() { + let tx = await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.recoveryKey, + recoveryKey2, + 'recoveryKey key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + }) + }) + + describe('new owner added by recoveryKey', () => { + beforeEach(async function() { + await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user2, {from: recoveryKey}) + }) + + it('within userTimeLock is not allowed transactions', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + }) + + describe('after userTimeLock', () => { + beforeEach(() => evm_increaseTime(userTimeLock)) + + it('Allow transactions', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, true) + }) + }) + + describe('after adminTimeLock', () => { + beforeEach(() => evm_increaseTime(adminTimeLock)) + + it('can add new owner', async function() { + let tx = await metaIdentityManager.addOwner(user2, proxy.address, user3, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.owner, + user3, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + + it('can remove other owner', async function() { + let tx = await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.owner, + user1, + 'Owner key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + + it('can change recoveryKey', async function() { + let tx = await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + const log = tx.logs[0] + assert.equal(log.args.recoveryKey, + recoveryKey2, + 'recoveryKey key is set in event') + assert.equal(log.args.instigator, + user2, + 'Instigator key is set in event') + }) + }) + }) + }) + + describe('migration', () => { + let newIdenManager + beforeEach(async function() { + let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + newIdenManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) + //user2 is now a younger owner, while user1 is an olderowner + tx = await metaIdentityManager.addOwner(user1, proxy.address, user2, {from: user1}) + log = tx.logs[0] + assert.equal(log.event, 'OwnerAdded', 'wrong event') + assert.equal(log.args.identity, proxy.address, 'wrong proxy') + assert.equal(log.args.owner, user2, 'wrong owner added') + assert.equal(log.args.instigator, user1, 'wrong initiator') + }) + + it('older owner can start transfer', async function() { + let tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'migrating to wrong location') + }) + + it('young owner should not be able to start transfer', async function() { + let threwError = false + try { + await metaIdentityManager.initiateMigration(user2, proxy.address, newIdenManager.address, {from: user2}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + threwError = true + } + assert.isTrue(threwError, 'Should have thrown an error here') + }) + + it('non-owner should not be able to start transfer' , async function() { + let threwError = false + try { + await metaIdentityManager.initiateMigration(nobody, proxy.address, newIdenManager.address, {from: nobody}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + threwError = true + } + assert.isTrue(threwError, 'Should have thrown an error here') + }) + + it('correct keys can cancel migration', async function() { + let tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'started migrating from wrong user') + + tx = await metaIdentityManager.cancelMigration(user1, proxy.address, {from: user1}) + log = tx.logs[0] + assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') + assert.equal(log.args.instigator, user1, 'canceled migrating from wrong user') + + //set up migration again + tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + //Second migration attempt, should allow + log = tx.logs[0] + assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') + assert.equal(log.args.instigator, user1, 'started migrating from wrong person') + + await evm_increaseTime(userTimeLock) + tx = await metaIdentityManager.cancelMigration(user2, proxy.address, {from: user2}) + //young owner should also be able to cancel migration + log = tx.logs[0] + assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') + assert.equal(log.args.instigator, user2, 'canceled migrating from wrong person') + + await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + //Don't need to check setup again + let threwError = false + try { + await metaIdentityManager.cancelMigration(nobody, proxy.address, {from: nobody}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + threwError = true + } + assert.isTrue(threwError, 'Should have thrown error') + }) + + it('correct keys should finilize transfer', async function() { + await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let threwError = false + try { + await metaIdentityManager.finalizeMigration(nobody, proxy.address, {from: nobody}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + threwError = true + } + assert.isTrue(threwError, 'non-owner should not be able to finalize') + threwError = false + try { + await metaIdentityManager.finalizeMigration(user2, proxy.address, {from: user2}) + } catch(error) { + assert.match(error, /invalid JUMP/, 'throws an error') + threwError = true + } + assert.isTrue(threwError, 'young owner should not be able to finalize') + + await evm_increaseTime(2 * adminTimeLock) + let tx = await metaIdentityManager.finalizeMigration(user1, proxy.address, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') + assert.equal(log.args.instigator, user1, 'finalized migrating from wrong person') + }) + + it('should be owner of new metaIdentityManager after successful transfer', async function() { + await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let data = '0x' + lightwallet.txutils._encodeFunctionTxData('registerIdentity', ['address', 'address'], [user1, recoveryKey]) + await metaIdentityManager.forwardTo(user1, proxy.address, newIdenManager.address, 0, data, {from: user1}) + //increase time until migration can be finialized + await evm_increaseTime(2 * adminTimeLock) + let tx = await metaIdentityManager.finalizeMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') + assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') + assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') + assert.equal(log.args.instigator, user1, 'finalized migrating from wrong user') + data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) + await newIdenManager.forwardTo(user1, proxy.address, testReg.address, 0, data, {from: user1}) + // Verify that the proxy address is logged as the sender + let regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction from new contract') + }) + }) +}) From 36feb7bb97e4b5cbd84c2e42fca8cd2dfea90f2e Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:50:15 -0400 Subject: [PATCH 34/53] Remove regular IdentityManager, update build, migrations --- build/contracts/IdentityManager.json | 356 --------------------------- contracts/IdentityManager.sol | 162 ------------ 2 files changed, 518 deletions(-) delete mode 100644 build/contracts/IdentityManager.json delete mode 100644 contracts/IdentityManager.sol diff --git a/build/contracts/IdentityManager.json b/build/contracts/IdentityManager.json deleted file mode 100644 index 0425873..0000000 --- a/build/contracts/IdentityManager.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "contract_name": "IdentityManager", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "addOwnerForRecovery", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "newIdManager", - "type": "address" - } - ], - "name": "initiateMigration", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "recoveryKey", - "type": "address" - } - ], - "name": "changeRecovery", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - } - ], - "name": "finalizeMigration", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - } - ], - "name": "cancelMigration", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "forwardTo", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "recoveryKey", - "type": "address" - } - ], - "name": "registerIdentity", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "recoveryKey", - "type": "address" - } - ], - "name": "CreateIdentity", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "_userTimeLock", - "type": "uint256" - }, - { - "name": "_adminTimeLock", - "type": "uint256" - }, - { - "name": "_adminRate", - "type": "uint256" - } - ], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "creator", - "type": "address" - }, - { - "indexed": false, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "recoveryKey", - "type": "address" - } - ], - "name": "IdentityCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "OwnerAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "OwnerRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "recoveryKey", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "RecoveryChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "newIdManager", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "MigrationInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "newIdManager", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "MigrationCanceled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "identity", - "type": "address" - }, - { - "indexed": true, - "name": "newIdManager", - "type": "address" - }, - { - "indexed": false, - "name": "instigator", - "type": "address" - } - ], - "name": "MigrationFinalized", - "type": "event" - } - ], - "unlinked_binary": "0x6060604052346100005760405160608061119b8339810160409081528151602083015191909201515b6000829055600183905560028190555b5050505b6111508061004b6000396000f300606060405236156100885763ffffffff60e060020a600035041663120ec6f0811461008d57806316d390bf146100ae5780633dcf59ca146100cf57806353faa9a9146100f0578063633b1954146101115780636f022ac41461012c57806373b40a5c14610147578063781f5a83146101b1578063ac1028de146101d2578063fbe5ce0a146101f3575b610000565b34610000576100ac600160a060020a0360043581169060243516610214565b005b34610000576100ac600160a060020a036004358116906024351661033b565b005b34610000576100ac600160a060020a0360043581169060243516610470565b005b34610000576100ac600160a060020a036004358116906024351661055d565b005b34610000576100ac600160a060020a03600435166106b7565b005b34610000576100ac600160a060020a036004351661085a565b005b3461000057604080516020600460643581810135601f81018490048402850184019095528484526100ac948235600160a060020a0390811695602480359092169560443595946084949293019190819084018382808284375094965061094a95505050505050565b005b34610000576100ac600160a060020a0360043581169060243516610aa6565b005b34610000576100ac600160a060020a0360043581169060243516610ba2565b005b34610000576100ac600160a060020a0360043581169060243516610c6d565b005b600160a060020a0382811660009081526004602052604090205483913381169116141561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a0380821660009081526005602090815260408083203385168452825280832042905587841683526003825280832093871683529290529081205411156102bc57610000565b600160a060020a0380851660008181526003602090815260408083208886168085529083529281902042905580513390951685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a0380831660009081526003602090815260408083203390941683529290529081205483919011801561039f575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a038082166000908152600560209081526040808320338516808552908352818420429081905589861680865260038552838620968a168087529685529483902055815190815290517f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a038083166000908152600360209081526040808320339094168352929052908120548391901180156104d4575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600160a060020a03838116600081815260066020908152604080832042905560078252918290208054600160a060020a0319168786169081179091558251339095168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b610335565b610000565b5b505050565b600160a060020a038083166000908152600360209081526040808320339094168352929052908120548391901180156105c1575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a038082166000908152600560209081526040808320338516845290915290204290558316151561063157610000565b600160a060020a038481166000818152600460209081526040918290208054600160a060020a0319168886169081179091558251339095168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050565b600160a060020a038082166000908152600360209081526040808320339094168352929052908120548290829011801561071c575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600160a060020a038316600090815260066020526040812054118015610762575060008054600160a060020a03851682526006602052604090912054429101105b1561054d57600160a060020a038084166000818152600760208181526040808420805460068452828620869055939092528154600160a060020a03191690915580517f1a695230000000000000000000000000000000000000000000000000000000008152919094166004820181905293519395509192631a69523092602480820193929182900301818387803b156100005760325a03f1156100005750506040805133600160a060020a03908116825291518286169350918616917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b610335565b610000565b5b505050565b600160a060020a03808216600090815260036020908152604080832033909416835292905290812054829082901180156108bf5750600154600160a060020a038083166000908152600360209081526040808320339094168352929052205442910111155b1561008857600160a060020a038084166000818152600760208181526040808420805460068452828620959095559282528254600160a060020a03191690925581513386168152915192909416955085937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f56792918290030190a35b610335565b610000565b5b505050565b600160a060020a038085166000908152600360209081526040808320339094168352929052908120548591901180156109ae5750600154600160a060020a038083166000908152600360209081526040808320339094168352929052205442910111155b156100885784600160a060020a031663d7f31eb98585856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360008314610a40575b805182526020831115610a4057601f199092019160209182019101610a20565b505050905090810190601f168015610a6c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b610a9e565b610000565b5b5050505050565b600160a060020a0381161515610abb57610000565b600160a060020a0333811660009081526003602090815260408083209386168352929052908120541180610b095750600160a060020a03338116600090815260046020526040812054909116115b15610b1357610000565b60008054600160a060020a03338116808452600360209081526040808620888516808852908352818720429690960390955582865260048252948590208054938716600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b5050565b6000600160a060020a0382161515610bb957610000565b60405161038280610da383396040519101819003906000f080156100005760008054600160a060020a038381168084526003602090815260408086208a8516808852908352818720429690960390955582865260048252948590208054600160a060020a031916898516908117909155855194855294519596509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b505050565b600160a060020a03808316600090815260036020908152604080832033909416835292905290812054839190118015610cd1575060008054600160a060020a0380841683526003602090815260408085203390931685529190529091205442910111155b1561008857600254600160a060020a03808516600090815260056020908152604080832033909416835292905220548491420390101561008857600160a060020a0380821660009081526005602090815260408083203385168085529083528184204290558885168085526003845282852095891680865295845282852094909455815190815290517fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b610329565b610000565b5b50610335565b610000565b5b505050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610351806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a036004351661019d565b604080519115158252519081900360200190f35b34610000576100e36101b4565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101c395505050505050565b005b61016a3361019d565b15610198576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101cc3361019d565b1561031e5782600160a060020a0316828260405180828051906020019080838360008314610215575b80518252602083111561021557601f1990920191602091820191016101f5565b505050905090810190601f1680156102415780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561026557610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c41838360405180838152602001806020018281038252838181518152602001915080519060200190808383600083146102e3575b8051825260208311156102e357601f1990920191602091820191016102c3565b505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5b5050505600a165627a7a7230582087454caa00a47d99c0ebbf399d444409e107002c872b386564dcc85ee0e2e2fc0029a165627a7a72305820cbf37d4f353a1677e0dc0bdada6b20c4a967834e47ab2c55dabe1ffae01324c80029", - "networks": {}, - "schema_version": "0.0.5", - "updated_at": 1498235266074 -} \ No newline at end of file diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol deleted file mode 100644 index 33727e8..0000000 --- a/contracts/IdentityManager.sol +++ /dev/null @@ -1,162 +0,0 @@ -pragma solidity 0.4.8; -import "./Proxy.sol"; - -contract IdentityManager { - uint adminTimeLock; - uint userTimeLock; - uint adminRate; - - event IdentityCreated( - address indexed identity, - address indexed creator, - address owner, - address indexed recoveryKey); - - event OwnerAdded( - address indexed identity, - address indexed owner, - address instigator); - - event OwnerRemoved( - address indexed identity, - address indexed owner, - address instigator); - - event RecoveryChanged( - address indexed identity, - address indexed recoveryKey, - address instigator); - - event MigrationInitiated( - address indexed identity, - address indexed newIdManager, - address instigator); - - event MigrationCanceled( - address indexed identity, - address indexed newIdManager, - address instigator); - - event MigrationFinalized( - address indexed identity, - address indexed newIdManager, - address instigator); - - mapping(address => mapping(address => uint)) owners; - mapping(address => address) recoveryKeys; - mapping(address => mapping(address => uint)) limiter; - mapping(address => uint) migrationInitiated; - mapping(address => address) migrationNewAddress; - - modifier onlyOwner(address identity) { - if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + userTimeLock) <= now ) _ ; - else throw; - } - - modifier onlyOlderOwner(address identity) { - if (owners[identity][msg.sender] > 0 && (owners[identity][msg.sender] + adminTimeLock) <= now) _ ; - else throw; - } - - modifier onlyRecovery(address identity) { - if (recoveryKeys[identity] == msg.sender) _ ; - else throw; - } - - modifier rateLimited(Proxy identity) { - if (limiter[identity][msg.sender] < (now - adminRate)) { - limiter[identity][msg.sender] = now; - _ ; - } else throw; - } - - // Instantiate IdentityManager with the following limits: - // - userTimeLock - Time before new owner can control proxy - // - adminTimeLock - Time before new owner can add/remove owners - // - adminRate - Time period used for rate limiting a given key for admin functionality - function IdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate) { - adminTimeLock = _adminTimeLock; - userTimeLock = _userTimeLock; - adminRate = _adminRate; - } - - // Factory function - // gas 289,311 - function CreateIdentity(address owner, address recoveryKey) { - if (recoveryKey == address(0)) throw; - Proxy identity = new Proxy(); - owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one - recoveryKeys[identity] = recoveryKey; - IdentityCreated(identity, msg.sender, owner, recoveryKey); - } - - // An identity Proxy can use this to register itself with the IdentityManager - // Note they also have to change the owner of the Proxy over to this, but after calling this - function registerIdentity(address owner, address recoveryKey) { - if (recoveryKey == address(0)) throw; - if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business - owners[msg.sender][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one - recoveryKeys[msg.sender] = recoveryKey; - IdentityCreated(msg.sender, msg.sender, owner, recoveryKey); - } - - // Primary forward function - function forwardTo(Proxy identity, address destination, uint value, bytes data) onlyOwner(identity) { - identity.forward(destination, value, data); - } - - // an owner can add a new device instantly - function addOwner(Proxy identity, address newOwner) onlyOlderOwner(identity) rateLimited(identity) { - owners[identity][newOwner] = now; - OwnerAdded(identity, newOwner, msg.sender); - } - - // a recovery key owner can add a new device with 1 days wait time - function addOwnerForRecovery(Proxy identity, address newOwner) onlyRecovery(identity) rateLimited(identity) { - if (owners[identity][newOwner] > 0) throw; - owners[identity][newOwner] = now; - OwnerAdded(identity, newOwner, msg.sender); - } - - // an owner can remove another owner instantly - function removeOwner(Proxy identity, address owner) onlyOlderOwner(identity) rateLimited(identity) { - owners[identity][owner] = 0; - OwnerRemoved(identity, owner, msg.sender); - } - - // an owner can add change the recoverykey whenever they want to - function changeRecovery(Proxy identity, address recoveryKey) onlyOlderOwner(identity) rateLimited(identity) { - if (recoveryKey == address(0)) throw; - recoveryKeys[identity] = recoveryKey; - RecoveryChanged(identity, recoveryKey, msg.sender); - } - - // an owner can migrate away to a new IdentityManager - function initiateMigration(Proxy identity, address newIdManager) onlyOlderOwner(identity) { - migrationInitiated[identity] = now; - migrationNewAddress[identity] = newIdManager; - MigrationInitiated(identity, newIdManager, msg.sender); - } - - // any owner can cancel a migration - function cancelMigration(Proxy identity) onlyOwner(identity) { - address canceledManager = migrationNewAddress[identity]; - migrationInitiated[identity] = 0; - migrationNewAddress[identity] = 0; - MigrationCanceled(identity, canceledManager, msg.sender); - } - - // owner needs to finalize migration once adminTimeLock time has passed - // WARNING: before transfering to a new address, make sure this address is "ready to recieve" the proxy. - // Not doing so risks the proxy becoming stuck. - function finalizeMigration(Proxy identity) onlyOlderOwner(identity) { - if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { - address newIdManager = migrationNewAddress[identity]; - migrationInitiated[identity] = 0; - migrationNewAddress[identity] = 0; - identity.transfer(newIdManager); - MigrationFinalized(identity, newIdManager, msg.sender); - } - } -} - From 962f2e67325841ec08c81fa8527dfc3c9dec9e31 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:50:54 -0400 Subject: [PATCH 35/53] Jk, update index, migrations now --- index.js | 1 - migrations/3_deploy_identity_manager.js | 5 ----- migrations/{4_deploy_meta_tx.js => 3_deploy_meta_tx.js} | 0 3 files changed, 6 deletions(-) delete mode 100644 migrations/3_deploy_identity_manager.js rename migrations/{4_deploy_meta_tx.js => 3_deploy_meta_tx.js} (100%) diff --git a/index.js b/index.js index 725921e..1c11ce8 100644 --- a/index.js +++ b/index.js @@ -2,7 +2,6 @@ module.exports = { ArrayLib: require('./build/contracts/ArrayLib.json'), IdentityFactory: require('./build/contracts/IdentityFactory.json'), IdentityFactoryWithRecoveryKey: require('./build/contracts/IdentityFactoryWithRecoveryKey.json'), - IdentityManager: require('./build/contracts/IdentityManager.json'), RecoverableController: require('./build/contracts/RecoverableController.json'), Proxy: require('./build/contracts/Proxy.json'), RecoveryQuorum: require('./build/contracts/RecoveryQuorum.json'), diff --git a/migrations/3_deploy_identity_manager.js b/migrations/3_deploy_identity_manager.js deleted file mode 100644 index a12ffff..0000000 --- a/migrations/3_deploy_identity_manager.js +++ /dev/null @@ -1,5 +0,0 @@ -const IdentityManager = artifacts.require('./IdentityManager.sol') - -module.exports = function (deployer) { - deployer.deploy(IdentityManager) -} diff --git a/migrations/4_deploy_meta_tx.js b/migrations/3_deploy_meta_tx.js similarity index 100% rename from migrations/4_deploy_meta_tx.js rename to migrations/3_deploy_meta_tx.js From 8fa6cb25299568e0684b725252207b625439af59 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:51:26 -0400 Subject: [PATCH 36/53] update tests --- test/IdentityManager.js | 544 ---------------------------------------- test/MetaTx.js | 8 +- 2 files changed, 3 insertions(+), 549 deletions(-) delete mode 100644 test/IdentityManager.js diff --git a/test/IdentityManager.js b/test/IdentityManager.js deleted file mode 100644 index b00e987..0000000 --- a/test/IdentityManager.js +++ /dev/null @@ -1,544 +0,0 @@ -const lightwallet = require('eth-signer') -const evm_increaseTime = require('./evmIncreaseTime.js') -const snapshots = require('./evmSnapshots.js') -const IdentityManager = artifacts.require('IdentityManager') -const Proxy = artifacts.require('Proxy') -const TestRegistry = artifacts.require('TestRegistry') -const Promise = require('bluebird') -const compareCode = require('./compareCode') -web3.eth = Promise.promisifyAll(web3.eth) - -const LOG_NUMBER_1 = 1234 -const LOG_NUMBER_2 = 2345 - -const userTimeLock = 100; -const adminTimeLock = 1000; -const adminRate = 200; - -contract('IdentityManager', (accounts) => { - let proxy - let deployedProxy - let testReg - let identityManager - let user1 - let user2 - let user3 - let user4 - let user5 - let nobody - - let recoveryKey - let recoveryKey2 - - let snapshotId - - before(done => { - // Truffle deploys contracts with accounts[0] - user1 = accounts[0] - nobody = accounts[1] // has no authority - user2 = accounts[2] - user3 = accounts[3] - user4 = accounts[4] - user5 = accounts[5] - recoveryKey = accounts[8] - recoveryKey2 = accounts[9] - IdentityManager.new(userTimeLock, adminTimeLock, adminRate).then((instance) => { - identityManager = instance - return Proxy.new({from: user1}) - }).then((instance) => { - deployedProxy = instance - return TestRegistry.deployed() - }).then((instance) => { - testReg = instance - // return snapshots.snapshot() - // }).then(id => { - // snapshotId = id - done() - }) - }) - - // afterEach(done => { - // snapshots.revert(snapshotId) - // done() - // }) - - it('Correctly creates Identity', (done) => { - let log - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { - log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - - assert.equal(log.args.owner, - user1, - 'Owner key is set in event') - assert.equal(log.args.recoveryKey, - recoveryKey, - 'Recovery key is set in event') - assert.equal(log.args.creator, - nobody, - 'Creator is set in event') - - // TODO find out why this all of a sudden doesn't work - // return compareCode(log.args.identity, deployedProxy.address) - // }).then(() => { - return Proxy.at(log.args.identity).owner.call() - }).then((proxyOwner) => { - assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') - done() - }).catch((error) => { - console.log(error) - done() - }) - }) - - describe('existing identity', () => { - beforeEach(done => { - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { - // console.log(tx) - const log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - proxy = Proxy.at(log.args.identity) - done() - }).catch(e => { - console.log(e) - done() - }) - }) - - it('allow transactions initiated by owner', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction') - done() - }).catch(done) - }) - - it('don\'t allow transactions initiated by non owner', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { - assert.isNotOk(true, 'This should have thrown an error in contract') - done() - }).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('don\'t allow transactions initiated by recoveryKey', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: recoveryKey}).then(() => { - assert.isNotOk(true, 'This should have thrown an error in contract') - done() - }).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('owner can add other owner', (done) => { - const event = identityManager.OwnerAdded({identity: proxy.address}) - event.watch((error, result) => { - if (error) throw Error(error) - event.stopWatching() - assert.equal(result.args.owner, - user5, - 'Owner key is set in event') - assert.equal(result.args.instigator, - user1, - 'Instigator key is set in event') - done() - }) - identityManager.addOwner(proxy.address, user5, {from: user1}).catch(error => { - console.log(error) - assert.isNotOk(error, 'there should nor be an error') - done() - }) - }) - - it('non-owner can not add other owner', (done) => { - identityManager.addOwner(proxy.address, user4, {from: user3}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - describe('new owner added by owner', () => { - beforeEach(done => { - identityManager.addOwner(proxy.address, user2, {from: user1}).then((tx) => { - // console.log(tx) - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('within userTimeLock is not allowed transactions', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { - assert.isNotOk(true, 'This should have thrown an error in contract') - done() - }).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - describe('after userTimeLock', () => { - beforeEach(() => evm_increaseTime(userTimeLock)) - it('Allow transactions', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 should be able to send transaction') - done() - }).catch(done) - }) - - it('can not add other owner yet', (done) => { - identityManager.addOwner(proxy.address, user4, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('can not remove other owner yet', (done) => { - identityManager.removeOwner(proxy.address, user1, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('can not change recoveryKey yet', (done) => { - identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - }) - - describe('after adminTimeLock', () => { - beforeEach(() => evm_increaseTime(adminTimeLock)) - - it('can add new owner', (done) => { - identityManager.addOwner(proxy.address, user3, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.owner, - user3, - 'Owner key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('can remove other owner yet', (done) => { - identityManager.removeOwner(proxy.address, user1, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.owner, - user1, - 'Owner key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('can change recoveryKey yet', (done) => { - identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.recoveryKey, - recoveryKey2, - 'recoveryKey key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - }) - }) - - describe('new owner added by recoveryKey', () => { - beforeEach(done => { - identityManager.addOwnerForRecovery(proxy.address, user2, {from: recoveryKey}).then((tx) => { - // console.log(tx) - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('within userTimeLock is not allowed transactions', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then(() => { - assert.isNotOk(true, 'This should have thrown an error in contract') - done() - }).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - describe('after userTimeLock', () => { - beforeEach(() => evm_increaseTime(userTimeLock)) - it('Allow transactions', (done) => { - // Encode the transaction to send to the Owner contract - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_2]) - identityManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user2}).then((tx) => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'User2 should be able to send transaction') - done() - }).catch(done) - }) - - it('can not add other owner yet', (done) => { - identityManager.addOwner(proxy.address, user4, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('can not remove other owner yet', (done) => { - identityManager.removeOwner(proxy.address, user1, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - - it('can not change recoveryKey yet', (done) => { - identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).catch((error) => { - assert.match(error, /invalid JUMP/, 'throws an error') - done() - }) - }) - }) - - describe('after adminTimeLock', () => { - beforeEach(() => evm_increaseTime(adminTimeLock)) - - it('can add new owner', (done) => { - identityManager.addOwner(proxy.address, user3, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.owner, - user3, - 'Owner key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('can remove other owner yet', (done) => { - identityManager.removeOwner(proxy.address, user1, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.owner, - user1, - 'Owner key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - - it('can change recoveryKey yet', (done) => { - identityManager.changeRecovery(proxy.address, recoveryKey2, {from: user2}).then(tx => { - const log = tx.logs[0] - assert.equal(log.args.recoveryKey, - recoveryKey2, - 'recoveryKey key is set in event') - assert.equal(log.args.instigator, - user2, - 'Instigator key is set in event') - done() - }).catch(error => { - console.log(error) - done() - }) - }) - }) - }) - }) - describe('migration', () => { - let newIdenManager - beforeEach(done => { - identityManager.CreateIdentity(user1, recoveryKey, {from: nobody}).then(tx => { - const log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - proxy = Proxy.at(log.args.identity) - return IdentityManager.new(userTimeLock, adminTimeLock, adminRate) - }).then((instance) => { - newIdenManager = instance - //user2 is now a younger owner, while user1 is an olderowner - return identityManager.addOwner(proxy.address, user2) - }).then(tx => { - let log = tx.logs[0] - assert.equal(log.event, 'OwnerAdded', 'wrong event') - assert.equal(log.args.identity, proxy.address, 'wrong proxy') - assert.equal(log.args.owner, user2, 'wrong owner added') - assert.equal(log.args.instigator, user1, 'wrong initiator') - done() - }).catch(e => { - console.log(e) - done() - }) - }) - - it('correct keys can start transfer', (done) => { - //olderOwner should be able to start transfer - identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { - let log = tx.logs[0] - assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') - assert.equal(log.args.instigator, user1, 'migrating to wrong location') - //young owner should not be able to start transfer - return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user2}) - }).then(tx => { - assert.isFalse(true, 'Should have thrown an error here') - }).catch((error) => { - assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') - }).then(() => { - //non-owner should not be able to start transfer - return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: nobody}) - }).then(() => { - assert.isFalse(true, 'Should have thrown an error here') - }).catch((error) => { - assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') - done() - }) - }) - - it('correct keys can cancel migration', (done) => { - identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { - let log = tx.logs[0] - assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') - assert.equal(log.args.instigator, user1, 'started migrating from wrong user') - return identityManager.cancelMigration(proxy.address, {from: user1}) - }).then(tx => { - let log = tx.logs[0] - assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') - assert.equal(log.args.instigator, user1, 'canceled migrating from wrong user') - //set up migration again - return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}) - }).then(tx => { - //Second migration attempt, should allow - let log = tx.logs[0] - assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') - assert.equal(log.args.instigator, user1, 'started migrating from wrong person') - return identityManager.cancelMigration(proxy.address, {from: user2}) - }).then(tx => { - //young owner should also be able to cancel migration - let log = tx.logs[0] - assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') - assert.equal(log.args.instigator, user2, 'canceled migrating from wrong person') - return identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}) - }).then(() => { - //Don't need to check setup again - return identityManager.cancelMigration(proxy.address, {from: nobody}) - }).then(tx => { - assert.isFalse(true, 'Should have thrown error') - }).catch(error => { - assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'Should have thrown, did not') - }).then(() => { - done() - }) - }) - - it('correct keys should finilize transfer', (done) => { - identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { - return identityManager.finalizeMigration(proxy.address, {from: nobody}) - }).then(() => { - assert.isFalse(true, 'non-owner should not be able to finalize') - }).catch(error => { - assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'should have thrown, did not') - return identityManager.finalizeMigration(proxy.address, {from: user2}) - }).then(() => { - assert.isFalse(true, 'young owner should not be able to finalize') - //has to be greater than the adminTimeLock past to be finalized - }).catch(error => { - assert.isTrue(error.toString().indexOf("invalid JUMP") != -1, 'should have thrown, did not') - }).then(() => { - evm_increaseTime(2 * adminTimeLock) - }).then(() => { - return identityManager.finalizeMigration(proxy.address, {from: user1}) - }).then(tx => { - //console.log(tx.recipt) - let log = tx.logs[0] - assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') - assert.equal(log.args.instigator, user1, 'finalized migrating from wrong person') - }).then(() => { - done() - }) - }) - - it('should be owner of new identityManager after successful transfer', (done) => { - identityManager.initiateMigration(proxy.address, newIdenManager.address, {from: user1}).then(tx => { - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('registerIdentity', ['address', 'address'], [user1, recoveryKey]) - return identityManager.forwardTo(proxy.address, newIdenManager.address, 0, data, {from: user1}) - }).then(() => { - //increase time until migration can be finialized - evm_increaseTime(2 * adminTimeLock) - }).then(() => { - return identityManager.finalizeMigration(proxy.address, newIdenManager.address, {from: user1}) - }).then(tx => { - let log = tx.logs[0] - assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') - assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') - assert.equal(log.args.newIdManager, newIdenManager.address, 'finalized migration to wrong location') - assert.equal(log.args.instigator, user1, 'finalized migrating from wrong user') - let data = '0x' + lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [LOG_NUMBER_1]) - return newIdenManager.forwardTo(proxy.address, testReg.address, 0, data, {from: user1}) - }).then(tx => { - // Verify that the proxy address is logged as the sender - return testReg.registry.call(proxy.address) - }).then((regData) => { - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'User1 should be able to send transaction from new contract') - done() - }) - }) - }) -}) diff --git a/test/MetaTx.js b/test/MetaTx.js index a769356..4451be0 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -2,7 +2,6 @@ const lightwallet = require('eth-lightwallet') const evm_increaseTime = require('./evmIncreaseTime.js') const MetaTxRelay = artifacts.require('TxRelay') const MetaIdentityManager = artifacts.require('MetaIdentityManager') -const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') const Promise = require('bluebird') @@ -426,13 +425,12 @@ contract('IdentityManagerMetaTx', (accounts) => { assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') //Try with a non-meta tx - let idenManager = await IdentityManager.new(userTimeLock, adminTimeLock, adminRate) - tx = await idenManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) + tx = await metaIdentityManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) const log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') let newProxy = Proxy.at(log.args.identity) - tx = await idenManager.forwardTo(newProxy.address, testReg.address, 0, data, {from: regularUser}) + tx = await metaIdentityManager.forwardTo(regularUser, newProxy.address, testReg.address, 0, data, {from: regularUser}) //console.log("IdenManager (no meta) tx, set from zeros: ", tx.receipt.gasUsed) tx = await testReg.register(LOG_NUMBER_1) @@ -452,7 +450,7 @@ contract('IdentityManagerMetaTx', (accounts) => { regData = await testReg.registry.call(proxy.address) assert.equal(regData.toNumber(), LOG_NUMBER_2, 'Registry did not update properly') - tx = await idenManager.forwardTo(newProxy.address, testReg.address, 0, data, {from: regularUser}) + tx = await metaIdentityManager.forwardTo(regularUser, newProxy.address, testReg.address, 0, data, {from: regularUser}) //console.log("IdenManager (no meta) tx, set from non-zeros: ", tx.receipt.gasUsed) tx = await testReg.register(LOG_NUMBER_1) From c4104503db6acaf34144e09a315bc0fdd4034fa7 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:58:07 -0400 Subject: [PATCH 37/53] update yarn --- yarn.lock | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index a533b9a..b3e8111 100644 --- a/yarn.lock +++ b/yarn.lock @@ -828,7 +828,11 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -bignumber.js@debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2, "bignumber.js@github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2": +bignumber.js@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.0.2.tgz#2d1dc37ee5968867ecea90b6da4d16e68608d21d" + +bignumber.js@debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2: version "2.0.7" resolved "https://codeload.github.com/debris/bignumber.js/tar.gz/94d7146671b9719e00a09c29b01a691bc85048c2" @@ -1720,11 +1724,10 @@ etag@~1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" -eth-lightwallet@^2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/eth-lightwallet/-/eth-lightwallet-2.5.4.tgz#a2eddaffed9d45b78175afedaac01e167730bb53" +eth-lightwallet@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/eth-lightwallet/-/eth-lightwallet-2.5.6.tgz#6f10f134ca97531e4f03a194008d314322500c13" dependencies: - bignumber.js debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2 bitcore-lib "^0.14.0" bitcore-mnemonic "^1.2.2" buffer "^4.9.0" @@ -1735,7 +1738,7 @@ eth-lightwallet@^2.5.4: rlp "^2.0.0" scrypt-async "^1.2.0" tweetnacl "0.13.2" - web3 "^0.15.3" + web3 "^0.19.1" eth-signer@^0.2.2: version "0.2.2" @@ -5981,6 +5984,16 @@ web3@^0.18.0, web3@^0.18.2: xhr2 "*" xmlhttprequest "*" +web3@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-0.19.1.tgz#e763d5b1107c4bc24abd4f8cbee1ba3659e6eb31" + dependencies: + bignumber.js "^4.0.2" + crypto-js "^3.1.4" + utf8 "^2.1.1" + xhr2 "*" + xmlhttprequest "*" + webcrypto-core@^0: version "0.1.14" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-0.1.14.tgz#03ffb074de14a56235c17e3fb8316ecea5e6c77b" From 3b99c9f7b901248fc43a72cb6ca232d751356faa Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 12:58:45 -0400 Subject: [PATCH 38/53] update txRelay tests --- test/MetaTx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/MetaTx.js b/test/MetaTx.js index 4451be0..f5f4fad 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -90,7 +90,7 @@ function signPayload(relayContract, signingAddr, sendingAddress, destination, }) } -contract('IdentityManagerMetaTx', (accounts) => { +contract('TxRelay', (accounts) => { let proxy let deployedProxy let testReg From a8f254aaeaf3349c140875eebfe151d7795f833e Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 13:00:04 -0400 Subject: [PATCH 39/53] updating for circleci --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c691518..1105f99 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,6 @@ "truffle-hdwallet-provider": "0.0.3" }, "dependencies": { - "eth-lightwallet": "^2.5.4" + "eth-lightwallet": "^2.5.6" } } From e6f57d9f42233234640fa9ac44343c46271e14cd Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 13:43:08 -0400 Subject: [PATCH 40/53] simplify forwarding, update tests --- contracts/TxRelay.sol | 13 ------- test/MetaTx.js | 83 ------------------------------------------- 2 files changed, 96 deletions(-) diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index 4a70323..daea36f 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -10,19 +10,6 @@ contract TxRelay { // Different from the nonce defined w/in protocol. mapping(address => uint) nonce; - /* - * @dev Relays normal transactions - * @param destination The address to relay data to - * @param data The bytes necessary to call the function in the destination contract. - Note, the first encoded argument in data must be msg.sender's address - */ - function relayTx(address destination, bytes data) { - if (!checkAddress(data, msg.sender)) throw; - - //As no state is updated before, can just throw in the case of a failed call. - if (!destination.call(data)) throw; - } - /* * @dev Relays meta transactions * @param sigV, sigR, sigS ECDSA signature on some data to be forwarded diff --git a/test/MetaTx.js b/test/MetaTx.js index f5f4fad..cb917e9 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -169,89 +169,6 @@ contract('TxRelay', (accounts) => { }) }) - describe("Regular transactions", () => { - //Deploy a new Proxy controlled by regular user who does not use meta tx - beforeEach(async function() { - errorThrown = false - metaIdentityManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) - let tx = await metaIdentityManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) - assert.equal(tx.logs[0].event, 'IdentityCreated', 'Wrong event') - proxy = Proxy.at(tx.logs[0].args.identity) - }) - - it('Should forward properly formatted tx', async function() { - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [regularUser, proxy.address, testReg.address, 0, data] - newData = enc('forwardTo', types, params) - - res = await txRelay.checkAddress(newData, regularUser) - assert.isTrue(res, "Address is not first parameter") - - await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') - }) - - it('Should not forward tx from someone lying about address', async function() { - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] //lies about who they are - newData = enc('forwardTo', types, params) - - res = await txRelay.checkAddress(newData, regularUser) - assert.isFalse(res, "Address is first parameter, should be someone else") - - try { - await txRelay.relayTx( metaIdentityManager.address, newData, {from: regularUser}) - } catch(e) { - assert.isFalse(errorThrown, "Sanity check") - assert.match(e.message, /invalid JUMP/, "Should have thrown, user lied about address") - errorThrown = true - } - - assert.isTrue(errorThrown, "Should have thrown, user lied about address") - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should not forward properly formatted tx with Ether', async function() { - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [regularUser, proxy.address, testReg.address, 0, data] - newData = enc('forwardTo', types, params) - - res = await txRelay.checkAddress(newData, regularUser) - assert.isTrue(res, "Address is not first parameter") - - try { - await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser, value: 100}) - } catch (e) { - assert.isFalse(errorThrown, "Sanity check") - assert.match(e.message, /invalid JUMP/, "Should have thrown, cannot forward Ether") - errorThrown = true; - } - - assert.isTrue(errorThrown, "Should have thrown, cannot forward Ether") - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should forward tx multiple times', async function() { - for (let i = 0; i < 100; i++) { - let randNum = getRandomNumber() - data = enc('register', ['uint256'], [randNum]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [regularUser, proxy.address, testReg.address, 0, data] - newData = enc('forwardTo', types, params) - - await txRelay.relayTx(metaIdentityManager.address, newData, {from: regularUser}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') - } - }) - }) - describe("Meta transactions", () => { beforeEach(async function() { errorThrown = false From bb2c1131e7d84202886ff1d8187dc6a30f3c8040 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 13:52:12 -0400 Subject: [PATCH 41/53] remove old tests --- test/MetaTx.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/MetaTx.js b/test/MetaTx.js index cb917e9..2f63e26 100644 --- a/test/MetaTx.js +++ b/test/MetaTx.js @@ -403,6 +403,7 @@ contract('TxRelay', (accounts) => { assert.isFalse(res, "Address is first parameter, should be too short") //Test with a bunch of randomly generated data + //This might be useless :~) for (let i = 0; i < 10; i++) { data = getRandomHexString(36); //minimal length to possibly pass res = await txRelay.checkAddress(data, user1) //probabilistically, should never be true. From 194f4cf11b2a1af533804c27125e687a5e7dbc14 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 26 Jun 2017 17:25:35 -0400 Subject: [PATCH 42/53] update comments for MetaIdentityManager --- contracts/MetaIdentityManager.sol | 145 +++++++++++++++++----------- contracts/TxRelay.sol | 7 +- contracts/misc/MetaTestRegistry.sol | 19 ++++ 3 files changed, 111 insertions(+), 60 deletions(-) create mode 100644 contracts/misc/MetaTestRegistry.sol diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index 212ab06..f60812b 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -2,10 +2,6 @@ pragma solidity 0.4.8; import "./Proxy.sol"; contract MetaIdentityManager { - uint adminTimeLock; - uint userTimeLock; - uint adminRate; - address relay; event IdentityCreated( address indexed identity, @@ -38,16 +34,25 @@ contract MetaIdentityManager { address indexed newIdManager, address instigator); - event MigrationFinalized( + event MigrationFinalized( address indexed identity, address indexed newIdManager, address instigator); + uint adminTimeLock; + uint userTimeLock; + uint adminRate; + address relay; + mapping(address => mapping(address => uint)) owners; mapping(address => address) recoveryKeys; mapping(address => mapping(address => uint)) limiter; - mapping(address => uint) migrationInitiated; - mapping(address => address) migrationNewAddress; + + struct Migration { + uint startTime; + address newAddress; + } + mapping(address => Migration) migrations; modifier onlyAuthorized() { if (msg.sender == relay || checkMessageData(msg.sender)) _; @@ -55,119 +60,147 @@ contract MetaIdentityManager { } modifier onlyOwner(address identity, address sender) { - if (owners[identity][sender] > 0 && (owners[identity][sender] + userTimeLock) <= now ) _ ; + if (owners[identity][sender] > 0 && (owners[identity][sender] + userTimeLock) <= now ) _; else throw; } modifier onlyOlderOwner(address identity, address sender) { - if (owners[identity][sender] > 0 && (owners[identity][sender] + adminTimeLock) <= now) _ ; + if (owners[identity][sender] > 0 && (owners[identity][sender] + adminTimeLock) <= now) _; else throw; } modifier onlyRecovery(address identity, address sender) { - if (recoveryKeys[identity] == sender) _ ; + if (recoveryKeys[identity] == sender) _; else throw; } modifier rateLimited(Proxy identity, address sender) { - if (limiter[identity][sender] < (now - adminRate)) { + if ((limiter[identity][sender] + adminRate) < now) { limiter[identity][sender] = now; _ ; } else throw; } - // Instantiate IdentityManager with the following limits: - // - userTimeLock - Time before new owner can control proxy - // - adminTimeLock - Time before new owner can add/remove owners - // - adminRate - Time period used for rate limiting a given key for admin functionality - function MetaIdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate, address relayAddress) { + modifier validRecovery(address newKey) { //protects against some weird attacks + if (newKey != address(0)) _; + else throw; + } + + /// @dev Contract constructor sets initial timelocks and meta-tx relay address + /// @param _userTimeLock Time before new owner can control proxy + /// @param _adminTimeLock Time before new owner can add/remove owners + /// @param _adminRate Time period used for rate limiting a given key for admin functionality + /// @param _relayAddress Address of meta transaction relay contract + function MetaIdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate, address _relayAddress) { adminTimeLock = _adminTimeLock; userTimeLock = _userTimeLock; adminRate = _adminRate; - relay = relayAddress; + relay = _relayAddress; } - // Factory function - // gas 289,311 - function CreateIdentity(address owner, address recoveryKey) { - if (recoveryKey == address(0)) throw; + /// @dev Creates a new proxy contract for an owner and recovery + /// @param owner Key who can use this contract to control proxy. Given full power + /// @param recoveryKey Key of recovery network or address from seed to recovery proxy + /// Gas cost of ~300,000 + function CreateIdentity(address owner, address recoveryKey) validRecovery(recoveryKey) { Proxy identity = new Proxy(); owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[identity] = recoveryKey; IdentityCreated(identity, msg.sender, owner, recoveryKey); } - // An identity Proxy can use this to register itself with the IdentityManager - // Note they also have to change the owner of the Proxy over to this, but after calling this - function registerIdentity(address owner, address recoveryKey) { - if (recoveryKey == address(0)) throw; - if (owners[msg.sender][owner] > 0 || recoveryKeys[msg.sender] > 0 ) throw; // Deny any funny business - owners[msg.sender][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one + /// @dev Allows a user to transfer control of existing proxy to this contract. Must come through proxy + /// @param owner Key who can use this contract to control proxy. Given full power + /// @param recoveryKey Key of recovery network or address from seed to recovery proxy + /// Note: User must change owner of proxy to this contract after calling this + function registerIdentity(address owner, address recoveryKey) validRecovery(recoveryKey) { + if (recoveryKeys[msg.sender] > 0 ) throw; // Invariant enforced w/ validRecovery modifier + owners[msg.sender][owner] = now - adminTimeLock; // Owner has full power from day one recoveryKeys[msg.sender] = recoveryKey; IdentityCreated(msg.sender, msg.sender, owner, recoveryKey); } - // Primary forward function - function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) onlyAuthorized onlyOwner(identity, sender) { + /// @dev Allows a user to forward a call through their proxy. + function forwardTo(address sender, Proxy identity, address destination, uint value, bytes data) + onlyAuthorized + onlyOwner(identity, sender) + { identity.forward(destination, value, data); } - // an owner can add a new device instantly - function addOwner(address sender, Proxy identity, address newOwner) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { + /// @dev Allows an olderOwner to add a new owner instantly + function addOwner(address sender, Proxy identity, address newOwner) + onlyAuthorized + onlyOlderOwner(identity, sender) + rateLimited(identity, sender) + { owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, sender); } - // a recovery key owner can add a new device with 1 days wait time - function addOwnerFromRecovery(address sender, Proxy identity, address newOwner) onlyAuthorized onlyRecovery(identity, sender) rateLimited(identity, sender) { + /// @dev Allows a recoveryKey to add a new owner with userTimeLock waiting time + function addOwnerFromRecovery(address sender, Proxy identity, address newOwner) + onlyAuthorized + onlyRecovery(identity, sender) + rateLimited(identity, sender) + { if (owners[identity][newOwner] > 0) throw; owners[identity][newOwner] = now; OwnerAdded(identity, newOwner, sender); } - // an owner can remove another owner instantly - function removeOwner(address sender, Proxy identity, address owner) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { - owners[identity][owner] = 0; + /// @dev Allows an owner to remove another owner instantly + function removeOwner(address sender, Proxy identity, address owner) + onlyAuthorized + onlyOlderOwner(identity, sender) + rateLimited(identity, sender) + { + delete owners[identity][owner]; OwnerRemoved(identity, owner, sender); } - // an owner can add change the recoverykey whenever they want to - function changeRecovery(address sender, Proxy identity, address recoveryKey) onlyAuthorized onlyOlderOwner(identity, sender) rateLimited(identity, sender) { - if (recoveryKey == address(0)) throw; + /// @dev Allows an owner to change the recoveryKey instantly + function changeRecovery(address sender, Proxy identity, address recoveryKey) + onlyAuthorized + onlyOlderOwner(identity, sender) + rateLimited(identity, sender) + validRecovery(recoveryKey) + { recoveryKeys[identity] = recoveryKey; RecoveryChanged(identity, recoveryKey, sender); } - // an owner can migrate away to a new IdentityManager - function initiateMigration(address sender, Proxy identity, address newIdManager) onlyAuthorized onlyOlderOwner(identity, sender) { - migrationInitiated[identity] = now; - migrationNewAddress[identity] = newIdManager; + /// @dev Allows an owner to being process of transfering proxy to new IdentityManager + function initiateMigration(address sender, Proxy identity, address newIdManager) + onlyAuthorized + onlyOlderOwner(identity, sender) + { + migrations[identity].startTime = now; + migrations[identity].newAddress = newIdManager; MigrationInitiated(identity, newIdManager, sender); } - // any owner can cancel a migration - function cancelMigration(address sender, Proxy identity) onlyAuthorized onlyOwner(identity, sender) { - address canceledManager = migrationNewAddress[identity]; - migrationInitiated[identity] = 0; - migrationNewAddress[identity] = 0; + /// @dev Allows an owner to cancel the process of transfering proxy to new IdentityManager + function cancelMigration(address sender, Proxy identity) onlyOwner(identity, sender) { + address canceledManager = migrations[identity].newAddress; + delete migrations[identity]; MigrationCanceled(identity, canceledManager, sender); } - // owner needs to finalize migration once adminTimeLock time has passed - // WARNING: before transfering to a new address, make sure this address is "ready to recieve" the proxy. - // Not doing so risks the proxy becoming stuck. + /// @dev Allows an owner to finalize and completly transfer proxy to new IdentityManager + /// Note: before transfering to a new address, make sure this address is "ready to recieve" the proxy. + /// Not doing so risks the proxy becoming stuck. function finalizeMigration(address sender, Proxy identity) onlyAuthorized onlyOlderOwner(identity, sender) { - if (migrationInitiated[identity] > 0 && migrationInitiated[identity] + adminTimeLock < now) { - address newIdManager = migrationNewAddress[identity]; - migrationInitiated[identity] = 0; - migrationNewAddress[identity] = 0; + if (migrations[identity].startTime > 0 && migrations[identity].startTime + adminTimeLock < now) { + address newIdManager = migrations[identity].newAddress; + delete migrations[identity]; identity.transfer(newIdManager); MigrationFinalized(identity, newIdManager, sender); } } //Checks that address a is the first input in msg.data. - //Has very minimal gas overhead. Apparently, negative lol + //Has very minimal gas overhead. function checkMessageData(address a) constant internal returns (bool t) { if (msg.data.length < 36) return false; assembly { diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index daea36f..281ce8c 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -21,7 +21,7 @@ contract TxRelay { address destination, bytes data, address claimedSender) { - // relay :: nonce :: destination :: data :: relayer :: blockTimeout + // relay :: nonce :: destination :: data :: relayer bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender); address addressFromSig = ecrecover(h, sigV, sigR, sigS); @@ -31,8 +31,7 @@ contract TxRelay { if (!checkAddress(data, addressFromSig)) throw; if (!destination.call(data)) { - //Output an event? - //Do not throw; want nonce to still update + //In the future, add event here. Has semi-complex gas considerations. See EIP 150 } } @@ -40,7 +39,7 @@ contract TxRelay { * @dev Compares the first arg of a function call to an address * @param b The byte array that may have an address on the end * @param address Address to check on the end of the array - (Special thanks to tjade273 for optimization) + (Special thanks to tjade273 for optimization) */ function checkAddress(bytes b, address a) constant returns (bool t) { if (b.length < 36) return false; diff --git a/contracts/misc/MetaTestRegistry.sol b/contracts/misc/MetaTestRegistry.sol new file mode 100644 index 0000000..40410a6 --- /dev/null +++ b/contracts/misc/MetaTestRegistry.sol @@ -0,0 +1,19 @@ +pragma solidity ^0.4.8; + +// This contract is only used for testing purposes. +contract MetaTestRegistry { + + mapping(address => uint) public registry; + + function register(address sender, uint x) { + registry[sender] = x; + } + + function reallyLongFunctionName(uint with, address many, string strange, uint params) { + registry[many] = params; + } + + function testThrow(address sender) { + throw; + } +} From 33b36fe9677a46430c2423dbdf9ede8d4825ff69 Mon Sep 17 00:00:00 2001 From: naterush Date: Tue, 27 Jun 2017 16:41:59 -0400 Subject: [PATCH 43/53] update meta-tx tests: --- contracts/MetaIdentityManager.sol | 2 +- package.json | 3 +- test/MetaTx.js | 413 ---------------- test/txRelay.js | 771 ++++++++++++++++++++++++++++++ yarn.lock | 4 +- 5 files changed, 776 insertions(+), 417 deletions(-) delete mode 100644 test/MetaTx.js create mode 100644 test/txRelay.js diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index f60812b..b3147ae 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -181,7 +181,7 @@ contract MetaIdentityManager { } /// @dev Allows an owner to cancel the process of transfering proxy to new IdentityManager - function cancelMigration(address sender, Proxy identity) onlyOwner(identity, sender) { + function cancelMigration(address sender, Proxy identity) onlyAuthorized onlyOwner(identity, sender) { address canceledManager = migrations[identity].newAddress; delete migrations[identity]; MigrationCanceled(identity, canceledManager, sender); diff --git a/package.json b/package.json index 1105f99..855cb9a 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "truffle-hdwallet-provider": "0.0.3" }, "dependencies": { - "eth-lightwallet": "^2.5.6" + "eth-lightwallet": "^2.5.6", + "left-pad": "^1.1.3" } } diff --git a/test/MetaTx.js b/test/MetaTx.js deleted file mode 100644 index 2f63e26..0000000 --- a/test/MetaTx.js +++ /dev/null @@ -1,413 +0,0 @@ -const lightwallet = require('eth-lightwallet') -const evm_increaseTime = require('./evmIncreaseTime.js') -const MetaTxRelay = artifacts.require('TxRelay') -const MetaIdentityManager = artifacts.require('MetaIdentityManager') -const Proxy = artifacts.require('Proxy') -const TestRegistry = artifacts.require('TestRegistry') -const Promise = require('bluebird') -const compareCode = require('./compareCode') -const solsha3 = require('solidity-sha3').default -web3.eth = Promise.promisifyAll(web3.eth) - - - -const LOG_NUMBER_1 = 1234 -const LOG_NUMBER_2 = 2345 - -const userTimeLock = 100; -const adminTimeLock = 1000; -const adminRate = 200; - -const zero = "0000000000000000000000000000000000000000000000000000000000000000" - -function enc(funName, types, params) { - return '0x' + lightwallet.txutils._encodeFunctionTxData(funName, types, params) -} - -//Returns random number in [1, 99] -function getRandomNumber() { //Thanks Oed :~) - return Math.floor(Math.random() * (100 - 1)) + 1; -} - -//Returns a random hex string -function getRandomHexString(length) { - var randStr = ""; - var hexChar = "0123456789abcdef" - for (var i = 0; i < length; i++) { - randStr += hexChar.charAt(Math.floor(Math.random() * hexChar.length)) - } - return randStr -} - -//Left packs a (hex) string -function pad(n) { - assert.equal(typeof(n), 'string', "Passed in a non string") - let data - if (n.startsWith("0x")) { - data = '0x' + new Array(64 - n.length + 3).join('0') + n.slice(2); - assert.equal(data.length, 66, "packed incorrectly") - return data; - } else { - data = '0x' + new Array(64 - n.length + 1).join('0') + n - assert.equal(data.length, 66, "packed incorrectly") - return data; - } -} - -function signPayload(relayContract, signingAddr, sendingAddress, destination, - functionName, functionTypes, functionParams, lw, keyFromPw) { - return new Promise( - function (resolve, reject) { - if (functionTypes.length !== functionParams.length || typeof(functionName) !== 'string') { - reject(error) - } - //Prolly should check inputs more thoroughly :@ - let nonce - let blockTimeout - let data - let hashInput - let hash - let sig - let retVal = {} - data = '0x' + lightwallet.txutils._encodeFunctionTxData(functionName, functionTypes, functionParams) - - relayContract.getNonce.call(signingAddr).then(currNonce => { - nonce = currNonce - - //Tight packing, as Solidity sha3 does - hashInput = relayContract.address + pad(nonce.toString('16')).slice(2) - + destination.slice(2) + data.slice(2) + sendingAddress.slice(2) - hash = solsha3(hashInput) - sig = lightwallet.signing.signMsgHash(lw, keyFromPw, hash, signingAddr) - retVal.r = '0x'+sig.r.toString('hex') - retVal.s = '0x'+sig.s.toString('hex') - retVal.v = sig.v //Q: Why is this not converted to hex? - retVal.data = data - retVal.hash = hash - retVal.nonce = nonce - resolve(retVal) - }) - }) -} - -contract('TxRelay', (accounts) => { - let proxy - let deployedProxy - let testReg - let metaIdentityManager - let txRelay - let user1 - let user2 - let user3 - let user4 - let sender - - let recoveryKey - let recoveryKey2 - - let lw - let keyFromPw - - let data - let types - let params - let newData - let res - let regData - let p - let errorThrown = false; - - beforeEach((done) => { - let seed = "pull rent tower word science patrol economy legal yellow kit frequent fat" - - lightwallet.keystore.createVault( - {hdPathString: "m/44'/60'/0'/0", - seedPhrase: seed, - password: "test", - salt: "testsalt" - }, - function (err, keystore) { - - lw = keystore - lw.keyFromPassword("test", function(e,k) { - keyFromPw = k - - lw.generateNewAddress(keyFromPw, 10) - let acct = lw.getAddresses() - - user1 = '0x'+acct[0] - nobody = '0x'+acct[1] // has no authority - user2 = '0x'+acct[2] - user3 = '0x'+acct[3] - user4 = '0x'+acct[4] - recoveryKey = '0x'+acct[8] - recoveryKey2 = '0x'+acct[9] - - sender = accounts[0] - notSender = accounts[1] - regularUser = accounts[2] - - MetaTxRelay.new().then(instance => { - txRelay = instance - return MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) - }).then(instance => { - metaIdentityManager = instance - return Proxy.new({from: sender}) - }).then(instance => { - deployedProxy = instance - return TestRegistry.new() - }).then((instance) => { - testReg = instance - return metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}) - }).then(tx => { - const log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - proxy = Proxy.at(log.args.identity) - done() - }) - }) - }) - }) - - describe("Meta transactions", () => { - beforeEach(async function() { - errorThrown = false - }) - - it('Should forward properly formatted meta tx', async function() { - //Setup data and sign - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") - - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') - - //Setup another transaction - data = enc('register', ['uint256'], [LOG_NUMBER_2]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - assert.equal(p.nonce.toString(), "1", "Nonce did not increment") - - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'Registry did not update properly') - }) - - - it('Should forward properly formatted meta tx, though future calls may fail', async function() { - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user2, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - - res = await txRelay.checkAddress.call(p.data, user2) - assert.isTrue(res, "Address is not first parameter") - - //Does not throw as the nonce needs to be updated - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - - //Try another transaction, where nonce should have updated. - data = enc('register', ['uint256'], [LOG_NUMBER_2]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user2, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - assert.equal(p.nonce.toString(), '1', 'Nonce should have updated, even though sub-call failed') - - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should not forward meta tx from someone lying about address', async function() { - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - //Claim to be user1 by encoding their address, but can only sign w/ user2 key, as they don't have user1's key - p = await signPayload(txRelay, user2, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - //This will still pass. User should be able to encode anything they want in data. - assert.isTrue(res, "Address is not first parameter") - - try { - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: sender}) - } catch (e) { - assert.match(e.message, /invalid JUMP/, "Should have thrown, user lied about address") - errorThrown = true - } - - assert.isTrue(errorThrown, "Should have thrown, user lied about address") - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should not forward meta tx from a dishonest relayer', async function() { - // Encode the transaction to send to the Owner contract - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - //Claim to be user1 by encoding their address, but can only sign w/ their key, as they don't have user1's key - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") - - try { - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user2, {from: notSender}) - } catch (e) { - assert.isFalse(errorThrown, "Sanity check") - assert.match(e.message, /invalid JUMP/, "Should have thrown, wrong relayer forwarded") - errorThrown = true - } - assert.isTrue(errorThrown, "Should have thrown, wrong relayer forwarded") - - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should not forward meta tx with Ether', async function () { - //Setup data and sign - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") - - try { - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender, value: 10000}) - } catch(e) { - assert.isFalse(errorThrown, "Sanity check") - assert.match(e.message, /invalid JUMP/, "Should have thrown an error, included Ether") - errorThrown = true; - } - assert.isTrue(errorThrown, "Should have thrown an error, included Ether") - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), 0, 'Registry updated, should not have') - }) - - it('Should forward meta tx multiple times', async function() { - for (let i = 0; i < 100; i++) { - let randNum = getRandomNumber() - data = enc('register', ['uint256'], [randNum]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - assert.equal(p.nonce, i.toString(), "Nonce should have updated") - await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') - } - }) - }) - - //Not working properly - it('Should not have massive overhead :~)', async function() { - //Setup data and sign - data = enc('register', ['uint256'], [LOG_NUMBER_1]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - - //FIRST: Test throw, to increment the nonce for better reporting - throwData = enc('doThrow', [], []) - throwParams = [user1, proxy.address, testReg.address, 0, throwData] - pThrow = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - - await txRelay.relayMetaTx(pThrow.v, pThrow.r, pThrow.s, metaIdentityManager.address, - pThrow.data, user1, {from: sender}) - - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - - assert.equal(p.nonce.toString(), "1", "Nonce should have been incremented") - - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") - - let tx = await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) - //console.log("Meta-tx, set from zeros: ", tx.receipt.gasUsed) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') - - //Try with a non-meta tx - tx = await metaIdentityManager.CreateIdentity(regularUser, recoveryKey, {from: sender}) - const log = tx.logs[0] - assert.equal(log.event, 'IdentityCreated', 'wrong event') - let newProxy = Proxy.at(log.args.identity) - - tx = await metaIdentityManager.forwardTo(regularUser, newProxy.address, testReg.address, 0, data, {from: regularUser}) - //console.log("IdenManager (no meta) tx, set from zeros: ", tx.receipt.gasUsed) - - tx = await testReg.register(LOG_NUMBER_1) - //console.log("regular transaction, set from zeros: ", tx.receipt.gasUsed) - - //Try again. - data = enc('register', ['uint256'], [LOG_NUMBER_2]) - types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(txRelay, user1, sender, metaIdentityManager.address, - 'forwardTo', types, params, lw, keyFromPw) - - assert.equal(p.nonce.toString(), "2", "Nonce should have been incremented twice") - - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, metaIdentityManager.address, p.data, user1, {from: sender}) - //console.log("Meta-tx, set from non-zeros: ", tx.receipt.gasUsed) - regData = await testReg.registry.call(proxy.address) - assert.equal(regData.toNumber(), LOG_NUMBER_2, 'Registry did not update properly') - - tx = await metaIdentityManager.forwardTo(regularUser, newProxy.address, testReg.address, 0, data, {from: regularUser}) - //console.log("IdenManager (no meta) tx, set from non-zeros: ", tx.receipt.gasUsed) - - tx = await testReg.register(LOG_NUMBER_1) - //console.log("regular transaction, set from non-zeros: ", tx.receipt.gasUsed) - }) - - it('Should not approve bad data', async function () { - //This function needs some serious thought + testing - let t = ['address', 'address', 'address', 'uint256', 'bytes'] //types - let p = [user1, proxy.address, testReg.address, 0, []] //params - let n = "forwardTo" //name of function - - //encoded correctly - data = enc(n, t, p) - res = await txRelay.checkAddress.call(data, user1) - assert.isTrue(res, "Address is not first parameter") - //off by a nibble - data = enc(n, t, p).slice(1) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be shifted off") - //short - data = enc(n, t, p).substring(0, 16) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be too short") - //wrong address - let badParam = [user2, proxy.address, testReg.address, 0, []] - data = enc(n, t, badParam) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be someone else") - //first half of address - data = enc(n, t, p).substring(0, 26) + zero - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be too short") - - //Test with a bunch of randomly generated data - //This might be useless :~) - for (let i = 0; i < 10; i++) { - data = getRandomHexString(36); //minimal length to possibly pass - res = await txRelay.checkAddress(data, user1) //probabilistically, should never be true. - assert.isFalse(res, "Address is first parameter, probabilistically should not be") - } - }) -}) diff --git a/test/txRelay.js b/test/txRelay.js new file mode 100644 index 0000000..f3cf677 --- /dev/null +++ b/test/txRelay.js @@ -0,0 +1,771 @@ +const lightwallet = require('eth-lightwallet') +const evm_increaseTime = require('./evmIncreaseTime.js') +const MetaTxRelay = artifacts.require('TxRelay') +const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const Proxy = artifacts.require('Proxy') +const TestRegistry = artifacts.require('TestRegistry') +const MetaTestRegistry = artifacts.require('MetaTestRegistry') +const Promise = require('bluebird') +const compareCode = require('./compareCode') +const solsha3 = require('solidity-sha3').default +const leftPad = require('left-pad') +web3.eth = Promise.promisifyAll(web3.eth) + +const LOG_NUMBER_1 = 1234 +const LOG_NUMBER_2 = 2345 + +const userTimeLock = 100; +const adminTimeLock = 1000; +const adminRate = 200; + +const zero = "0000000000000000000000000000000000000000000000000000000000000000" + +function enc(funName, types, params) { + return '0x' + lightwallet.txutils._encodeFunctionTxData(funName, types, params) +} + +//Returns random number in [1, 99] +function getRandomNumber() { //Thanks Oed :~) + return Math.floor(Math.random() * (100 - 1)) + 1; +} + +//Left packs a (hex) string. Should probably use leftpad +function pad(n) { + assert.equal(typeof(n), 'string', "Passed in a non string") + let data + if (n.startsWith("0x")) { + data = '0x' + leftPad(n.slice(2), '64', '0') + assert.equal(data.length, 66, "packed incorrectly") + return data; + } else { + data = '0x' + leftPad(n, '64', '0') + assert.equal(data.length, 66, "packed incorrectly") + return data; + } +} + +function signPayload(signingAddr, sendingAddr, txRelay, destinationAddress, functionName, + functionTypes, functionParams, lw, keyFromPw) { + return new Promise( + function (resolve, reject) { + if (functionTypes.length !== functionParams.length) { + reject(error("Types and params are uneven")) + } + if (typeof(functionName) !== 'string') { + reject(error("Function name should be a string")) + } + //Prolly should check inputs more thoroughly :@ + let nonce + let blockTimeout + let data + let hashInput + let hash + let sig + let retVal = {} + data = '0x' + lightwallet.txutils._encodeFunctionTxData(functionName, functionTypes, functionParams) + + txRelay.getNonce.call(signingAddr).then(currNonce => { + nonce = currNonce + //Tight packing, as Solidity sha3 does + hashInput = txRelay.address + pad(nonce.toString('16')).slice(2) + + destinationAddress.slice(2) + data.slice(2) + sendingAddr.slice(2) + hash = solsha3(hashInput) + sig = lightwallet.signing.signMsgHash(lw, keyFromPw, hash, signingAddr) + retVal.r = '0x'+sig.r.toString('hex') + retVal.s = '0x'+sig.s.toString('hex') + retVal.v = sig.v //Q: Why is this not converted to hex? + retVal.data = data + retVal.hash = hash + retVal.nonce = nonce + retVal.dest = destinationAddress + resolve(retVal) + }) + }) +} + + +//shouldThrow is if the relayer should throw +//shouldUpdate is if the subcall should throw +async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, proxyAddress, + testReg, relayShouldFail, subCallShouldFail, lw, keyFromPw) { + //Relayer must be a truffle account, while fromAccount must be lightwallet account + let errorThrown = false + let testNum = getRandomNumber() + // Encode the transaction to send to the proxy contract + let data = enc('register', ['uint256'], [testNum]) + let types = ['address', 'address', 'address', 'uint256', 'bytes'] + let params = [signingAddr, proxyAddress, testReg.address, 0, data] + // Setup payload for meta-tx + let p = await signPayload(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, + 'forwardTo', types, params, lw, keyFromPw) + let firstNonce = p.nonce + // Send forward request from the owner + try { + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, signingAddr, {from: sendingAddr}) + } catch (error) { + errorThrown = true + assert.match(errorThrown, /invalid JUMP/, "An error should have been thrown") + } + if (relayShouldFail) { + assert.true(errorThrown, "Transaction should not have gotten through relay") + } else { + let regData = await testReg.registry.call(proxyAddress) + if (subCallShouldFail) { + assert.notEqual(regData.toNumber(), testNum) + } else { + assert.equal(regData.toNumber(), testNum) + } + p = await signPayload(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, + 'forwardTo', types, params, lw, keyFromPw) + assert.equal(p.nonce.toNumber(), firstNonce.toNumber() + 1, "Nonce should have updated") + } +} + +async function checkLogs(tx, eventName, indexAddOne, indexAddTwo, notIndexAdd) { + const log = tx.receipt.logs[0] + assert.equal(log.topics[0], solsha3(eventName + "(address,address,address)"), "Wrong event") + assert.equal(log.topics[1], pad(indexAddOne), "Wrong topic one") + assert.equal(log.topics[2], pad(indexAddTwo), "Wrong topic two") + assert.equal(log.data, pad(notIndexAdd), "Wrong initiator") +} + + +contract('TxRelay', (accounts) => { + let proxy + let deployedProxy + let testReg + let mTestReg //metaTestRegistry + let metaIdentityManager + let txRelay + let user1 + let user2 + let user3 + let user4 + let sender + + let recoveryKey + let recoveryKey2 + + let lw + let keyFromPw + + let data + let types + let params + let newData + let res + let regData + let p + let errorThrown = false; + + beforeEach((done) => { + let seed = "pull rent tower word science patrol economy legal yellow kit frequent fat" + + lightwallet.keystore.createVault( + {hdPathString: "m/44'/60'/0'/0", + seedPhrase: seed, + password: "test", + salt: "testsalt" + }, + function (err, keystore) { + + lw = keystore + lw.keyFromPassword("test", function(e,k) { + keyFromPw = k + + lw.generateNewAddress(keyFromPw, 10) + let acct = lw.getAddresses() + + user1 = '0x'+acct[0] + nobody = '0x'+acct[1] // has no authority + user2 = '0x'+acct[2] + user3 = '0x'+acct[3] + user4 = '0x'+acct[4] + recoveryKey = '0x'+acct[8] + recoveryKey2 = '0x'+acct[9] + + sender = accounts[0] + notSender = accounts[1] + regularUser = accounts[2] + + errorThrown = false + + MetaTxRelay.new().then(instance => { + txRelay = instance + return MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + }).then(instance => { + metaIdentityManager = instance + return Proxy.new({from: sender}) + }).then(instance => { + deployedProxy = instance + return TestRegistry.new() + }).then((instance) => { + testReg = instance + return metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}) + }).then(tx => { + const log = tx.logs[0] + assert.equal(log.event, 'IdentityCreated', 'wrong event') + proxy = Proxy.at(log.args.identity) + return MetaTestRegistry.new() + }).then(instance => { + mTestReg = instance + done() + }) + }) + }) + }) + + describe("Meta transactions", () => { + it('Should forward properly formatted meta tx', async function() { + types = ['address', 'uint256'] + params = [user1, LOG_NUMBER_1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, + user1, {from: sender}) + + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update') + }) + + + it('Should forward properly formatted meta tx, though sub-calls may fail', async function() { + types = ['address'] + params = [user1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'testThrow', + types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, + {from: sender, gas: 4500000}) + //Best way I have found to test for throw in a sub-call. Suggestions welcome :) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Did not throw, as it should have consumed gas") + + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'testThrow', + types, params, lw, keyFromPw) + + assert.equal(p.nonce, "1", "nonce should have updated") + }) + + it('Should not forward meta tx from someone lying about address', async function() { + //User1 encodes user2's address. Still can only sign w/ their own key + types = ['address', 'uint256'] + params = [user2, LOG_NUMBER_1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user2) + assert.isTrue(res, "Address is not first parameter") + + try { + //claim to be a different person again + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, + user2, {from: sender}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "Should have thrown") + errorThrown = true; + } + assert.isTrue(errorThrown, "Has thrown an error") + + //Check both address in case in updated one + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), 0, 'Registry did not update') + regData = await mTestReg.registry.call(user2) + assert.equal(regData.toNumber(), 0, 'Registry did not update') + }) + + it('Should not forward meta tx from a dishonest relayer', async function() { + types = ['address', 'uint256'] + params = [user1, LOG_NUMBER_1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + try { + //Wrong sender tries to send transaction + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, + user1, {from: notSender}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "Should have thrown") + errorThrown = true; + } + assert.isTrue(errorThrown, "Has thrown an error") + + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), 0, 'Registry did not update') + }) + + it('Should not forward meta tx with Ether', async function () { + types = ['address', 'uint256'] + params = [user1, LOG_NUMBER_1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + try { + //Send the transaction with 1 Wei + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, + {from: sender, value: 1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "Should have thrown") + errorThrown = true; + } + assert.isTrue(errorThrown, "Should have thrown an error") + + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), 0, 'Registry did not update') + }) + + it('Should not allow a replay attack', async function () { + types = ['address', 'uint256'] + params = [user1, LOG_NUMBER_1] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, + user1, {from: sender}) + + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update') + + try { + //Relayer tries to relay the same transaction twice + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, + user1, {from: sender}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "Should have thrown") + }) + + //Had some weird stuff w/ hex before - not a great test though :@ + it('Should forward meta tx multiple times', async function() { + let randNum + + for (let i = 0; i < 100; i++) { + randNum = getRandomNumber() + + types = ['address', 'uint256'] + params = [user1, randNum] + p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', + types, params, lw, keyFromPw) + + assert.equal(p.nonce, i.toString(), "Nonce should have updated") + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + regData = await mTestReg.registry.call(user1) + assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') + } + }) + }) + + describe("Meta-tx with MetaIdentityManager", () => { + describe("existing identity", () => { + it("allow transactions initiated by owner", async function () { + await testMetaTxForwardTo(user1, sender, txRelay, metaIdentityManager.address, + proxy.address, testReg, false, false, lw, keyFromPw) + }) + + it("don't allow transactions initiated by non owner", async function () { + await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + testReg, false, true, lw, keyFromPw) + }) + + it("owner can add other owner", async function () { + types = ['address', 'address', 'address'] + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) + }) + + it("non-owner can not add other owner", async function () { + types = ['address', 'address', 'address'] + params = [user3, proxy.address, user4] + p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user3) + assert.isTrue(res, "Address is not first parameter") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was added") + }) + + describe("new owner added by owner", () => { + beforeEach(async function () { + types = ['address', 'address', 'address'] + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) + }) + + it("within userTimeLock is not allowed transactions", async function () { + await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + testReg, false, true, lw, keyFromPw) + }) + + describe("after userTimeLock", () => { + beforeEach(async function () { + await evm_increaseTime(userTimeLock + 1) + }) + + it("Allow transactions", async function () { + await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + testReg, false, false, lw, keyFromPw) + }) + + it("can not add other owner yet", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, user3] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user2) + assert.isTrue(res, "Address is not first parameter") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was added") + }) + + it("can not remove other owner yet", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, user1] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user2) + assert.isTrue(res, "Address is not first parameter") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was removed") + }) + + it("can not change recoveryKey yet", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, recoveryKey2] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user2) + assert.isTrue(res, "Address is not first parameter") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus recovery was changed") + }) + }) + + describe("after adminTimeLock", () => { + beforeEach(async function () { + await evm_increaseTime(adminTimeLock + 1) + }) + + it("can add new owner", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, user3] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user3, user2) + }) + + it("can remove other owner", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, user3] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'removeOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + + await checkLogs(tx, "OwnerRemoved", proxy.address, user3, user2) + }) + + it("can change recoveryKey", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, recoveryKey2] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + + await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user2) + }) + }) + }) + describe("new owner added by recoveryKey", () => { + beforeEach(async function () { + types = ['address', 'address', 'address'] + params = [recoveryKey, proxy.address, user4] //new owner + p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, + 'addOwnerFromRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, recoveryKey, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user4, recoveryKey) + }) + + it("within userTimeLock is not allowed transactions", async function () { + await testMetaTxForwardTo(user4, sender, txRelay, metaIdentityManager.address, proxy.address, + testReg, false, true, lw, keyFromPw) + }) + + describe("after userTimeLock", () => { + it("Allow transactions", async function () { + await evm_increaseTime(userTimeLock + 1) + await testMetaTxForwardTo(user4, sender, txRelay, metaIdentityManager.address, proxy.address, + testReg, false, false, lw, keyFromPw) + }) + }) + + describe("after adminTimeLock", () => { + beforeEach(async function () { + await evm_increaseTime(adminTimeLock + 1) + }) + + it("can add new owner", async function () { + types = ['address', 'address', 'address'] + params = [user4, proxy.address, user3] + p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user3, user4) + }) + + it("can remove other owner", async function () { + types = ['address', 'address', 'address'] + params = [user4, proxy.address, user3] + p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + 'removeOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + + await checkLogs(tx, "OwnerRemoved", proxy.address, user3, user4) + }) + + it("can change recoveryKey", async function () { + types = ['address', 'address', 'address'] + params = [user4, proxy.address, recoveryKey2] + p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + + await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user4) + }) + }) + }) + }) + describe("migration", () => { + let newMetaIdenManager + beforeEach(async function () { + newMetaIdenManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + //Make user2 a young owner. + types = ['address', 'address', 'address'] + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) + }) + + it("older owner can start transfer", async function () { + types = ['address', 'address', 'address'] + params = [user1, proxy.address, newMetaIdenManager.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + }) + + it("young owner should not be able to start transfer", async function () { + types = ['address', 'address', 'address'] + params = [user2, proxy.address, newMetaIdenManager.address] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + }) + + it("non-owner should not be able to start transfer", async function () { + types = ['address', 'address', 'address'] + params = [user3, proxy.address, newMetaIdenManager.address] + p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + }) + + it("correct keys can cancel migration ", async function () { + //Start migration + types = ['address', 'address', 'address'] + params = [user1, proxy.address, newMetaIdenManager.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + + //Non-owner tries to cancel + types = ['address', 'address'] + params = [user3, proxy.address] + p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + 'cancelMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + + //Young owner tries to cancel + params = [user2, proxy.address] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'cancelMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + + await evm_increaseTime(adminTimeLock + 1) + + //Older owner tries to cancel. + params = [user1, proxy.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'cancelMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user1) + }) + + it("correct keys should finilize transfer", async function () { + //Start migration + types = ['address', 'address', 'address'] + params = [user1, proxy.address, newMetaIdenManager.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + + //Non-owner tries to finalize + types = ['address', 'address'] + params = [user3, proxy.address] + p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + 'finalizeMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + + //Young owner tries to finalize + params = [user2, proxy.address] + p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + 'finalizeMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + + await evm_increaseTime(adminTimeLock + 1) + + //Older owner tries to finalize, and succedes. + params = [user1, proxy.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'finalizeMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) + }) + + it("should be owner of new metaIdentityManager after successful transfer", async function () { + //Start migration + types = ['address', 'address', 'address'] + params = [user1, proxy.address, newMetaIdenManager.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + + //setup new metaIdentitymanage to receive + data = enc('registerIdentity', ['address', 'address'], [user1, recoveryKey]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, newMetaIdenManager.address, 0, data] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + //Allow for transfer to finalize + await evm_increaseTime(adminTimeLock + 1) + + types = ['address', 'address'] + params = [user1, proxy.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'finalizeMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) + + //Setup data and sign + data = enc('register', ['uint256'], [LOG_NUMBER_1]) + types = ['address', 'address', 'address', 'uint256', 'bytes'] + params = [user1, proxy.address, testReg.address, 0, data] + p = await signPayload(user1, sender, txRelay, newMetaIdenManager.address, + 'forwardTo', types, params, lw, keyFromPw) + + res = await txRelay.checkAddress.call(p.data, user1) + assert.isTrue(res, "Address is not first parameter") + + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + regData = await testReg.registry.call(proxy.address) + assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') + }) + }) + }) + + it('Should not approve bad data', async function () { + //This function needs some serious thought + testing + let t = ['address', 'address', 'address', 'uint256', 'bytes'] //types + let p = [user1, proxy.address, testReg.address, 0, []] //params + let n = "forwardTo" //name of function + + //encoded correctly + data = enc(n, t, p) + res = await txRelay.checkAddress.call(data, user1) + assert.isTrue(res, "Address is not first parameter") + //off by a nibble + data = enc(n, t, p).slice(1) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be shifted off") + //short + data = enc(n, t, p).substring(0, 16) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be too short") + //wrong address + let badParam = [user2, proxy.address, testReg.address, 0, []] + data = enc(n, t, badParam) + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be someone else") + //first half of address + data = enc(n, t, p).substring(0, 26) + zero + res = await txRelay.checkAddress.call(data, user1) + assert.isFalse(res, "Address is first parameter, should be too short") + }) +}) diff --git a/yarn.lock b/yarn.lock index b3e8111..3d41998 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2532,11 +2532,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@=2.0.1, inherits@^2.0.1, inherits@~2.0.1: +inherits@=2.0.1, inherits@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" From 6279ae871dc862e99679fe0201cefeab5f667c58 Mon Sep 17 00:00:00 2001 From: naterush Date: Wed, 28 Jun 2017 11:57:25 -0400 Subject: [PATCH 44/53] minor tests update, add rateLimited tests --- contracts/MetaIdentityManager.sol | 3 +- test/MetaIdentityManager.js | 140 ++++++++++++++++++++++++++---- test/identityFactory.js | 2 - test/txRelay.js | 102 +++++++++++++++++++++- 4 files changed, 222 insertions(+), 25 deletions(-) diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index b3147ae..b9d23a2 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -182,9 +182,8 @@ contract MetaIdentityManager { /// @dev Allows an owner to cancel the process of transfering proxy to new IdentityManager function cancelMigration(address sender, Proxy identity) onlyAuthorized onlyOwner(identity, sender) { - address canceledManager = migrations[identity].newAddress; + MigrationCanceled(identity, migrations[identity].newAddress, sender); delete migrations[identity]; - MigrationCanceled(identity, canceledManager, sender); } /// @dev Allows an owner to finalize and completly transfer proxy to new IdentityManager diff --git a/test/MetaIdentityManager.js b/test/MetaIdentityManager.js index 7fd023c..b53ed58 100644 --- a/test/MetaIdentityManager.js +++ b/test/MetaIdentityManager.js @@ -19,14 +19,15 @@ function getRandomNumber() { return Math.floor(Math.random() * (1000000 - 1)) + 1; } -async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAccount, shouldEqual) { +//From is who is actually signing. claimedFrom is the address that they claim to be (first input to most functions) +async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAccount, claimedFrom, shouldEqual) { let errorThrown = false let testNum = getRandomNumber() // Encode the transaction to send to the proxy contract let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) // Send forward request from the owner try { - await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) + await metaIdentityManager.forwardTo(claimedFrom, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) } catch (error) { errorThrown = error.message } @@ -40,14 +41,14 @@ async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAcc } } -async function testForwardToFromRelay(testReg, metaIdentityManager, proxyAddress, fromAccount, txRelay, shouldEqual) { +async function testForwardToFromRelay(testReg, metaIdentityManager, proxyAddress, fromAccount, txRelayAddress, shouldEqual) { let errorThrown = false let testNum = getRandomNumber() // Encode the transaction to send to the proxy contract let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) // Send forward request from the owner try { - await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelay.address}) + await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelayAddress}) } catch (error) { errorThrown = error.message } @@ -94,16 +95,8 @@ contract('MetaIdentityManager', (accounts) => { metaIdentityManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) deployedProxy = await Proxy.new({from: user1}) testReg = await TestRegistry.deployed() - // return snapshots.snapshot() - // }).then(id => { - // snapshotId = id }) - // afterEach(done => { - // snapshots.revert(snapshotId) - // done() - // }) - it('Correctly creates Identity', async function() { let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) let log = tx.logs[0] @@ -128,15 +121,31 @@ contract('MetaIdentityManager', (accounts) => { }) it('allow transactions initiated by owner', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, true) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, user1, true) }) it('don\'t allow transactions initiated by non owner', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) }) it('don\'t allow transactions initiated by recoveryKey', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, recoveryKey, false) + await testForwardTo(testReg, metaIdentityManager, proxy.address, recoveryKey, recoveryKey, false) + }) + + it('onlyAuthorized modifier allows in correct users/relay', async function () { + //Allow a user claimed to be themselves + await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, user1, true) + //Do not allow a user claiming to be someone else. + let errorThrown = false + try { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user1, true) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "Should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown an error") + //Allow the transaction relay. + await testForwardToFromRelay(testReg, metaIdentityManager, proxy.address, user1, relay, true) }) it('owner can add other owner', async function() { @@ -154,6 +163,83 @@ contract('MetaIdentityManager', (accounts) => { 'Instigator key is set in event') }) + it('owner is rateLimited on some functions', async function() { + //User1 adds user5 + let tx = await metaIdentityManager.addOwner(user1, proxy.address, user5, {from: user1}) + let log = tx.logs[0] + assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') //tests for correctness elsewhere + //User1 try to add another owner, should fail. + let errorThrown = false + try { + await metaIdentityManager.addOwner(user1, proxy.address, user4, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //User1 try to remove a user. Should still be rate limited and fail. + errorThrown = false + try { + await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //user1 tries to change recovery, but is still rate limited + errorThrown = false + try { + await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //No longer rateLimited + await evm_increaseTime(adminTimeLock + 1) + //User1 tries to add another owner. Should be able to + tx = await metaIdentityManager.addOwner(user1, proxy.address, user4, {from: user1}) + log = tx.logs[0] + assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') //tests for correctness elsewhere + //User1 try to remove a user. Should be rate limited and fail. + errorThrown = false + try { + await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //user1 tries to change recovery, but is still rate limited + errorThrown = false + try { + await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //no longer rateLimited + await evm_increaseTime(adminTimeLock + 1) + tx = await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + log = tx.logs[0] + assert.equal(log.event, 'OwnerRemoved', 'should trigger correct event') + //user1 tries to change recovery, but is rate limited + errorThrown = false + try { + await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //no longer rateLimited + await evm_increaseTime(adminTimeLock + 1) + tx = await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + log = tx.logs[0] + assert.equal(log.event, 'RecoveryChanged', 'should trigger correct event') + }) + it('non-owner can not add other owner', async function() { try { await metaIdentityManager.addOwner(user3, proxy.address, user4, {from: user3}) @@ -169,14 +255,14 @@ contract('MetaIdentityManager', (accounts) => { }) it('within userTimeLock is not allowed transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) }) describe('after userTimeLock', () => { beforeEach(() => evm_increaseTime(userTimeLock)) it('Allow transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, true) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) }) it('can not add other owner yet', async function() { @@ -256,15 +342,31 @@ contract('MetaIdentityManager', (accounts) => { await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user2, {from: recoveryKey}) }) + it('recoveryKey is rate limited in added new owners', async function () { + //should be rate limited when trying again + let errorThrown = false + try { + await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) + } catch (e) { + assert.match(e.message, /invalid JUMP/, "should have thrown") + errorThrown = true + } + assert.isTrue(errorThrown, "should have thrown") + //should no longer be rateLimited + await evm_increaseTime(adminTimeLock + 1) + tx = await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) + assert.equal(tx.logs[0].event, 'OwnerAdded', 'should trigger correct event') + }) + it('within userTimeLock is not allowed transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, false) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) }) describe('after userTimeLock', () => { beforeEach(() => evm_increaseTime(userTimeLock)) it('Allow transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, true) + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) }) }) diff --git a/test/identityFactory.js b/test/identityFactory.js index 46f2460..7b1576e 100644 --- a/test/identityFactory.js +++ b/test/identityFactory.js @@ -2,9 +2,7 @@ const IdentityFactory = artifacts.require('IdentityFactory') const Proxy = artifacts.require('Proxy') const RecoverableController = artifacts.require('RecoverableController') const RecoveryQuorum = artifacts.require('RecoveryQuorum') -const Promise = require('bluebird') const compareCode = require('./compareCode') -web3.eth = Promise.promisifyAll(web3.eth) contract('IdentityFactory', (accounts) => { let identityFactory diff --git a/test/txRelay.js b/test/txRelay.js index f3cf677..26ec643 100644 --- a/test/txRelay.js +++ b/test/txRelay.js @@ -9,7 +9,6 @@ const Promise = require('bluebird') const compareCode = require('./compareCode') const solsha3 = require('solidity-sha3').default const leftPad = require('left-pad') -web3.eth = Promise.promisifyAll(web3.eth) const LOG_NUMBER_1 = 1234 const LOG_NUMBER_2 = 2345 @@ -62,7 +61,7 @@ function signPayload(signingAddr, sendingAddr, txRelay, destinationAddress, func let hash let sig let retVal = {} - data = '0x' + lightwallet.txutils._encodeFunctionTxData(functionName, functionTypes, functionParams) + data = enc(functionName, functionTypes, functionParams) txRelay.getNonce.call(signingAddr).then(currNonce => { nonce = currNonce @@ -387,6 +386,95 @@ contract('TxRelay', (accounts) => { await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) }) + it("owner is rateLimited in adding/removing owners and recoveryKey", async function () { + //First, user1 adds user2 as a new owner + types = ['address', 'address', 'address'] + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + + await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) + //Then, user1 tries to add user3 as a new owner + params = [user1, proxy.address, user3] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Tries to change the recoveryKey + params = [user1, proxy.address, recoveryKey2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Then have user1 try to remove user2 - still is rateLimited + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'removeOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Make them no longer rateLimited + await evm_increaseTime(adminRate + 1) + //Have them add user3, sucessfull this time + params = [user1, proxy.address, user3] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'addOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + await checkLogs(tx, "OwnerAdded", proxy.address, user3, user1) + + //Try to remove owner two again, should fail + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'removeOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Tries to change the recoveryKey + params = [user1, proxy.address, recoveryKey2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Unrate limit them again + await evm_increaseTime(adminRate + 1) + + params = [user1, proxy.address, user2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'removeOwner', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + await checkLogs(tx, "OwnerRemoved", proxy.address, user2, user1) + + //Tries to change the recoveryKey + params = [user1, proxy.address, recoveryKey2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") + + //Unrate limit them again + await evm_increaseTime(adminRate + 1) + //Tries to change the recoveryKey + params = [user1, proxy.address, recoveryKey2] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'changeRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user1) + }) + it("non-owner can not add other owner", async function () { types = ['address', 'address', 'address'] params = [user3, proxy.address, user4] @@ -518,6 +606,16 @@ contract('TxRelay', (accounts) => { await checkLogs(tx, "OwnerAdded", proxy.address, user4, recoveryKey) }) + it('recovery key is rateLimited', async function () { + types = ['address', 'address', 'address'] + params = [recoveryKey, proxy.address, user4] //new owner + p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, + 'addOwnerFromRecovery', types, params, lw, keyFromPw) + + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, recoveryKey, {from: sender, gas: 4500000}) + assert.isAbove(tx.receipt.gasUsed, 4000000, "Sub call should have thrown") + }) + it("within userTimeLock is not allowed transactions", async function () { await testMetaTxForwardTo(user4, sender, txRelay, metaIdentityManager.address, proxy.address, testReg, false, true, lw, keyFromPw) From 99a625db28d6417fa43f94910388b560d7671949 Mon Sep 17 00:00:00 2001 From: naterush Date: Thu, 29 Jun 2017 12:23:54 -0400 Subject: [PATCH 45/53] add optimizations for ~2000 gas per meta-tx --- contracts/TxRelay.sol | 19 +++-- test/txRelay.js | 163 ++++++++++++++++++++---------------------- 2 files changed, 88 insertions(+), 94 deletions(-) diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index 281ce8c..ac32ac8 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -18,9 +18,9 @@ contract TxRelay { * @param claimedSender Address of the user who is having tx forwarded */ function relayMetaTx(uint8 sigV, bytes32 sigR, bytes32 sigS, - address destination, bytes data, - address claimedSender) { + address destination, bytes data) { + address claimedSender = getAddress(data); // relay :: nonce :: destination :: data :: relayer bytes32 h = sha3(this, nonce[claimedSender], destination, data, msg.sender); address addressFromSig = ecrecover(h, sigV, sigR, sigS); @@ -28,7 +28,6 @@ contract TxRelay { nonce[claimedSender]++; if (claimedSender != addressFromSig) throw; - if (!checkAddress(data, addressFromSig)) throw; if (!destination.call(data)) { //In the future, add event here. Has semi-complex gas considerations. See EIP 150 @@ -36,16 +35,16 @@ contract TxRelay { } /* - * @dev Compares the first arg of a function call to an address - * @param b The byte array that may have an address on the end - * @param address Address to check on the end of the array - (Special thanks to tjade273 for optimization) + * @dev Gets an address encoded as the first argument in transaction data + * @param b The byte array that should have an address as first argument + * @returns a The address retrieved from the array + (Optimization based on work by tjade273) */ - function checkAddress(bytes b, address a) constant returns (bool t) { - if (b.length < 36) return false; + function getAddress(bytes b) constant returns (address a) { + if (b.length < 36) return address(0); assembly { let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - t := eq(and(mask, a), and(mask, mload(add(b,36)))) + a := and(mask, mload(add(b,36))) } } diff --git a/test/txRelay.js b/test/txRelay.js index 26ec643..cdc9a9c 100644 --- a/test/txRelay.js +++ b/test/txRelay.js @@ -100,7 +100,7 @@ async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, metaIdenti let firstNonce = p.nonce // Send forward request from the owner try { - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, signingAddr, {from: sendingAddr}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sendingAddr}) } catch (error) { errorThrown = true assert.match(errorThrown, /invalid JUMP/, "An error should have been thrown") @@ -221,8 +221,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', types, params, lw, keyFromPw) - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, - user1, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) regData = await mTestReg.registry.call(user1) assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update') @@ -235,7 +234,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, mTestReg.address, 'testThrow', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) //Best way I have found to test for throw in a sub-call. Suggestions welcome :) assert.isAbove(tx.receipt.gasUsed, 4000000, "Did not throw, as it should have consumed gas") @@ -253,13 +252,12 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user2) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user2, "Address is not first parameter") try { //claim to be a different person again - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, - user2, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) } catch (e) { assert.match(e.message, /invalid JUMP/, "Should have thrown") errorThrown = true; @@ -281,8 +279,7 @@ contract('TxRelay', (accounts) => { try { //Wrong sender tries to send transaction - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, - user1, {from: notSender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: notSender}) } catch (e) { assert.match(e.message, /invalid JUMP/, "Should have thrown") errorThrown = true; @@ -299,12 +296,12 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user1, "Address is not first parameter") try { //Send the transaction with 1 Wei - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, value: 1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "Should have thrown") @@ -322,19 +319,17 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, mTestReg.address, 'register', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user1, "Address is not first parameter") - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, - user1, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) regData = await mTestReg.registry.call(user1) assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update') try { //Relayer tries to relay the same transaction twice - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, - user1, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -355,7 +350,7 @@ contract('TxRelay', (accounts) => { types, params, lw, keyFromPw) assert.equal(p.nonce, i.toString(), "Nonce should have updated") - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) regData = await mTestReg.registry.call(user1) assert.equal(regData.toNumber(), randNum, 'Registry did not update properly') @@ -381,7 +376,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) }) @@ -393,7 +388,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) //Then, user1 tries to add user3 as a new owner @@ -401,7 +396,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Tries to change the recoveryKey @@ -409,7 +404,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Then have user1 try to remove user2 - still is rateLimited @@ -417,7 +412,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'removeOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Make them no longer rateLimited @@ -427,7 +422,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) await checkLogs(tx, "OwnerAdded", proxy.address, user3, user1) //Try to remove owner two again, should fail @@ -435,7 +430,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'removeOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Tries to change the recoveryKey @@ -443,7 +438,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Unrate limit them again @@ -453,7 +448,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'removeOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerRemoved", proxy.address, user2, user1) //Tries to change the recoveryKey @@ -461,7 +456,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Should have thrown in a sub call") //Unrate limit them again @@ -471,7 +466,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user1) }) @@ -481,10 +476,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user3) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user3, "Address is not first parameter") - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was added") }) @@ -495,7 +490,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) }) @@ -521,10 +516,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user2) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user2, "Address is not first parameter") - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was added") }) @@ -534,10 +529,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user2) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user2, "Address is not first parameter") - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus owner was removed") }) @@ -547,10 +542,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user2) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user2, "Address is not first parameter") - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Generated logs, thus recovery was changed") }) }) @@ -566,7 +561,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user3, user2) }) @@ -577,7 +572,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'removeOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerRemoved", proxy.address, user3, user2) }) @@ -588,7 +583,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user2) }) @@ -601,7 +596,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, 'addOwnerFromRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, recoveryKey, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user4, recoveryKey) }) @@ -612,7 +607,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, 'addOwnerFromRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, recoveryKey, {from: sender, gas: 4500000}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) assert.isAbove(tx.receipt.gasUsed, 4000000, "Sub call should have thrown") }) @@ -640,7 +635,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user3, user4) }) @@ -651,7 +646,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, 'removeOwner', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerRemoved", proxy.address, user3, user4) }) @@ -662,7 +657,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, 'changeRecovery', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user4, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "RecoveryChanged", proxy.address, recoveryKey2, user4) }) @@ -679,10 +674,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'addOwner', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user1, "Address is not first parameter") - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) }) @@ -692,7 +687,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address, newMetaIdenManager.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) }) @@ -703,7 +698,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") }) @@ -713,7 +708,7 @@ contract('TxRelay', (accounts) => { p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") }) @@ -723,7 +718,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address, newMetaIdenManager.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) @@ -732,14 +727,14 @@ contract('TxRelay', (accounts) => { params = [user3, proxy.address] p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, 'cancelMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") //Young owner tries to cancel params = [user2, proxy.address] p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'cancelMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") await evm_increaseTime(adminTimeLock + 1) @@ -748,7 +743,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'cancelMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user1) }) @@ -759,7 +754,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address, newMetaIdenManager.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) @@ -768,14 +763,14 @@ contract('TxRelay', (accounts) => { params = [user3, proxy.address] p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user3, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") //Young owner tries to finalize params = [user2, proxy.address] p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user2, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") await evm_increaseTime(adminTimeLock + 1) @@ -784,7 +779,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) }) @@ -795,7 +790,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address, newMetaIdenManager.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) @@ -806,9 +801,9 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'forwardTo', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user1, "Address is not first parameter") + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) //Allow for transfer to finalize await evm_increaseTime(adminTimeLock + 1) @@ -817,7 +812,7 @@ contract('TxRelay', (accounts) => { params = [user1, proxy.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) - tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) @@ -828,10 +823,10 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, newMetaIdenManager.address, 'forwardTo', types, params, lw, keyFromPw) - res = await txRelay.checkAddress.call(p.data, user1) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(p.data) + assert.equal(res, user1, "Address is not first parameter") - await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, user1, {from: sender}) + await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) regData = await testReg.registry.call(proxy.address) assert.equal(regData.toNumber(), LOG_NUMBER_1, 'Registry did not update properly') }) @@ -846,24 +841,24 @@ contract('TxRelay', (accounts) => { //encoded correctly data = enc(n, t, p) - res = await txRelay.checkAddress.call(data, user1) - assert.isTrue(res, "Address is not first parameter") + res = await txRelay.getAddress.call(data) + assert.equal(res, user1, "Address is not first parameter") //off by a nibble data = enc(n, t, p).slice(1) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be shifted off") + res = await txRelay.getAddress.call(data) + assert.notEqual(res, user1, "Address is first parameter, should be shifted off") //short data = enc(n, t, p).substring(0, 16) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be too short") + res = await txRelay.getAddress.call(data) + assert.notEqual(res, user1, "Address is first parameter, should be too short") //wrong address let badParam = [user2, proxy.address, testReg.address, 0, []] data = enc(n, t, badParam) - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be someone else") + res = await txRelay.getAddress.call(data) + assert.notEqual(res, user1, "Address is first parameter, should be someone else") //first half of address data = enc(n, t, p).substring(0, 26) + zero - res = await txRelay.checkAddress.call(data, user1) - assert.isFalse(res, "Address is first parameter, should be too short") + res = await txRelay.getAddress.call(data) + assert.notEqual(res, user1, "Address is first parameter, should be too short") }) }) From 197c885a7b4d55b56b9f1b08b55d25301ff187c0 Mon Sep 17 00:00:00 2001 From: naterush Date: Fri, 30 Jun 2017 20:30:13 -0400 Subject: [PATCH 46/53] simplify assembly, edit comment, update tests --- contracts/MetaIdentityManager.sol | 6 +++--- contracts/TxRelay.sol | 4 +++- package.json | 4 +--- test/MetaIdentityManager.js | 4 ++-- test/txRelay.js | 16 +++++++++++----- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/contracts/MetaIdentityManager.sol b/contracts/MetaIdentityManager.sol index b9d23a2..0d19031 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/MetaIdentityManager.sol @@ -134,7 +134,7 @@ contract MetaIdentityManager { onlyOlderOwner(identity, sender) rateLimited(identity, sender) { - owners[identity][newOwner] = now; + owners[identity][newOwner] = now - userTimeLock; OwnerAdded(identity, newOwner, sender); } @@ -170,7 +170,7 @@ contract MetaIdentityManager { RecoveryChanged(identity, recoveryKey, sender); } - /// @dev Allows an owner to being process of transfering proxy to new IdentityManager + /// @dev Allows an owner to begin process of transfering proxy to new IdentityManager function initiateMigration(address sender, Proxy identity, address newIdManager) onlyAuthorized onlyOlderOwner(identity, sender) @@ -204,7 +204,7 @@ contract MetaIdentityManager { if (msg.data.length < 36) return false; assembly { let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - t := eq(and(mask, a), and(mask, calldataload(4))) + t := eq(a, and(mask, calldataload(4))) } } } diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index ac32ac8..383f5c9 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -44,7 +44,9 @@ contract TxRelay { if (b.length < 36) return address(0); assembly { let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - a := and(mask, mload(add(b,36))) + a := and(mask, mload(add(b, 36))) + //36 is the offset of the first param of the data, if encoded properly. + //4 bytes for the function signature, and 32 for the addess. } } diff --git a/package.json b/package.json index 855cb9a..d0d159a 100644 --- a/package.json +++ b/package.json @@ -39,9 +39,7 @@ "node-plantuml": "^0.5.0", "truffle": "3.1.2", "truffle-contract": "^1.1.10", - "truffle-hdwallet-provider": "0.0.3" - }, - "dependencies": { + "truffle-hdwallet-provider": "0.0.3", "eth-lightwallet": "^2.5.6", "left-pad": "^1.1.3" } diff --git a/test/MetaIdentityManager.js b/test/MetaIdentityManager.js index b53ed58..f14d578 100644 --- a/test/MetaIdentityManager.js +++ b/test/MetaIdentityManager.js @@ -254,8 +254,8 @@ contract('MetaIdentityManager', (accounts) => { errorThrown = false }) - it('within userTimeLock is not allowed transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) + it('within userTimeLock is allowed transactions', async function() { + await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) }) describe('after userTimeLock', () => { diff --git a/test/txRelay.js b/test/txRelay.js index cdc9a9c..01a9594 100644 --- a/test/txRelay.js +++ b/test/txRelay.js @@ -495,9 +495,9 @@ contract('TxRelay', (accounts) => { await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) }) - it("within userTimeLock is not allowed transactions", async function () { + it("within userTimeLock is allowed transactions", async function () { await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, - testReg, false, true, lw, keyFromPw) + testReg, false, false, lw, keyFromPw) }) describe("after userTimeLock", () => { @@ -719,7 +719,6 @@ contract('TxRelay', (accounts) => { p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) //Non-owner tries to cancel @@ -735,16 +734,23 @@ contract('TxRelay', (accounts) => { p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, 'cancelMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") + await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user2) await evm_increaseTime(adminTimeLock + 1) + //Start migration again + types = ['address', 'address', 'address'] + params = [user1, proxy.address, newMetaIdenManager.address] + p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + 'initiateMigration', types, params, lw, keyFromPw) + tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) + await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) //Older owner tries to cancel. + types = ['address', 'address'] params = [user1, proxy.address] p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, 'cancelMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user1) }) From dff6e6f6a65dcd9a50af68242f2f98772b130f48 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Thu, 6 Jul 2017 14:40:31 +0200 Subject: [PATCH 47/53] Fixed syntax error --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 1c11ce8..a8d16d6 100644 --- a/index.js +++ b/index.js @@ -6,5 +6,5 @@ module.exports = { Proxy: require('./build/contracts/Proxy.json'), RecoveryQuorum: require('./build/contracts/RecoveryQuorum.json'), TxRelay: require('./build/contracts/TxRelay.json'), - MetaIdentityManager require('./build/contracts/MetaIdentityManager.json'), + MetaIdentityManager: require('./build/contracts/MetaIdentityManager.json'), } From 573d34cfa015459bdc41b8eab44a065dc7682ca7 Mon Sep 17 00:00:00 2001 From: naterush Date: Fri, 7 Jul 2017 12:48:53 -0400 Subject: [PATCH 48/53] change MetaIdentity -> Identity. Create -> create --- ...dentityManager.sol => IdentityManager.sol} | 6 +- index.js | 2 +- ...aIdentityManager.js => identityManager.js} | 130 +++++++-------- test/txRelay.js | 154 +++++++++--------- 4 files changed, 146 insertions(+), 146 deletions(-) rename contracts/{MetaIdentityManager.sol => IdentityManager.sol} (97%) rename test/{MetaIdentityManager.js => identityManager.js} (73%) diff --git a/contracts/MetaIdentityManager.sol b/contracts/IdentityManager.sol similarity index 97% rename from contracts/MetaIdentityManager.sol rename to contracts/IdentityManager.sol index 0d19031..b429cc9 100644 --- a/contracts/MetaIdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -1,7 +1,7 @@ pragma solidity 0.4.8; import "./Proxy.sol"; -contract MetaIdentityManager { +contract IdentityManager { event IdentityCreated( address indexed identity, @@ -91,7 +91,7 @@ contract MetaIdentityManager { /// @param _adminTimeLock Time before new owner can add/remove owners /// @param _adminRate Time period used for rate limiting a given key for admin functionality /// @param _relayAddress Address of meta transaction relay contract - function MetaIdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate, address _relayAddress) { + function IdentityManager(uint _userTimeLock, uint _adminTimeLock, uint _adminRate, address _relayAddress) { adminTimeLock = _adminTimeLock; userTimeLock = _userTimeLock; adminRate = _adminRate; @@ -102,7 +102,7 @@ contract MetaIdentityManager { /// @param owner Key who can use this contract to control proxy. Given full power /// @param recoveryKey Key of recovery network or address from seed to recovery proxy /// Gas cost of ~300,000 - function CreateIdentity(address owner, address recoveryKey) validRecovery(recoveryKey) { + function createIdentity(address owner, address recoveryKey) validRecovery(recoveryKey) { Proxy identity = new Proxy(); owners[identity][owner] = now - adminTimeLock; // This is to ensure original owner has full power from day one recoveryKeys[identity] = recoveryKey; diff --git a/index.js b/index.js index a8d16d6..dceb4f7 100644 --- a/index.js +++ b/index.js @@ -6,5 +6,5 @@ module.exports = { Proxy: require('./build/contracts/Proxy.json'), RecoveryQuorum: require('./build/contracts/RecoveryQuorum.json'), TxRelay: require('./build/contracts/TxRelay.json'), - MetaIdentityManager: require('./build/contracts/MetaIdentityManager.json'), + IdentityManager: require('./build/contracts/IdentityManager.json'), } diff --git a/test/MetaIdentityManager.js b/test/identityManager.js similarity index 73% rename from test/MetaIdentityManager.js rename to test/identityManager.js index f14d578..20626e7 100644 --- a/test/MetaIdentityManager.js +++ b/test/identityManager.js @@ -1,7 +1,7 @@ const lightwallet = require('eth-signer') const evm_increaseTime = require('./evmIncreaseTime.js') const snapshots = require('./evmSnapshots.js') -const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') const Promise = require('bluebird') @@ -20,14 +20,14 @@ function getRandomNumber() { } //From is who is actually signing. claimedFrom is the address that they claim to be (first input to most functions) -async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAccount, claimedFrom, shouldEqual) { +async function testForwardTo(testReg, identityManager, proxyAddress, fromAccount, claimedFrom, shouldEqual) { let errorThrown = false let testNum = getRandomNumber() // Encode the transaction to send to the proxy contract let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) // Send forward request from the owner try { - await metaIdentityManager.forwardTo(claimedFrom, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) + await identityManager.forwardTo(claimedFrom, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) } catch (error) { errorThrown = error.message } @@ -41,14 +41,14 @@ async function testForwardTo(testReg, metaIdentityManager, proxyAddress, fromAcc } } -async function testForwardToFromRelay(testReg, metaIdentityManager, proxyAddress, fromAccount, txRelayAddress, shouldEqual) { +async function testForwardToFromRelay(testReg, identityManager, proxyAddress, fromAccount, txRelayAddress, shouldEqual) { let errorThrown = false let testNum = getRandomNumber() // Encode the transaction to send to the proxy contract let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [testNum]) // Send forward request from the owner try { - await metaIdentityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelayAddress}) + await identityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelayAddress}) } catch (error) { errorThrown = error.message } @@ -63,7 +63,7 @@ async function testForwardToFromRelay(testReg, metaIdentityManager, proxyAddress } -contract('MetaIdentityManager', (accounts) => { +contract('IdentityManager', (accounts) => { let proxy let deployedProxy let testReg @@ -92,13 +92,13 @@ contract('MetaIdentityManager', (accounts) => { relay = accounts[6] recoveryKey = accounts[8] recoveryKey2 = accounts[9] - metaIdentityManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) + identityManager = await IdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) deployedProxy = await Proxy.new({from: user1}) testReg = await TestRegistry.deployed() }) it('Correctly creates Identity', async function() { - let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let tx = await identityManager.createIdentity(user1, recoveryKey, {from: nobody}) let log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') @@ -108,48 +108,48 @@ contract('MetaIdentityManager', (accounts) => { await compareCode(log.args.identity, deployedProxy.address) let proxyOwner = await Proxy.at(log.args.identity).owner.call() - assert.equal(proxyOwner, metaIdentityManager.address, 'Proxy owner should be the identity manager') + assert.equal(proxyOwner, identityManager.address, 'Proxy owner should be the identity manager') }) describe('existing identity', () => { beforeEach(async function() { - let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let tx = await identityManager.createIdentity(user1, recoveryKey, {from: nobody}) let log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') proxy = Proxy.at(log.args.identity) }) it('allow transactions initiated by owner', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, user1, true) + await testForwardTo(testReg, identityManager, proxy.address, user1, user1, true) }) it('don\'t allow transactions initiated by non owner', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) + await testForwardTo(testReg, identityManager, proxy.address, user2, user2, false) }) it('don\'t allow transactions initiated by recoveryKey', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, recoveryKey, recoveryKey, false) + await testForwardTo(testReg, identityManager, proxy.address, recoveryKey, recoveryKey, false) }) it('onlyAuthorized modifier allows in correct users/relay', async function () { //Allow a user claimed to be themselves - await testForwardTo(testReg, metaIdentityManager, proxy.address, user1, user1, true) + await testForwardTo(testReg, identityManager, proxy.address, user1, user1, true) //Do not allow a user claiming to be someone else. let errorThrown = false try { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user1, true) + await testForwardTo(testReg, identityManager, proxy.address, user2, user1, true) } catch (e) { assert.match(e.message, /invalid JUMP/, "Should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown an error") //Allow the transaction relay. - await testForwardToFromRelay(testReg, metaIdentityManager, proxy.address, user1, relay, true) + await testForwardToFromRelay(testReg, identityManager, proxy.address, user1, relay, true) }) it('owner can add other owner', async function() { - let tx = await metaIdentityManager.addOwner(user1, proxy.address, user5, {from: user1}) + let tx = await identityManager.addOwner(user1, proxy.address, user5, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') assert.equal(log.args.identity, @@ -165,13 +165,13 @@ contract('MetaIdentityManager', (accounts) => { it('owner is rateLimited on some functions', async function() { //User1 adds user5 - let tx = await metaIdentityManager.addOwner(user1, proxy.address, user5, {from: user1}) + let tx = await identityManager.addOwner(user1, proxy.address, user5, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') //tests for correctness elsewhere //User1 try to add another owner, should fail. let errorThrown = false try { - await metaIdentityManager.addOwner(user1, proxy.address, user4, {from: user1}) + await identityManager.addOwner(user1, proxy.address, user4, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -180,7 +180,7 @@ contract('MetaIdentityManager', (accounts) => { //User1 try to remove a user. Should still be rate limited and fail. errorThrown = false try { - await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + await identityManager.removeOwner(user1, proxy.address, user5, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -189,7 +189,7 @@ contract('MetaIdentityManager', (accounts) => { //user1 tries to change recovery, but is still rate limited errorThrown = false try { - await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -198,13 +198,13 @@ contract('MetaIdentityManager', (accounts) => { //No longer rateLimited await evm_increaseTime(adminTimeLock + 1) //User1 tries to add another owner. Should be able to - tx = await metaIdentityManager.addOwner(user1, proxy.address, user4, {from: user1}) + tx = await identityManager.addOwner(user1, proxy.address, user4, {from: user1}) log = tx.logs[0] assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') //tests for correctness elsewhere //User1 try to remove a user. Should be rate limited and fail. errorThrown = false try { - await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + await identityManager.removeOwner(user1, proxy.address, user5, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -213,7 +213,7 @@ contract('MetaIdentityManager', (accounts) => { //user1 tries to change recovery, but is still rate limited errorThrown = false try { - await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -221,13 +221,13 @@ contract('MetaIdentityManager', (accounts) => { assert.isTrue(errorThrown, "should have thrown") //no longer rateLimited await evm_increaseTime(adminTimeLock + 1) - tx = await metaIdentityManager.removeOwner(user1, proxy.address, user5, {from: user1}) + tx = await identityManager.removeOwner(user1, proxy.address, user5, {from: user1}) log = tx.logs[0] assert.equal(log.event, 'OwnerRemoved', 'should trigger correct event') //user1 tries to change recovery, but is rate limited errorThrown = false try { - await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -235,14 +235,14 @@ contract('MetaIdentityManager', (accounts) => { assert.isTrue(errorThrown, "should have thrown") //no longer rateLimited await evm_increaseTime(adminTimeLock + 1) - tx = await metaIdentityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) + tx = await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) log = tx.logs[0] assert.equal(log.event, 'RecoveryChanged', 'should trigger correct event') }) it('non-owner can not add other owner', async function() { try { - await metaIdentityManager.addOwner(user3, proxy.address, user4, {from: user3}) + await identityManager.addOwner(user3, proxy.address, user4, {from: user3}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') } @@ -250,25 +250,25 @@ contract('MetaIdentityManager', (accounts) => { describe('new owner added by owner', () => { beforeEach(async function() { - await metaIdentityManager.addOwner(user1, proxy.address, user2, {from: user1}) + await identityManager.addOwner(user1, proxy.address, user2, {from: user1}) errorThrown = false }) it('within userTimeLock is allowed transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) + await testForwardTo(testReg, identityManager, proxy.address, user2, user2, true) }) describe('after userTimeLock', () => { beforeEach(() => evm_increaseTime(userTimeLock)) it('Allow transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) + await testForwardTo(testReg, identityManager, proxy.address, user2, user2, true) }) it('can not add other owner yet', async function() { let errorThrown = false try { - await metaIdentityManager.addOwner(user2, proxy.address, user4, {from: user2}) + await identityManager.addOwner(user2, proxy.address, user4, {from: user2}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') errorThrown = true @@ -279,7 +279,7 @@ contract('MetaIdentityManager', (accounts) => { it('can not remove other owner yet', async function() { let errorThrown = false try { - await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + await identityManager.removeOwner(user2, proxy.address, user1, {from: user2}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') errorThrown = true @@ -290,7 +290,7 @@ contract('MetaIdentityManager', (accounts) => { it('can not change recoveryKey yet', async function() { let errorThrown = false try { - await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + await identityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') errorThrown = true @@ -303,7 +303,7 @@ contract('MetaIdentityManager', (accounts) => { beforeEach(() => evm_increaseTime(adminTimeLock)) it('can add new owner', async function() { - let tx = await metaIdentityManager.addOwner(user2, proxy.address, user3, {from: user2}) + let tx = await identityManager.addOwner(user2, proxy.address, user3, {from: user2}) const log = tx.logs[0] assert.equal(log.args.owner, user3, @@ -314,7 +314,7 @@ contract('MetaIdentityManager', (accounts) => { }) it('can remove other owner', async function() { - let tx = await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + let tx = await identityManager.removeOwner(user2, proxy.address, user1, {from: user2}) const log = tx.logs[0] assert.equal(log.args.owner, user1, @@ -325,7 +325,7 @@ contract('MetaIdentityManager', (accounts) => { }) it('can change recoveryKey', async function() { - let tx = await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + let tx = await identityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) const log = tx.logs[0] assert.equal(log.args.recoveryKey, recoveryKey2, @@ -339,14 +339,14 @@ contract('MetaIdentityManager', (accounts) => { describe('new owner added by recoveryKey', () => { beforeEach(async function() { - await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user2, {from: recoveryKey}) + await identityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user2, {from: recoveryKey}) }) it('recoveryKey is rate limited in added new owners', async function () { //should be rate limited when trying again let errorThrown = false try { - await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) + await identityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) } catch (e) { assert.match(e.message, /invalid JUMP/, "should have thrown") errorThrown = true @@ -354,19 +354,19 @@ contract('MetaIdentityManager', (accounts) => { assert.isTrue(errorThrown, "should have thrown") //should no longer be rateLimited await evm_increaseTime(adminTimeLock + 1) - tx = await metaIdentityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) + tx = await identityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) assert.equal(tx.logs[0].event, 'OwnerAdded', 'should trigger correct event') }) it('within userTimeLock is not allowed transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, false) + await testForwardTo(testReg, identityManager, proxy.address, user2, user2, false) }) describe('after userTimeLock', () => { beforeEach(() => evm_increaseTime(userTimeLock)) it('Allow transactions', async function() { - await testForwardTo(testReg, metaIdentityManager, proxy.address, user2, user2, true) + await testForwardTo(testReg, identityManager, proxy.address, user2, user2, true) }) }) @@ -374,7 +374,7 @@ contract('MetaIdentityManager', (accounts) => { beforeEach(() => evm_increaseTime(adminTimeLock)) it('can add new owner', async function() { - let tx = await metaIdentityManager.addOwner(user2, proxy.address, user3, {from: user2}) + let tx = await identityManager.addOwner(user2, proxy.address, user3, {from: user2}) const log = tx.logs[0] assert.equal(log.args.owner, user3, @@ -385,7 +385,7 @@ contract('MetaIdentityManager', (accounts) => { }) it('can remove other owner', async function() { - let tx = await metaIdentityManager.removeOwner(user2, proxy.address, user1, {from: user2}) + let tx = await identityManager.removeOwner(user2, proxy.address, user1, {from: user2}) const log = tx.logs[0] assert.equal(log.args.owner, user1, @@ -396,7 +396,7 @@ contract('MetaIdentityManager', (accounts) => { }) it('can change recoveryKey', async function() { - let tx = await metaIdentityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) + let tx = await identityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) const log = tx.logs[0] assert.equal(log.args.recoveryKey, recoveryKey2, @@ -412,13 +412,13 @@ contract('MetaIdentityManager', (accounts) => { describe('migration', () => { let newIdenManager beforeEach(async function() { - let tx = await metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: nobody}) + let tx = await identityManager.createIdentity(user1, recoveryKey, {from: nobody}) let log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') proxy = Proxy.at(log.args.identity) - newIdenManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) + newIdenManager = await IdentityManager.new(userTimeLock, adminTimeLock, adminRate, relay) //user2 is now a younger owner, while user1 is an olderowner - tx = await metaIdentityManager.addOwner(user1, proxy.address, user2, {from: user1}) + tx = await identityManager.addOwner(user1, proxy.address, user2, {from: user1}) log = tx.logs[0] assert.equal(log.event, 'OwnerAdded', 'wrong event') assert.equal(log.args.identity, proxy.address, 'wrong proxy') @@ -427,7 +427,7 @@ contract('MetaIdentityManager', (accounts) => { }) it('older owner can start transfer', async function() { - let tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let tx = await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') @@ -438,7 +438,7 @@ contract('MetaIdentityManager', (accounts) => { it('young owner should not be able to start transfer', async function() { let threwError = false try { - await metaIdentityManager.initiateMigration(user2, proxy.address, newIdenManager.address, {from: user2}) + await identityManager.initiateMigration(user2, proxy.address, newIdenManager.address, {from: user2}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') threwError = true @@ -449,7 +449,7 @@ contract('MetaIdentityManager', (accounts) => { it('non-owner should not be able to start transfer' , async function() { let threwError = false try { - await metaIdentityManager.initiateMigration(nobody, proxy.address, newIdenManager.address, {from: nobody}) + await identityManager.initiateMigration(nobody, proxy.address, newIdenManager.address, {from: nobody}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') threwError = true @@ -458,14 +458,14 @@ contract('MetaIdentityManager', (accounts) => { }) it('correct keys can cancel migration', async function() { - let tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let tx = await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') assert.equal(log.args.identity, proxy.address, 'migrating wrong proxy') assert.equal(log.args.newIdManager, newIdenManager.address, 'migrating to wrong location') assert.equal(log.args.instigator, user1, 'started migrating from wrong user') - tx = await metaIdentityManager.cancelMigration(user1, proxy.address, {from: user1}) + tx = await identityManager.cancelMigration(user1, proxy.address, {from: user1}) log = tx.logs[0] assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') assert.equal(log.args.identity, proxy.address, 'canceled migrating wrong proxy') @@ -473,7 +473,7 @@ contract('MetaIdentityManager', (accounts) => { assert.equal(log.args.instigator, user1, 'canceled migrating from wrong user') //set up migration again - tx = await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + tx = await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) //Second migration attempt, should allow log = tx.logs[0] assert.equal(log.event, 'MigrationInitiated', 'wrong event initiated') @@ -482,7 +482,7 @@ contract('MetaIdentityManager', (accounts) => { assert.equal(log.args.instigator, user1, 'started migrating from wrong person') await evm_increaseTime(userTimeLock) - tx = await metaIdentityManager.cancelMigration(user2, proxy.address, {from: user2}) + tx = await identityManager.cancelMigration(user2, proxy.address, {from: user2}) //young owner should also be able to cancel migration log = tx.logs[0] assert.equal(log.event, 'MigrationCanceled', 'wrong event initiated') @@ -490,11 +490,11 @@ contract('MetaIdentityManager', (accounts) => { assert.equal(log.args.newIdManager, newIdenManager.address, 'canceled migration to wrong location') assert.equal(log.args.instigator, user2, 'canceled migrating from wrong person') - await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) //Don't need to check setup again let threwError = false try { - await metaIdentityManager.cancelMigration(nobody, proxy.address, {from: nobody}) + await identityManager.cancelMigration(nobody, proxy.address, {from: nobody}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') threwError = true @@ -503,10 +503,10 @@ contract('MetaIdentityManager', (accounts) => { }) it('correct keys should finilize transfer', async function() { - await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) let threwError = false try { - await metaIdentityManager.finalizeMigration(nobody, proxy.address, {from: nobody}) + await identityManager.finalizeMigration(nobody, proxy.address, {from: nobody}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') threwError = true @@ -514,7 +514,7 @@ contract('MetaIdentityManager', (accounts) => { assert.isTrue(threwError, 'non-owner should not be able to finalize') threwError = false try { - await metaIdentityManager.finalizeMigration(user2, proxy.address, {from: user2}) + await identityManager.finalizeMigration(user2, proxy.address, {from: user2}) } catch(error) { assert.match(error, /invalid JUMP/, 'throws an error') threwError = true @@ -522,7 +522,7 @@ contract('MetaIdentityManager', (accounts) => { assert.isTrue(threwError, 'young owner should not be able to finalize') await evm_increaseTime(2 * adminTimeLock) - let tx = await metaIdentityManager.finalizeMigration(user1, proxy.address, {from: user1}) + let tx = await identityManager.finalizeMigration(user1, proxy.address, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') @@ -530,13 +530,13 @@ contract('MetaIdentityManager', (accounts) => { assert.equal(log.args.instigator, user1, 'finalized migrating from wrong person') }) - it('should be owner of new metaIdentityManager after successful transfer', async function() { - await metaIdentityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + it('should be owner of new identityManager after successful transfer', async function() { + await identityManager.initiateMigration(user1, proxy.address, newIdenManager.address, {from: user1}) let data = '0x' + lightwallet.txutils._encodeFunctionTxData('registerIdentity', ['address', 'address'], [user1, recoveryKey]) - await metaIdentityManager.forwardTo(user1, proxy.address, newIdenManager.address, 0, data, {from: user1}) + await identityManager.forwardTo(user1, proxy.address, newIdenManager.address, 0, data, {from: user1}) //increase time until migration can be finialized await evm_increaseTime(2 * adminTimeLock) - let tx = await metaIdentityManager.finalizeMigration(user1, proxy.address, newIdenManager.address, {from: user1}) + let tx = await identityManager.finalizeMigration(user1, proxy.address, newIdenManager.address, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'MigrationFinalized', 'wrong event initiated') assert.equal(log.args.identity, proxy.address, 'finalized migrating wrong proxy') diff --git a/test/txRelay.js b/test/txRelay.js index 01a9594..5fac167 100644 --- a/test/txRelay.js +++ b/test/txRelay.js @@ -1,7 +1,7 @@ const lightwallet = require('eth-lightwallet') const evm_increaseTime = require('./evmIncreaseTime.js') const MetaTxRelay = artifacts.require('TxRelay') -const MetaIdentityManager = artifacts.require('MetaIdentityManager') +const IdentityManager = artifacts.require('IdentityManager') const Proxy = artifacts.require('Proxy') const TestRegistry = artifacts.require('TestRegistry') const MetaTestRegistry = artifacts.require('MetaTestRegistry') @@ -85,7 +85,7 @@ function signPayload(signingAddr, sendingAddr, txRelay, destinationAddress, func //shouldThrow is if the relayer should throw //shouldUpdate is if the subcall should throw -async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, proxyAddress, +async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, identityManagerAddress, proxyAddress, testReg, relayShouldFail, subCallShouldFail, lw, keyFromPw) { //Relayer must be a truffle account, while fromAccount must be lightwallet account let errorThrown = false @@ -95,7 +95,7 @@ async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, metaIdenti let types = ['address', 'address', 'address', 'uint256', 'bytes'] let params = [signingAddr, proxyAddress, testReg.address, 0, data] // Setup payload for meta-tx - let p = await signPayload(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, + let p = await signPayload(signingAddr, sendingAddr, txRelay, identityManagerAddress, 'forwardTo', types, params, lw, keyFromPw) let firstNonce = p.nonce // Send forward request from the owner @@ -114,7 +114,7 @@ async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, metaIdenti } else { assert.equal(regData.toNumber(), testNum) } - p = await signPayload(signingAddr, sendingAddr, txRelay, metaIdentityManagerAddress, + p = await signPayload(signingAddr, sendingAddr, txRelay, identityManagerAddress, 'forwardTo', types, params, lw, keyFromPw) assert.equal(p.nonce.toNumber(), firstNonce.toNumber() + 1, "Nonce should have updated") } @@ -134,7 +134,7 @@ contract('TxRelay', (accounts) => { let deployedProxy let testReg let mTestReg //metaTestRegistry - let metaIdentityManager + let identityManager let txRelay let user1 let user2 @@ -191,16 +191,16 @@ contract('TxRelay', (accounts) => { MetaTxRelay.new().then(instance => { txRelay = instance - return MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + return IdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) }).then(instance => { - metaIdentityManager = instance + identityManager = instance return Proxy.new({from: sender}) }).then(instance => { deployedProxy = instance return TestRegistry.new() }).then((instance) => { testReg = instance - return metaIdentityManager.CreateIdentity(user1, recoveryKey, {from: sender}) + return identityManager.createIdentity(user1, recoveryKey, {from: sender}) }).then(tx => { const log = tx.logs[0] assert.equal(log.event, 'IdentityCreated', 'wrong event') @@ -358,22 +358,22 @@ contract('TxRelay', (accounts) => { }) }) - describe("Meta-tx with MetaIdentityManager", () => { + describe("Meta-tx with IdentityManager", () => { describe("existing identity", () => { it("allow transactions initiated by owner", async function () { - await testMetaTxForwardTo(user1, sender, txRelay, metaIdentityManager.address, + await testMetaTxForwardTo(user1, sender, txRelay, identityManager.address, proxy.address, testReg, false, false, lw, keyFromPw) }) it("don't allow transactions initiated by non owner", async function () { - await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + await testMetaTxForwardTo(user2, sender, txRelay, identityManager.address, proxy.address, testReg, false, true, lw, keyFromPw) }) it("owner can add other owner", async function () { types = ['address', 'address', 'address'] params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -385,7 +385,7 @@ contract('TxRelay', (accounts) => { //First, user1 adds user2 as a new owner types = ['address', 'address', 'address'] params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -393,7 +393,7 @@ contract('TxRelay', (accounts) => { await checkLogs(tx, "OwnerAdded", proxy.address, user2, user1) //Then, user1 tries to add user3 as a new owner params = [user1, proxy.address, user3] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -401,7 +401,7 @@ contract('TxRelay', (accounts) => { //Tries to change the recoveryKey params = [user1, proxy.address, recoveryKey2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -409,7 +409,7 @@ contract('TxRelay', (accounts) => { //Then have user1 try to remove user2 - still is rateLimited params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'removeOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -419,7 +419,7 @@ contract('TxRelay', (accounts) => { await evm_increaseTime(adminRate + 1) //Have them add user3, sucessfull this time params = [user1, proxy.address, user3] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -427,7 +427,7 @@ contract('TxRelay', (accounts) => { //Try to remove owner two again, should fail params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'removeOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -435,7 +435,7 @@ contract('TxRelay', (accounts) => { //Tries to change the recoveryKey params = [user1, proxy.address, recoveryKey2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -445,7 +445,7 @@ contract('TxRelay', (accounts) => { await evm_increaseTime(adminRate + 1) params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'removeOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -453,7 +453,7 @@ contract('TxRelay', (accounts) => { //Tries to change the recoveryKey params = [user1, proxy.address, recoveryKey2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -463,7 +463,7 @@ contract('TxRelay', (accounts) => { await evm_increaseTime(adminRate + 1) //Tries to change the recoveryKey params = [user1, proxy.address, recoveryKey2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -473,7 +473,7 @@ contract('TxRelay', (accounts) => { it("non-owner can not add other owner", async function () { types = ['address', 'address', 'address'] params = [user3, proxy.address, user4] - p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user3, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -487,7 +487,7 @@ contract('TxRelay', (accounts) => { beforeEach(async function () { types = ['address', 'address', 'address'] params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -496,7 +496,7 @@ contract('TxRelay', (accounts) => { }) it("within userTimeLock is allowed transactions", async function () { - await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + await testMetaTxForwardTo(user2, sender, txRelay, identityManager.address, proxy.address, testReg, false, false, lw, keyFromPw) }) @@ -506,14 +506,14 @@ contract('TxRelay', (accounts) => { }) it("Allow transactions", async function () { - await testMetaTxForwardTo(user2, sender, txRelay, metaIdentityManager.address, proxy.address, + await testMetaTxForwardTo(user2, sender, txRelay, identityManager.address, proxy.address, testReg, false, false, lw, keyFromPw) }) it("can not add other owner yet", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, user3] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -526,7 +526,7 @@ contract('TxRelay', (accounts) => { it("can not remove other owner yet", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, user1] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -539,7 +539,7 @@ contract('TxRelay', (accounts) => { it("can not change recoveryKey yet", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, recoveryKey2] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -558,7 +558,7 @@ contract('TxRelay', (accounts) => { it("can add new owner", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, user3] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -569,7 +569,7 @@ contract('TxRelay', (accounts) => { it("can remove other owner", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, user3] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'removeOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -580,7 +580,7 @@ contract('TxRelay', (accounts) => { it("can change recoveryKey", async function () { types = ['address', 'address', 'address'] params = [user2, proxy.address, recoveryKey2] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -593,7 +593,7 @@ contract('TxRelay', (accounts) => { beforeEach(async function () { types = ['address', 'address', 'address'] params = [recoveryKey, proxy.address, user4] //new owner - p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, + p = await signPayload(recoveryKey, sender, txRelay, identityManager.address, 'addOwnerFromRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -604,7 +604,7 @@ contract('TxRelay', (accounts) => { it('recovery key is rateLimited', async function () { types = ['address', 'address', 'address'] params = [recoveryKey, proxy.address, user4] //new owner - p = await signPayload(recoveryKey, sender, txRelay, metaIdentityManager.address, + p = await signPayload(recoveryKey, sender, txRelay, identityManager.address, 'addOwnerFromRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, gas: 4500000}) @@ -612,14 +612,14 @@ contract('TxRelay', (accounts) => { }) it("within userTimeLock is not allowed transactions", async function () { - await testMetaTxForwardTo(user4, sender, txRelay, metaIdentityManager.address, proxy.address, + await testMetaTxForwardTo(user4, sender, txRelay, identityManager.address, proxy.address, testReg, false, true, lw, keyFromPw) }) describe("after userTimeLock", () => { it("Allow transactions", async function () { await evm_increaseTime(userTimeLock + 1) - await testMetaTxForwardTo(user4, sender, txRelay, metaIdentityManager.address, proxy.address, + await testMetaTxForwardTo(user4, sender, txRelay, identityManager.address, proxy.address, testReg, false, false, lw, keyFromPw) }) }) @@ -632,7 +632,7 @@ contract('TxRelay', (accounts) => { it("can add new owner", async function () { types = ['address', 'address', 'address'] params = [user4, proxy.address, user3] - p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user4, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -643,7 +643,7 @@ contract('TxRelay', (accounts) => { it("can remove other owner", async function () { types = ['address', 'address', 'address'] params = [user4, proxy.address, user3] - p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user4, sender, txRelay, identityManager.address, 'removeOwner', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -654,7 +654,7 @@ contract('TxRelay', (accounts) => { it("can change recoveryKey", async function () { types = ['address', 'address', 'address'] params = [user4, proxy.address, recoveryKey2] - p = await signPayload(user4, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user4, sender, txRelay, identityManager.address, 'changeRecovery', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -665,13 +665,13 @@ contract('TxRelay', (accounts) => { }) }) describe("migration", () => { - let newMetaIdenManager + let newIdenManager beforeEach(async function () { - newMetaIdenManager = await MetaIdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) + newIdenManager = await IdentityManager.new(userTimeLock, adminTimeLock, adminRate, txRelay.address) //Make user2 a young owner. types = ['address', 'address', 'address'] params = [user1, proxy.address, user2] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'addOwner', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -684,18 +684,18 @@ contract('TxRelay', (accounts) => { it("older owner can start transfer", async function () { types = ['address', 'address', 'address'] - params = [user1, proxy.address, newMetaIdenManager.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationInitiated", proxy.address, newIdenManager.address, user1) }) it("young owner should not be able to start transfer", async function () { types = ['address', 'address', 'address'] - params = [user2, proxy.address, newMetaIdenManager.address] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + params = [user2, proxy.address, newIdenManager.address] + p = await signPayload(user2, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -704,8 +704,8 @@ contract('TxRelay', (accounts) => { it("non-owner should not be able to start transfer", async function () { types = ['address', 'address', 'address'] - params = [user3, proxy.address, newMetaIdenManager.address] - p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + params = [user3, proxy.address, newIdenManager.address] + p = await signPayload(user3, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) @@ -715,66 +715,66 @@ contract('TxRelay', (accounts) => { it("correct keys can cancel migration ", async function () { //Start migration types = ['address', 'address', 'address'] - params = [user1, proxy.address, newMetaIdenManager.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationInitiated", proxy.address, newIdenManager.address, user1) //Non-owner tries to cancel types = ['address', 'address'] params = [user3, proxy.address] - p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user3, sender, txRelay, identityManager.address, 'cancelMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") //Young owner tries to cancel params = [user2, proxy.address] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'cancelMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user2) + await checkLogs(tx, "MigrationCanceled", proxy.address, newIdenManager.address, user2) await evm_increaseTime(adminTimeLock + 1) //Start migration again types = ['address', 'address', 'address'] - params = [user1, proxy.address, newMetaIdenManager.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationInitiated", proxy.address, newIdenManager.address, user1) //Older owner tries to cancel. types = ['address', 'address'] params = [user1, proxy.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'cancelMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationCanceled", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationCanceled", proxy.address, newIdenManager.address, user1) }) it("correct keys should finilize transfer", async function () { //Start migration types = ['address', 'address', 'address'] - params = [user1, proxy.address, newMetaIdenManager.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationInitiated", proxy.address, newIdenManager.address, user1) //Non-owner tries to finalize types = ['address', 'address'] params = [user3, proxy.address] - p = await signPayload(user3, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user3, sender, txRelay, identityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") //Young owner tries to finalize params = [user2, proxy.address] - p = await signPayload(user2, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user2, sender, txRelay, identityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) assert.isUndefined(tx.receipt.logs[0], "Log generated, so therefore transfer started") @@ -783,28 +783,28 @@ contract('TxRelay', (accounts) => { //Older owner tries to finalize, and succedes. params = [user1, proxy.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationFinalized", proxy.address, newIdenManager.address, user1) }) - it("should be owner of new metaIdentityManager after successful transfer", async function () { + it("should be owner of new identityManager after successful transfer", async function () { //Start migration types = ['address', 'address', 'address'] - params = [user1, proxy.address, newMetaIdenManager.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'initiateMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationInitiated", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationInitiated", proxy.address, newIdenManager.address, user1) - //setup new metaIdentitymanage to receive + //setup new identitymanage to receive data = enc('registerIdentity', ['address', 'address'], [user1, recoveryKey]) types = ['address', 'address', 'address', 'uint256', 'bytes'] - params = [user1, proxy.address, newMetaIdenManager.address, 0, data] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + params = [user1, proxy.address, newIdenManager.address, 0, data] + p = await signPayload(user1, sender, txRelay, identityManager.address, 'forwardTo', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) @@ -816,17 +816,17 @@ contract('TxRelay', (accounts) => { types = ['address', 'address'] params = [user1, proxy.address] - p = await signPayload(user1, sender, txRelay, metaIdentityManager.address, + p = await signPayload(user1, sender, txRelay, identityManager.address, 'finalizeMigration', types, params, lw, keyFromPw) tx = await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) - await checkLogs(tx, "MigrationFinalized", proxy.address, newMetaIdenManager.address, user1) + await checkLogs(tx, "MigrationFinalized", proxy.address, newIdenManager.address, user1) //Setup data and sign data = enc('register', ['uint256'], [LOG_NUMBER_1]) types = ['address', 'address', 'address', 'uint256', 'bytes'] params = [user1, proxy.address, testReg.address, 0, data] - p = await signPayload(user1, sender, txRelay, newMetaIdenManager.address, + p = await signPayload(user1, sender, txRelay, newIdenManager.address, 'forwardTo', types, params, lw, keyFromPw) res = await txRelay.getAddress.call(p.data) From 96e4d880fc7335ce6c4ea350a8a5c76e31c22615 Mon Sep 17 00:00:00 2001 From: naterush Date: Fri, 7 Jul 2017 14:07:30 -0400 Subject: [PATCH 49/53] update artifacts --- build/contracts/ArrayLib.json | 4 +- build/contracts/IdentityFactory.json | 4 +- .../IdentityFactoryWithRecoveryKey.json | 4 +- build/contracts/IdentityManager.json | 392 ++++++++++++++++++ build/contracts/MetaTestRegistry.json | 82 ++++ build/contracts/Migrations.json | 4 +- build/contracts/Owned.json | 4 +- build/contracts/Proxy.json | 4 +- build/contracts/RecoverableController.json | 4 +- build/contracts/RecoveryQuorum.json | 4 +- build/contracts/TestRegistry.json | 4 +- build/contracts/TxRelay.json | 63 +-- 12 files changed, 511 insertions(+), 62 deletions(-) create mode 100644 build/contracts/IdentityManager.json create mode 100644 build/contracts/MetaTestRegistry.json diff --git a/build/contracts/ArrayLib.json b/build/contracts/ArrayLib.json index 2df91cd..47ed60e 100644 --- a/build/contracts/ArrayLib.json +++ b/build/contracts/ArrayLib.json @@ -41,7 +41,7 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820b808e7322e3a3f6e9cd3537987354352d4b3f4b408ebd107d7c7269f0b254b0e0029", + "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820ad75ee0a66036c563a97a5590e314b4d9b67f66dc62d791b33ddb33f071b347b0029", "networks": { "1": { "events": {}, @@ -81,5 +81,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498489105319 + "updated_at": 1499450834494 } \ No newline at end of file diff --git a/build/contracts/IdentityFactory.json b/build/contracts/IdentityFactory.json index 2449b95..96fc855 100644 --- a/build/contracts/IdentityFactory.json +++ b/build/contracts/IdentityFactory.json @@ -72,7 +72,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b6120b8806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103a88061033183396040519101819003906000f0801561000057925082878686604051610a13806106d98339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051610fa1806110ec8339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b007002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda3002960606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820422a49255190e2886a76104564ed7ad9d2ae2439b95318837c953decdc1e8a1d0029a165627a7a72305820c224ec59791a323cd5a65d75517817c84819f90046d4893889a280585ac5d5100029", + "unlinked_binary": "0x606060405234610000575b6120b8806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103a88061033183396040519101819003906000f0801561000057925082878686604051610a13806106d98339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051610fa1806110ec8339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f4784002960606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820f157b5ef088961fe7266487988889de22f5405e7c556a3de3b7c9e5773b342ae0029a165627a7a72305820e8180fabedc86ccdac750166890e31538da39c50ee82b0d2256f618fdb869a7f0029", "networks": { "1": { "events": { @@ -256,5 +256,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834494 } \ No newline at end of file diff --git a/build/contracts/IdentityFactoryWithRecoveryKey.json b/build/contracts/IdentityFactoryWithRecoveryKey.json index 6111eba..ded276b 100644 --- a/build/contracts/IdentityFactoryWithRecoveryKey.json +++ b/build/contracts/IdentityFactoryWithRecoveryKey.json @@ -90,7 +90,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b6110c3806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b600060006040516103a8806102dd83396040519101819003906000f0801561000057915081868585604051610a13806106858339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b007002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda30029a165627a7a72305820fe9e1b8c199cdbefd4eae130f6b6f33f77204ecc3f0ce2c5a2ee35ae85dfe31f0029", + "unlinked_binary": "0x606060405234610000575b6110c3806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b600060006040516103a8806102dd83396040519101819003906000f0801561000057915081868585604051610a13806106858339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f47840029a165627a7a723058206f202f9f46138fddb4be82667bb489885298ef4a3f59e59f6db456e367bb43600029", "networks": { "3": { "events": { @@ -196,5 +196,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498489105319 + "updated_at": 1499450834495 } \ No newline at end of file diff --git a/build/contracts/IdentityManager.json b/build/contracts/IdentityManager.json new file mode 100644 index 0000000..637b84e --- /dev/null +++ b/build/contracts/IdentityManager.json @@ -0,0 +1,392 @@ +{ + "contract_name": "IdentityManager", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newIdManager", + "type": "address" + } + ], + "name": "initiateMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "changeRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "forwardTo", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwnerFromRecovery", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "registerIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + } + ], + "name": "cancelMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "identity", + "type": "address" + } + ], + "name": "finalizeMigration", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "recoveryKey", + "type": "address" + } + ], + "name": "createIdentity", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "inputs": [ + { + "name": "_userTimeLock", + "type": "uint256" + }, + { + "name": "_adminTimeLock", + "type": "uint256" + }, + { + "name": "_adminRate", + "type": "uint256" + }, + { + "name": "_relayAddress", + "type": "address" + } + ], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + } + ], + "name": "IdentityCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "OwnerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "recoveryKey", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "RecoveryChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "identity", + "type": "address" + }, + { + "indexed": true, + "name": "newIdManager", + "type": "address" + }, + { + "indexed": false, + "name": "instigator", + "type": "address" + } + ], + "name": "MigrationFinalized", + "type": "event" + } + ], + "unlinked_binary": "0x606060405234610000576040516080806113cc83398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b61135d8061006f6000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008d5780631e2629e1146100b45780633061e0ef146100db578063701b882614610102578063754fd3521461016f578063781f5a8314610196578063a5967039146101b7578063a949c637146101d8578063c7576ed4146101ff578063d10e73ab14610220575b610000565b34610000576100b2600160a060020a0360043581169060243581169060443516610241565b005b34610000576100b2600160a060020a03600435811690602435811690604435166103af565b005b34610000576100b2600160a060020a03600435811690602435811690604435166104ca565b005b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061066095505050505050565b005b34610000576100b2600160a060020a03600435811690602435811690604435166107ef565b005b34610000576100b2600160a060020a036004358116906024351661094d565b005b34610000576100b2600160a060020a0360043581169060243516610a20565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610b4f565b005b34610000576100b2600160a060020a0360043581169060243516610cc5565b005b34610000576100b2600160a060020a0360043581169060243516610e8f565b005b60035433600160a060020a0390811691161480610262575061026233610f61565b5b1561008857600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102cb575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a03908116911614806103d057506103d033610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610439575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038481166000818152600760209081526040918290204281556001018054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b61039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a03908116911614806104eb57506104eb33610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610554575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a03808316600090815260066020908152604080832085851684529091529020429055859081161561008857600160a060020a038781166000818152600560209081526040918290208054600160a060020a0319168b86169081179091558251948d168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610634565b610000565b5b5061038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a0390811691161480610681575061068133610f61565b5b1561008857600160a060020a038085166000908152600460209081526040808320938916835292905290812054859187911180156106ea5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156100885785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018060200182810382528381815181526020019150805190602001908083836000831461077c575b80518252602083111561077c57601f19909201916020918201910161075c565b505050905090810190601f1680156107a85780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b6107da565b610000565b5b50506107e7565b610000565b5b5050505050565b60035433600160a060020a0390811691161480610810575061081033610f61565b5b1561008857600160a060020a03808316600090815260056020526040902054839185918116908216141561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156108c157610000565b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c1685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b80600160a060020a0381161561008857600160a060020a03338116600090815260056020526040812054909116111561098557610000565b60008054600160a060020a03338116808452600460209081526040808620898516808852908352818720429690960390955582865260058252948590208054938816600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b6103a9565b610000565b5b505050565b60035433600160a060020a0390811691161480610a415750610a4133610f61565b5b1561008857600160a060020a03808216600090815260046020908152604080832093861683529290529081205482918491118015610aaa5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561008857600160a060020a03808416600081815260076020908152604091829020600101548251898616815292519416937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f5679281900390910190a3600160a060020a03831660009081526007602052604081209081556001018054600160a060020a03191690555b610b3d565b610000565b5b5050610b4a565b610000565b5b5050565b60035433600160a060020a0390811691161480610b705750610b7033610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610bd9575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190556001548b8616808652600485528386208c8816808852908652958490209190920390558151948c1685529051929390927f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035460009033600160a060020a0390811691161480610ce95750610ce933610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610d52575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038416600090815260076020526040812054118015610d98575060008054600160a060020a03861682526007602052604090912054429101105b156104ad57600160a060020a0380851660008181526007602052604080822060018101805491849055600160a060020a03198216905581517f1a69523000000000000000000000000000000000000000000000000000000000815294166004850181905290519096509192631a695230926024808301939282900301818387803b156100005760325a03f11561000057505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b61039c565b610000565b5b50506103a9565b610000565b5b505050565b600081600160a060020a03811615610088576040516103a880610f8a83396040519101819003906000f080156100005760008054600160a060020a038381168084526004602090815260408086208b8516808852908352818720429690960390955582865260058252948590208054600160a060020a0319168a8516908117909155855194855294519597509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b610f5a565b610000565b5b50505050565b60006024361015610f7457506000610f84565b50600435600160a060020a031681145b919050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc0029a165627a7a723058203a38483c08de1d6d57bb809d38039976f4654ac41b820b9af329d6cc49ea0b080029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1499450834492 +} \ No newline at end of file diff --git a/build/contracts/MetaTestRegistry.json b/build/contracts/MetaTestRegistry.json new file mode 100644 index 0000000..2317ed4 --- /dev/null +++ b/build/contracts/MetaTestRegistry.json @@ -0,0 +1,82 @@ +{ + "contract_name": "MetaTestRegistry", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "with", + "type": "uint256" + }, + { + "name": "many", + "type": "address" + }, + { + "name": "strange", + "type": "string" + }, + { + "name": "params", + "type": "uint256" + } + ], + "name": "reallyLongFunctionName", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + } + ], + "name": "testThrow", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "x", + "type": "uint256" + } + ], + "name": "register", + "outputs": [], + "payable": false, + "type": "function" + } + ], + "unlinked_binary": "0x606060405234610000575b610195806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a424146100705780634a99e570146100d45780636d705ebb146100ef575b610000565b346100005761005e600160a060020a036004351661010d565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061011f92505050565b005b34610000576100d2600160a060020a0360043516610040565b005b34610000576100d2600160a060020a0360043516602435610149565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b50565b600160a060020a03821660009081526020819052604090208190555b50505600a165627a7a72305820ba4de5fc8d2573a754eabae5971209d745a24a13cc4b78fbcef9690727bb844c0029", + "networks": {}, + "schema_version": "0.0.5", + "updated_at": 1499450834492 +} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 9e232c1..92e134c 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -59,7 +59,7 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820b544a7af1fdc6544131df47ec0d21fb1479faf6599edce5dee99e759d39100240029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820a7dc11bf9d33fd06a57a2311d8adc57c991ba9cdf92d44742deb9db5c5232e600029", "networks": { "1": { "events": {}, @@ -87,5 +87,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834495 } \ No newline at end of file diff --git a/build/contracts/Owned.json b/build/contracts/Owned.json index 86c8ee4..40c6505 100644 --- a/build/contracts/Owned.json +++ b/build/contracts/Owned.json @@ -51,8 +51,8 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b61015a806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811461003a5780632f54bf6e146100555780638da5cb5b14610082575b610000565b3461000057610053600160a060020a03600435166100ab565b005b346100005761006e600160a060020a0360043516610108565b604080519115158252519081900360200190f35b346100005761008f61011f565b60408051600160a060020a039092168252519081900360200190f35b6100b433610108565b15156100bf57610000565b30600160a060020a031681600160a060020a0316141515610103576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820c95a2afb899587dcacb4d695fd8856f11bba0aeba73dd7bade627b124966af4c0029", + "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b61015a806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811461003a5780632f54bf6e146100555780638da5cb5b14610082575b610000565b3461000057610053600160a060020a03600435166100ab565b005b346100005761006e600160a060020a0360043516610108565b604080519115158252519081900360200190f35b346100005761008f61011f565b60408051600160a060020a039092168252519081900360200190f35b6100b433610108565b15156100bf57610000565b30600160a060020a031681600160a060020a0316141515610103576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a723058204fbf24829b51ec52ed6cece6010927775e33ad546acf172869bd06ee700824080029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834495 } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 98a5092..4a9f9ab 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -110,8 +110,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a72305820cc3d4f31b85c6e2c7f173835b15747edca87aad6a59eb351e54800e4b087b0070029", + "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834496 } \ No newline at end of file diff --git a/build/contracts/RecoverableController.json b/build/contracts/RecoverableController.json index 0c04f11..acbd974 100644 --- a/build/contracts/RecoverableController.json +++ b/build/contracts/RecoverableController.json @@ -307,8 +307,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820535fa7b8f6a081ef4332022232bf3bdcefe791a19604a415f43cfab2cd95bda30029", + "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f47840029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834496 } \ No newline at end of file diff --git a/build/contracts/RecoveryQuorum.json b/build/contracts/RecoveryQuorum.json index 850c16c..1505061 100644 --- a/build/contracts/RecoveryQuorum.json +++ b/build/contracts/RecoveryQuorum.json @@ -177,7 +177,7 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820422a49255190e2886a76104564ed7ad9d2ae2439b95318837c953decdc1e8a1d0029", + "unlinked_binary": "0x60606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820f157b5ef088961fe7266487988889de22f5405e7c556a3de3b7c9e5773b342ae0029", "networks": { "4": { "events": { @@ -206,5 +206,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834496 } \ No newline at end of file diff --git a/build/contracts/TestRegistry.json b/build/contracts/TestRegistry.json index 6953d5e..df757d7 100644 --- a/build/contracts/TestRegistry.json +++ b/build/contracts/TestRegistry.json @@ -66,8 +66,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b61017b806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a4241461007057806350bff6bf146100d4578063f207564e146100e3575b610000565b346100005761005e600160a060020a03600435166100f5565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061010792505050565b005b34610000576100d2610040565b005b34610000576100d2600435610130565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820cb91dd6e3f04cdc9c738360fa22a89e466a845485c2c5df43ad25d11eff687120029", + "unlinked_binary": "0x606060405234610000575b61017b806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a4241461007057806350bff6bf146100d4578063f207564e146100e3575b610000565b346100005761005e600160a060020a03600435166100f5565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061010792505050565b005b34610000576100d2610040565b005b34610000576100d2600435610130565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820fe8a3fd2a326b7cc37ac1f9b0fe6ef611af39a1a01d95f7609c6fa577c0c24150029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834496 } \ No newline at end of file diff --git a/build/contracts/TxRelay.json b/build/contracts/TxRelay.json index 730fe75..bd14c2c 100644 --- a/build/contracts/TxRelay.json +++ b/build/contracts/TxRelay.json @@ -20,30 +20,20 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "b", - "type": "bytes" + "name": "sigV", + "type": "uint8" }, { - "name": "a", - "type": "address" - } - ], - "name": "checkAddress", - "outputs": [ + "name": "sigR", + "type": "bytes32" + }, { - "name": "t", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ + "name": "sigS", + "type": "bytes32" + }, { "name": "destination", "type": "address" @@ -53,47 +43,32 @@ "type": "bytes" } ], - "name": "relayTx", + "name": "relayMetaTx", "outputs": [], "payable": false, "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "destination", - "type": "address" - }, - { - "name": "data", + "name": "b", "type": "bytes" - }, + } + ], + "name": "getAddress", + "outputs": [ { - "name": "claimedSender", + "name": "a", "type": "address" } ], - "name": "relayMetaTx", - "outputs": [], "payable": false, "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b610528806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab81146100455780636bea166e1461007057806391a55b13146100e2578063c3f44c0a14610141575b610000565b346100005761005e600160a060020a03600435166101b6565b60408051918252519081900360200190f35b34610000576100ce600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a031692506101d5915050565b604080519115158252519081900360200190f35b346100005760408051602060046024803582810135601f810185900485028601850190965285855261013f958335600160a060020a0316959394604494939290920191819084018382808284375094965061020495505050505050565b005b3461000057604080516020601f60843560048181013592830184900484028501840190955281845261013f9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965050509235600160a060020a031692506102b1915050565b005b600160a060020a0381166000908152602081905260409020545b919050565b60006024835110156101e9575060006101fe565b506024820151600160a060020a038281169116145b92915050565b61020e81336101d5565b151561021957610000565b81600160a060020a0316816040518082805190602001908083836000831461025c575b80518252602083111561025c57601f19909201916020918201910161023c565b505050905090810190601f1680156102885780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f191505015156102ac57610000565b5b5050565b60006000306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106103505780518252601f199092019160209182019101610331565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461045357610000565b61045d84826101d5565b151561046857610000565b84600160a060020a031684604051808280519060200190808383600083146104ab575b8051825260208311156104ab57601f19909201916020918201910161048b565b505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b50505050505050505600a165627a7a723058207e49bf68ea3cd5505a2ef36b3ffe7570ef76f9a78b81d30bf69059bad9bbe1720029", + "unlinked_binary": "0x606060405234610000575b6103f5806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab811461003a578063b4fadcad14610065578063c47cf5de146100cf575b610000565b3461000057610053600160a060020a036004351661013e565b60408051918252519081900360200190f35b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100cd9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965061015d95505050505050565b005b3461000057610122600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496506103a095505050505050565b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0381166000908152602081905260409020545b919050565b60006000600061016c846103a0565b9250306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106102095780518252601f1990920191602091820191016101ea565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461030c57610000565b84600160a060020a0316846040518082805190602001908083836000831461034f575b80518252602083111561034f57601f19909201916020918201910161032f565b505050905090810190601f16801561037b5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b5050505050505050565b60006024825110156103b457506000610158565b506024810151600160a060020a03165b9190505600a165627a7a72305820a56d43d192cc421eea36ac1ddf66cf92c3d7810f6f3f91a1cc75d7ee5969cd060029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1498489105320 + "updated_at": 1499450834496 } \ No newline at end of file From 7b6ed37c280b64fedfd8b788a312571a05050978 Mon Sep 17 00:00:00 2001 From: naterush Date: Mon, 10 Jul 2017 16:28:40 -0400 Subject: [PATCH 50/53] update solc, truffle, tests --- build/contracts/ArrayLib.json | 4 +- build/contracts/IdentityFactory.json | 4 +- .../IdentityFactoryWithRecoveryKey.json | 4 +- build/contracts/IdentityManager.json | 4 +- build/contracts/MetaTestRegistry.json | 4 +- build/contracts/Migrations.json | 4 +- build/contracts/Owned.json | 4 +- build/contracts/Proxy.json | 4 +- build/contracts/RecoverableController.json | 4 +- build/contracts/RecoveryQuorum.json | 4 +- build/contracts/TestRegistry.json | 4 +- build/contracts/TxRelay.json | 4 +- contracts/IdentityFactory.sol | 2 +- contracts/IdentityFactoryWithRecoveryKey.sol | 2 +- contracts/IdentityManager.sol | 2 +- contracts/Proxy.sol | 2 +- contracts/RecoverableController.sol | 9 +- contracts/RecoveryQuorum.sol | 2 +- contracts/TxRelay.sol | 4 +- contracts/libs/ArrayLib.sol | 2 +- contracts/libs/Owned.sol | 2 +- contracts/misc/MetaTestRegistry.sol | 2 +- contracts/misc/Migrations.sol | 2 +- contracts/misc/TestRegistry.sol | 2 +- package.json | 11 +- test/identityManager.js | 67 +- test/txRelay.js | 10 +- yarn.lock | 3623 +---------------- 28 files changed, 182 insertions(+), 3610 deletions(-) diff --git a/build/contracts/ArrayLib.json b/build/contracts/ArrayLib.json index 47ed60e..f91cbf6 100644 --- a/build/contracts/ArrayLib.json +++ b/build/contracts/ArrayLib.json @@ -41,7 +41,7 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b6101e4806100196000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002f578063f14717c71461003f575b610000565b61003d600435602435610068565b005b610056600160a060020a0360043516602435610149565b60408051918252519081900360200190f35b80546000198101908290829081101561000057906000526020600020900160005b9054906101000a9004600160a060020a03168284815481101561000057906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a031602179055508181815481101561000057906000526020600020900160005b6101000a815490600160a060020a03021916905580828181548183558181151161013e5760008381526020902061013e9181019083015b8082111561013a5760008155600101610126565b5090565b5b505050505b505050565b6000805b82548110156101ab5783600160a060020a03168382815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a031614156101a2578091506101b1565b5b60010161014d565b60001991505b50929150505600a165627a7a72305820ad75ee0a66036c563a97a5590e314b4d9b67f66dc62d791b33ddb33f071b347b0029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6102048061001c6000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002c578063f14717c71461003c575bfe5b61003a600435602435610065565b005b610053600160a060020a036004351660243561011b565b60408051918252519081900360200190f35b805460001981019082908290811061007957fe5b906000526020600020900160005b9054906101000a9004600160a060020a031682848154811015156100a757fe5b906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a0316021790555081818154811015156100e557fe5b906000526020600020900160005b6101000a815490600160a060020a030219169055808281610114919061018d565b505b505050565b6000805b82548110156101805783600160a060020a0316838281548110151561014057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316141561017757809150610186565b5b60010161011f565b60001991505b5092915050565b815481835581811511610116576000838152602090206101169181019083016101b7565b5b505050565b6101d591905b808211156101d157600081556001016101bd565b5090565b905600a165627a7a72305820f2cce27a26dd6d82241987d38d814802fba984f8ea673cf78a4b40e9762dbd270029", "networks": { "1": { "events": {}, @@ -81,5 +81,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499450834494 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/IdentityFactory.json b/build/contracts/IdentityFactory.json index 96fc855..28d878b 100644 --- a/build/contracts/IdentityFactory.json +++ b/build/contracts/IdentityFactory.json @@ -72,7 +72,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b6120b8806100196000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002f578063e90bcb321461008f575b610000565b346100005760408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c492505050565b005b34610000576100a8600160a060020a0360043516610315565b60408051600160a060020a039092168252519081900360200190f35b6000600060006040516103a88061033183396040519101819003906000f0801561000057925082878686604051610a13806106d98339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f115610000575050508186604051610fa1806110ec8339600160a060020a0384169101908152604060208083018281528451928401929092528351606084019185810191028083838215610200575b80518252602083111561020057601f1990920191602091820191016101e0565b5050509050019350505050604051809103906000f0801561000057905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a039081166000908152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f4784002960606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820f157b5ef088961fe7266487988889de22f5405e7c556a3de3b7c9e5773b342ae0029a165627a7a72305820e8180fabedc86ccdac750166890e31538da39c50ee82b0d2256f618fdb869a7f0029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6121328061001c6000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002c578063e90bcb321461008f575bfe5b341561003457fe5b60408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c792505050565b005b341561009757fe5b6100ab600160a060020a036004351661030f565b60408051600160a060020a039092168252519081900360200190f35b6000600060006100d561032a565b60405190819003906000f08015156100e957fe5b9250828786866100f761033a565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013457fe5b915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561018d57fe5b6102c65a03f1151561019b57fe5b50505081866101a861034a565b600160a060020a03831681526040602080830182815284519284019290925283516060840191858101910280838382156101fd575b8051825260208311156101fd57601f1990920191602091820191016101dd565b5050509050019350505050604051809103906000f080151561021b57fe5b905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561027457fe5b6102c65a03f1151561028257fe5b505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a0390811660009081526020819052604090208054600160a060020a0319169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681565b6040516103aa8061035b83390190565b604051610a108061070583390190565b604051610ff28061111583390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e700296060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820a3a1f0440d52e487ce36e27f23a99d82cd7f9755cc7eab2dff72696babee06200029a165627a7a72305820780cbcfb803f6a9617e0566d233f4a36bc3d83f7541bb47146fe2e42eb2632620029", "networks": { "1": { "events": { @@ -256,5 +256,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499450834494 + "updated_at": 1499717349641 } \ No newline at end of file diff --git a/build/contracts/IdentityFactoryWithRecoveryKey.json b/build/contracts/IdentityFactoryWithRecoveryKey.json index ded276b..850e518 100644 --- a/build/contracts/IdentityFactoryWithRecoveryKey.json +++ b/build/contracts/IdentityFactoryWithRecoveryKey.json @@ -90,7 +90,7 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000575b6110c3806100196000396000f300606060405263ffffffff60e060020a6000350416634a3a87e2811461003a5780636738bd4e14610061578063e90bcb3214610096575b610000565b346100005761005f600160a060020a03600435811690602435166044356064356100cb565b005b346100005761007a600160a060020a03600435166102a6565b60408051600160a060020a039092168252519081900360200190f35b346100005761007a600160a060020a03600435166102c1565b60408051600160a060020a039092168252519081900360200190f35b600060006040516103a8806102dd83396040519101819003906000f0801561000057915081868585604051610a13806106858339600160a060020a0395861691019081529290931660208301526040808301919091526060820192909252905190819003608001906000f0801561000057905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f1156100005750505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b156100005760325a03f11561000057505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a03338116600090815260208181526040808320805485881673ffffffffffffffffffffffffffffffffffffffff199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc002960606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f47840029a165627a7a723058206f202f9f46138fddb4be82667bb489885298ef4a3f59e59f6db456e367bb43600029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6110e38061001c6000396000f300606060405263ffffffff60e060020a6000350416634a3a87e281146100375780636738bd4e14610061578063e90bcb3214610099575bfe5b341561003f57fe5b61005f600160a060020a03600435811690602435166044356064356100d1565b005b341561006957fe5b61007d600160a060020a03600435166102a7565b60408051600160a060020a039092168252519081900360200190f35b34156100a157fe5b61007d600160a060020a03600435166102c2565b60408051600160a060020a039092168252519081900360200190f35b600060006100dd6102dd565b60405190819003906000f08015156100f157fe5b9150818685856100ff6102ed565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013c57fe5b905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561019557fe5b6102c65a03f115156101a357fe5b50505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15156101fd57fe5b6102c65a03f1151561020b57fe5b505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a033381166000908152602081815260408083208054858816600160a060020a03199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681565b6040516103aa806102fe83390190565b604051610a10806106a883390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e70029a165627a7a723058203d25c37c89f65b722fffc1e1165720b097ea109e4fa17188648867a997fbac680029", "networks": { "3": { "events": { @@ -196,5 +196,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499450834495 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/IdentityManager.json b/build/contracts/IdentityManager.json index 637b84e..20f1433 100644 --- a/build/contracts/IdentityManager.json +++ b/build/contracts/IdentityManager.json @@ -385,8 +385,8 @@ "type": "event" } ], - "unlinked_binary": "0x606060405234610000576040516080806113cc83398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b61135d8061006f6000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008d5780631e2629e1146100b45780633061e0ef146100db578063701b882614610102578063754fd3521461016f578063781f5a8314610196578063a5967039146101b7578063a949c637146101d8578063c7576ed4146101ff578063d10e73ab14610220575b610000565b34610000576100b2600160a060020a0360043581169060243581169060443516610241565b005b34610000576100b2600160a060020a03600435811690602435811690604435166103af565b005b34610000576100b2600160a060020a03600435811690602435811690604435166104ca565b005b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061066095505050505050565b005b34610000576100b2600160a060020a03600435811690602435811690604435166107ef565b005b34610000576100b2600160a060020a036004358116906024351661094d565b005b34610000576100b2600160a060020a0360043581169060243516610a20565b005b34610000576100b2600160a060020a0360043581169060243581169060443516610b4f565b005b34610000576100b2600160a060020a0360043581169060243516610cc5565b005b34610000576100b2600160a060020a0360043581169060243516610e8f565b005b60035433600160a060020a0390811691161480610262575061026233610f61565b5b1561008857600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102cb575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a03908116911614806103d057506103d033610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610439575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038481166000818152600760209081526040918290204281556001018054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b61039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a03908116911614806104eb57506104eb33610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610554575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a03808316600090815260066020908152604080832085851684529091529020429055859081161561008857600160a060020a038781166000818152600560209081526040918290208054600160a060020a0319168b86169081179091558251948d168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610634565b610000565b5b5061038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035433600160a060020a0390811691161480610681575061068133610f61565b5b1561008857600160a060020a038085166000908152600460209081526040808320938916835292905290812054859187911180156106ea5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156100885785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018060200182810382528381815181526020019150805190602001908083836000831461077c575b80518252602083111561077c57601f19909201916020918201910161075c565b505050905090810190601f1680156107a85780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b6107da565b610000565b5b50506107e7565b610000565b5b5050505050565b60035433600160a060020a0390811691161480610810575061081033610f61565b5b1561008857600160a060020a03808316600090815260056020526040902054839185918116908216141561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156108c157610000565b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c1685525191937f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929081900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b80600160a060020a0381161561008857600160a060020a03338116600090815260056020526040812054909116111561098557610000565b60008054600160a060020a03338116808452600460209081526040808620898516808852908352818720429690960390955582865260058252948590208054938816600160a060020a031990941684179055845193845293519193909283927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929181900390910190a45b6103a9565b610000565b5b505050565b60035433600160a060020a0390811691161480610a415750610a4133610f61565b5b1561008857600160a060020a03808216600090815260046020908152604080832093861683529290529081205482918491118015610aaa5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b1561008857600160a060020a03808416600081815260076020908152604091829020600101548251898616815292519416937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f5679281900390910190a3600160a060020a03831660009081526007602052604081209081556001018054600160a060020a03191690555b610b3d565b610000565b5b5050610b4a565b610000565b5b5050565b60035433600160a060020a0390811691161480610b705750610b7033610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610bd9575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600254600160a060020a038086166000908152600660209081526040808320938a168352929052205485918791429101101561008857600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190556001548b8616808652600485528386208c8816808852908652958490209190920390558151948c1685529051929390927f3047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386929181900390910190a35b61038f565b610000565b5b505061039c565b610000565b5b50506103a9565b610000565b5b505050565b60035460009033600160a060020a0390811691161480610ce95750610ce933610f61565b5b1561008857600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610d52575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b1561008857600160a060020a038416600090815260076020526040812054118015610d98575060008054600160a060020a03861682526007602052604090912054429101105b156104ad57600160a060020a0380851660008181526007602052604080822060018101805491849055600160a060020a03198216905581517f1a69523000000000000000000000000000000000000000000000000000000000815294166004850181905290519096509192631a695230926024808301939282900301818387803b156100005760325a03f11561000057505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b61039c565b610000565b5b50506103a9565b610000565b5b505050565b600081600160a060020a03811615610088576040516103a880610f8a83396040519101819003906000f080156100005760008054600160a060020a038381168084526004602090815260408086208b8516808852908352818720429690960390955582865260058252948590208054600160a060020a0319168a8516908117909155855194855294519597509394339092169390927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61929081900390910190a45b610f5a565b610000565b5b50505050565b60006024361015610f7457506000610f84565b50600435600160a060020a031681145b919050560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc0029a165627a7a723058203a38483c08de1d6d57bb809d38039976f4654ac41b820b9af329d6cc49ea0b080029", + "unlinked_binary": "0x6060604052341561000c57fe5b60405160808061140383398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b611391806100726000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008a5780631e2629e1146100b45780633061e0ef146100de578063701b882614610108578063754fd35214610178578063781f5a83146101a2578063a5967039146101c6578063a949c637146101ea578063c7576ed414610214578063d10e73ab14610238575bfe5b341561009257fe5b6100b2600160a060020a036004358116906024358116906044351661025c565b005b34156100bc57fe5b6100b2600160a060020a03600435811690602435811690604435166103cd565b005b34156100e657fe5b6100b2600160a060020a03600435811690602435811690604435166104ea565b005b341561011057fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061068495505050505050565b005b341561018057fe5b6100b2600160a060020a036004358116906024358116906044351661081c565b005b34156101aa57fe5b6100b2600160a060020a036004358116906024351661096c565b005b34156101ce57fe5b6100b2600160a060020a0360043581169060243516610a2f565b005b34156101f257fe5b6100b2600160a060020a0360043581169060243581169060443516610b60565b005b341561021c57fe5b6100b2600160a060020a0360043581169060243516610cc7565b005b341561024057fe5b6100b2600160a060020a0360043581169060243516610e84565b005b60035433600160a060020a039081169116148061027d575061027d33610f43565b5b156103a557600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102e6575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806103ee57506103ee33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610457575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038481166000818152600760209081526040918290204281556001018054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a039081169116148061050b575061050b33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610574575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452909152902042905585908116156103a557600160a060020a038781166000818152600560209081526040918290208054600160a060020a0319168b86169081179091558251948d168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610655565b60006000fd5b5b506103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806106a557506106a533610f43565b5b156103a557600160a060020a0380851660009081526004602090815260408083209389168352929052908120548591879111801561070e5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a55785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383600083146107a0575b8051825260208311156107a057601f199092019160209182019101610780565b505050905090810190601f1680156107cc5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156107e957fe5b6102c65a03f115156107f757fe5b5050505b610806565b60006000fd5b5b5050610814565b60006000fd5b5b5050505050565b60035433600160a060020a039081169116148061083d575061083d33610f43565b5b156103a557600160a060020a0380831660009081526005602052604090205483918591811690821614156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156108ef5760006000fd5b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c168552519193600080516020611326833981519152929081900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b80600160a060020a038116156103a557600160a060020a0333811660009081526005602052604081205490911611156109a55760006000fd5b60008054600160a060020a03338116808452600460209081526040808620898516808852908352818720429690960390955582865260058252948590208054938816600160a060020a03199094168417905584519384529351919390928392600080516020611346833981519152929181900390910190a45b6103c7565b60006000fd5b5b505050565b60035433600160a060020a0390811691161480610a505750610a5033610f43565b5b156103a557600160a060020a03808216600090815260046020908152604080832093861683529290529081205482918491118015610ab95750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a557600160a060020a03808416600081815260076020908152604091829020600101548251898616815292519416937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f5679281900390910190a3600160a060020a03831660009081526007602052604081209081556001018054600160a060020a03191690555b610b4d565b60006000fd5b5b5050610b5b565b60006000fd5b5b5050565b60035433600160a060020a0390811691161480610b815750610b8133610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610bea575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190556001548b8616808652600485528386208c8816808852908652958490209190920390558151948c168552905192939092600080516020611326833981519152929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035460009033600160a060020a0390811691161480610ceb5750610ceb33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610d54575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038416600090815260076020526040812054118015610d9a575060008054600160a060020a03861682526007602052604090912054429101105b156104cb57600160a060020a0380851660008181526007602052604080822060018101805491849055600160a060020a031982169055815160e460020a6301a6952302815294166004850181905290519096509192631a695230926024808301939282900301818387803b1515610e0d57fe5b6102c65a03f11515610e1b57fe5b505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b600081600160a060020a038116156103a557610e9e610f6b565b60405190819003906000f0801515610eb257fe5b60008054600160a060020a038381168084526004602090815260408086208b8516808852908352818720429690960390955582865260058252948590208054600160a060020a0319168a851690811790915585519485529451959750939433909216939092600080516020611346833981519152929081900390910190a45b610f3c565b60006000fd5b5b50505050565b60006024361015610f5657506000610f66565b50600435600160a060020a031681145b919050565b6040516103aa80610f7c83390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500293047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386c36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61a165627a7a723058205a699f780e7ac73f314717ace5f7fa4c4dc94a97a3ad7463e458b4866de4d60d0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834492 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/MetaTestRegistry.json b/build/contracts/MetaTestRegistry.json index 2317ed4..9de5ac7 100644 --- a/build/contracts/MetaTestRegistry.json +++ b/build/contracts/MetaTestRegistry.json @@ -75,8 +75,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b610195806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a424146100705780634a99e570146100d45780636d705ebb146100ef575b610000565b346100005761005e600160a060020a036004351661010d565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061011f92505050565b005b34610000576100d2600160a060020a0360043516610040565b005b34610000576100d2600160a060020a0360043516602435610149565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b50565b600160a060020a03821660009081526020819052604090208190555b50505600a165627a7a72305820ba4de5fc8d2573a754eabae5971209d745a24a13cc4b78fbcef9690727bb844c0029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b61019f8061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a424146100705780634a99e570146100d75780636d705ebb146100f5575bfe5b341561004a57fe5b61005e600160a060020a0360043516610116565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061012892505050565b005b34156100df57fe5b6100d5600160a060020a036004351661014a565b005b34156100fd57fe5b6100d5600160a060020a0360043516602435610153565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b50565b600160a060020a03821660009081526020819052604090208190555b50505600a165627a7a72305820be1648a864f1d664d3f856ac0ea822a3256ddad753cf454a74a5b0b10a7051960029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834492 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 92e134c..a67a931 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -59,7 +59,7 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b610190806100366000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610045578063445df0ac146100605780638da5cb5b1461007f578063fdacd576146100a8575b610000565b346100005761005e600160a060020a03600435166100ba565b005b346100005761006d61012d565b60408051918252519081900360200190f35b346100005761008c610133565b60408051600160a060020a039092168252519081900360200190f35b346100005761005e600435610142565b005b6000805433600160a060020a03908116911614156101275781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561015f5760018190555b5b5b505600a165627a7a72305820a7dc11bf9d33fd06a57a2311d8adc57c991ba9cdf92d44742deb9db5c5232e600029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6101a0806100396000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610042578063445df0ac146100605780638da5cb5b14610082578063fdacd576146100ae575bfe5b341561004a57fe5b61005e600160a060020a03600435166100c3565b005b341561006857fe5b61007061013d565b60408051918252519081900360200190f35b341561008a57fe5b610092610143565b60408051600160a060020a039092168252519081900360200190f35b34156100b657fe5b61005e600435610152565b005b6000805433600160a060020a03908116911614156101375781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561012557fe5b6102c65a03f1151561013357fe5b5050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561016f5760018190555b5b5b505600a165627a7a723058209129380aaaaccdc967252bac0b186d0adcea97c30a3dd6499a7682423df0d2540029", "networks": { "1": { "events": {}, @@ -87,5 +87,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499450834495 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/Owned.json b/build/contracts/Owned.json index 40c6505..b7ba21b 100644 --- a/build/contracts/Owned.json +++ b/build/contracts/Owned.json @@ -51,8 +51,8 @@ "type": "constructor" } ], - "unlinked_binary": "0x606060405234610000575b60008054600160a060020a03191633600160a060020a03161790555b5b61015a806100366000396000f300606060405263ffffffff60e060020a6000350416631a695230811461003a5780632f54bf6e146100555780638da5cb5b14610082575b610000565b3461000057610053600160a060020a03600435166100ab565b005b346100005761006e600160a060020a0360043516610108565b604080519115158252519081900360200190f35b346100005761008f61011f565b60408051600160a060020a039092168252519081900360200190f35b6100b433610108565b15156100bf57610000565b30600160a060020a031681600160a060020a0316141515610103576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a723058204fbf24829b51ec52ed6cece6010927775e33ad546acf172869bd06ee700824080029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b610154806100396000396000f300606060405263ffffffff60e060020a6000350416631a69523081146100375780632f54bf6e146100555780638da5cb5b14610085575bfe5b341561003f57fe5b610053600160a060020a03600435166100b1565b005b341561005d57fe5b610071600160a060020a0360043516610102565b604080519115158252519081900360200190f35b341561008d57fe5b610095610119565b60408051600160a060020a039092168252519081900360200190f35b6100ba33610102565b15156100c65760006000fd5b30600160a060020a031681600160a060020a03161415156100fd5760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820fd2149f49a82afd1abc790669fc15ea5fb4392f9c67bdc191b57c9146efc415f0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834495 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 4a9f9ab..d38a599 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -110,8 +110,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610377806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100a95780638da5cb5b146100d6578063d7f31eb9146100ff575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b346100005761008c600160a060020a0360043516610161565b005b34610000576100c2600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34610000576100e36101d5565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b61016a336101be565b151561017557610000565b30600160a060020a031681600160a060020a03161415156101b9576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f857610000565b82600160a060020a031682826040518082805190602001908083836000831461023c575b80518252602083111561023c57601f19909201916020918201910161021c565b505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876185025a03f192505050151561028c57610000565b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030a575b80518252602083111561030a57601f1990920191602091820191016102ea565b505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058207ab490c7a057ef3ead2644a251c61b67e841c214b287845ed22469b1cb44a5dc0029", + "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f0450029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834496 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/RecoverableController.json b/build/contracts/RecoverableController.json index acbd974..d702895 100644 --- a/build/contracts/RecoverableController.json +++ b/build/contracts/RecoverableController.json @@ -307,8 +307,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051608080610a1383398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b610981806100926000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101065780631c1c22891461012f5780631de0e877146101585780631ec9f7b51461017757806334c7dcf8146101965780634893ed5b146101bf57806354fd4d50146101de5780637a5d5345146101fd5780637ab0b9981461021857806384191f62146102335780638ac0eef91461024257806397905a8814610251578063a08df7701461027a578063c998e9dd14610295578063cbd2c73b146102b0578063d1c484f6146102cb578063d233fc0b146102ea578063d7f31eb9146102f9578063ec5568891461035b578063f60edb0e14610384578063f66c6691146103ad575b610000565b34610000576101136103cc565b60408051600160a060020a039092168252519081900360200190f35b34610000576101136103db565b60408051600160a060020a039092168252519081900360200190f35b34610000576101656103ea565b60408051918252519081900360200190f35b34610000576101656103f0565b60408051918252519081900360200190f35b34610000576101136103f6565b60408051600160a060020a039092168252519081900360200190f35b3461000057610165610405565b60408051918252519081900360200190f35b346100005761016561040b565b60408051918252519081900360200190f35b3461000057610216600160a060020a0360043516610411565b005b3461000057610216600160a060020a03600435166104ac565b005b3461000057610216610547565b005b34610000576102166105e9565b005b346100005761011361068c565b60408051600160a060020a039092168252519081900360200190f35b3461000057610216600160a060020a036004351661069b565b005b3461000057610216600160a060020a03600435166106d3565b005b3461000057610216600160a060020a0360043516610717565b005b34610000576101656107b2565b60408051918252519081900360200190f35b34610000576102166107b8565b005b3461000057604080516020600460443581810135601f8101849004840285018401909552848452610216948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080195505050505050565b005b3461000057610113610911565b60408051600160a060020a039092168252519081900360200190f35b3461000057610113610920565b60408051600160a060020a039092168252519081900360200190f35b346100005761016561092f565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104a757600b54420160095560088054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526014828201527f7369676e436f6e74726f6c6c65724368616e6765000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104a757600b54420160075560068054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526012828201527f7369676e5265636f766572794368616e67650000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b426009541080156105625750600854600160a060020a031615155b156105e657600154600854604080517f1a695230000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b156100005760325a03f115610000575050600854600160a060020a03169050ff5b5b565b426004541080156106045750600354600160a060020a031615155b156105e6576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d828201527f6368616e6765557365724b657900000000000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104a75760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104a75760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104a757600a54420160045560038054600160a060020a031916600160a060020a0383811691909117909155604080513390921660208301528082526011828201527f7369676e557365724b65794368616e6765000000000000000000000000000000606083015251600080516020610936833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107d35750600654600160a060020a031615155b156105e6576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a039081169116141561090a576001546040517fd7f31eb9000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108b6575b8051825260208311156108b657601f199092019160209182019101610896565b505050905090810190601f1680156108e25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b156100005760325a03f115610000575050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058201a60d71df78bf2a22eb0b813a33e7652b9de0201bc44fa16d61f66e60c6f47840029", + "unlinked_binary": "0x6060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e70029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834496 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/RecoveryQuorum.json b/build/contracts/RecoveryQuorum.json index 1505061..e08505a 100644 --- a/build/contracts/RecoveryQuorum.json +++ b/build/contracts/RecoveryQuorum.json @@ -177,7 +177,7 @@ "type": "event" } ], - "unlinked_binary": "0x60606040523461000057604051610fa1380380610fa183398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561018157600f811061005957610181565b6001805480600101828181548183558181151161009b5760008381526020902061009b9181019083015b808211156100975760008155600101610083565b5090565b5b505050916000526020600020900160005b848481518110156100005790602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a0316815250600260008484815181101561000057602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610043565b5b5050505b610e0c806101956000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee8114610082578063245d1314146100ad5780633f31281a146100c8578063587cde1e146100e357806364bc82c314610123578063943e170d1461014f578063a39fac121461016e578063e71e592b146101d6578063f77c479114610260575b610000565b346100005761009b600160a060020a0360043516610289565b60408051918252519081900360200190f35b34610000576100c6600160a060020a036004351661037d565b005b34610000576100c6600160a060020a036004351661047a565b005b34610000576100fc600160a060020a036004351661060d565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b3461000057610133600435610636565b60408051600160a060020a039092168252519081900360200190f35b346100005761009b610666565b60408051918252519081900360200190f35b346100005761017b610708565b60408051602080825283518183015283519192839290830191858101910280838382156101c3575b8051825260208311156101c357601f1990920191602091820191016101a3565b5050509050019250505060405180910390f35b34610000576100c6600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077395505050505050565b005b34610000576101336108e8565b60408051600160a060020a039092168252519081900360200190f35b6000805b6001548110156103765761030660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108f7565b8015610361575082600160a060020a031660026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561036d576001909101905b5b60010161028d565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103c690610922565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104078161047a565b60408051600160a060020a0333166020820152818152600e818301527f7369676e557365724368616e6765000000000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b50565b6000610484610666565b61048d83610289565b106106075760008054604080517fc998e9dd000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b156100005760325a03f11561000057505050600090505b600154811015610607574260026000600184815481101561000057906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105ab574260026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b60026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b600101610501565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600181815481101561000057906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f9576106e460026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a900481168252602080830193909352604091820160002082516060810184528154815260018201549481019490945260020154169082015261092c565b156106f0576001909101905b5b60010161066b565b6002820460010192505b505090565b60408051602081810183526000825260018054845181840281018401909552808552929392909183018282801561076857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161074a575b505050505090505b90565b6000805460408051602090810184905281517f1c1c228900000000000000000000000000000000000000000000000000000000815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b156100005760325a03f1156100005750505060405180519050600160a060020a031633600160a060020a031614156108e057600091505b83518210156108365761082a848381518110156100005790602001906020020151610960565b5b600190910190610804565b61083e610ac1565b5060005b825181101561087157610868838281518110156100005790602001906020020151610c2c565b5b600101610842565b60408051600160a060020a03331660208201528181526010818301527f7265706c61636544656c65676174657300000000000000000000000000000000606082015290517fea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f067939181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006109028261092c565b801561091a57506040820151600160a060020a031615155b90505b919050565b805115155b919050565b600061093782610922565b8015610949575061094782610dd4565b155b801561091a5750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a3357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b3d60026000600184815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610dd4565b15610c1f5760026000600183815481101561000057906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a031916905582517fc6f31521000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b156100005760325a03f41561000057505050610c23565b6001015b610ac4565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c7590610922565b158015610c855750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a03191693909116929092179091555080548082018083558281838015829011610d9e57600083815260209020610d9e9181019083015b80821115610d9a5760008155600101610d86565b5090565b5b505050916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b9190505600a165627a7a72305820f157b5ef088961fe7266487988889de22f5405e7c556a3de3b7c9e5773b342ae0029", + "unlinked_binary": "0x6060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820a3a1f0440d52e487ce36e27f23a99d82cd7f9755cc7eab2dff72696babee06200029", "networks": { "4": { "events": { @@ -206,5 +206,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499450834496 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/TestRegistry.json b/build/contracts/TestRegistry.json index df757d7..f1dbb55 100644 --- a/build/contracts/TestRegistry.json +++ b/build/contracts/TestRegistry.json @@ -66,8 +66,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b61017b806100196000396000f300606060405263ffffffff60e060020a600035041663038defd781146100455780630da9a4241461007057806350bff6bf146100d4578063f207564e146100e3575b610000565b346100005761005e600160a060020a03600435166100f5565b60408051918252519081900360200190f35b3461000057604080516020600460443581810135601f81018490048402850184019095528484526100d29482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061010792505050565b005b34610000576100d2610040565b005b34610000576100d2600435610130565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b610000565b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820fe8a3fd2a326b7cc37ac1f9b0fe6ef611af39a1a01d95f7609c6fa577c0c24150029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6101858061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a4241461007057806350bff6bf146100d7578063f207564e146100e9575bfe5b341561004a57fe5b61005e600160a060020a03600435166100fe565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061011092505050565b005b34156100df57fe5b6100d5610132565b005b34156100f157fe5b6100d560043561013a565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820e9e44509d5dfa9e66497a7ee2a258a475565dacb1f6afa21ebb11740d8e9d9920029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834496 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/build/contracts/TxRelay.json b/build/contracts/TxRelay.json index bd14c2c..3536207 100644 --- a/build/contracts/TxRelay.json +++ b/build/contracts/TxRelay.json @@ -67,8 +67,8 @@ "type": "function" } ], - "unlinked_binary": "0x606060405234610000575b6103f5806100196000396000f300606060405263ffffffff60e060020a6000350416632d0335ab811461003a578063b4fadcad14610065578063c47cf5de146100cf575b610000565b3461000057610053600160a060020a036004351661013e565b60408051918252519081900360200190f35b3461000057604080516020601f6084356004818101359283018490048402850184019095528184526100cd9460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965061015d95505050505050565b005b3461000057610122600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496506103a095505050505050565b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0381166000908152602081905260409020545b919050565b60006000600061016c846103a0565b9250306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b602083106102095780518252601f1990920191602091820191016101ea565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000866161da5a03f11561000057505060408051601f190151600160a060020a0380861660008181526020819052939093208054600101905590925082161461030c57610000565b84600160a060020a0316846040518082805190602001908083836000831461034f575b80518252602083111561034f57601f19909201916020918201910161032f565b505050905090810190601f16801561037b5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000866161da5a03f15050505b5b5050505050505050565b60006024825110156103b457506000610158565b506024810151600160a060020a03165b9190505600a165627a7a72305820a56d43d192cc421eea36ac1ddf66cf92c3d7810f6f3f91a1cc75d7ee5969cd060029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6103ff8061001c6000396000f300606060405263ffffffff60e060020a6000350416632d0335ab8114610037578063b4fadcad14610065578063c47cf5de146100d2575bfe5b341561003f57fe5b610053600160a060020a0360043516610144565b60408051918252519081900360200190f35b341561006d57fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100d09460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965061016395505050505050565b005b34156100da57fe5b610128600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496506103aa95505050505050565b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0381166000908152602081905260409020545b919050565b600060006000610172846103aa565b9250306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b6020831061020f5780518252601f1990920191602091820191016101f0565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f115156102db57fe5b505060408051601f190151600160a060020a038086166000818152602081905293909320805460010190559092508216146103165760006000fd5b84600160a060020a03168460405180828051906020019080838360008314610359575b80518252602083111561035957601f199092019160209182019101610339565b505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f15050505b5b5050505050505050565b60006024825110156103be5750600061015e565b506024810151600160a060020a03165b9190505600a165627a7a723058204c361cca7df3283e56cd08a7512f605c602e629e2d47509e3195e5e2ad6376dd0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499450834496 + "updated_at": 1499717349642 } \ No newline at end of file diff --git a/contracts/IdentityFactory.sol b/contracts/IdentityFactory.sol index 0a2ed8f..70269b8 100644 --- a/contracts/IdentityFactory.sol +++ b/contracts/IdentityFactory.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./RecoveryQuorum.sol"; contract IdentityFactory { diff --git a/contracts/IdentityFactoryWithRecoveryKey.sol b/contracts/IdentityFactoryWithRecoveryKey.sol index ba983d0..3c6fea1 100644 --- a/contracts/IdentityFactoryWithRecoveryKey.sol +++ b/contracts/IdentityFactoryWithRecoveryKey.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./RecoverableController.sol"; contract IdentityFactoryWithRecoveryKey { diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index b429cc9..ddeb721 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./Proxy.sol"; contract IdentityManager { diff --git a/contracts/Proxy.sol b/contracts/Proxy.sol index 8572bc7..fe07a1a 100644 --- a/contracts/Proxy.sol +++ b/contracts/Proxy.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./libs/Owned.sol"; contract Proxy is Owned { diff --git a/contracts/RecoverableController.sol b/contracts/RecoverableController.sol index 248f823..49341b0 100644 --- a/contracts/RecoverableController.sol +++ b/contracts/RecoverableController.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./Proxy.sol"; contract RecoverableController { @@ -36,7 +36,7 @@ contract RecoverableController { function forward(address destination, uint value, bytes data) onlyUserKey { proxy.forward(destination, value, data); } - //pass 0x0 to cancel + //pass 0x0 to cancel function signRecoveryChange(address _proposedRecoveryKey) onlyUserKey{ proposedRecoveryKeyPendingUntil = now + longTimeLock; proposedRecoveryKey = _proposedRecoveryKey; @@ -48,7 +48,7 @@ contract RecoverableController { delete proposedRecoveryKey; } } - //pass 0x0 to cancel + //pass 0x0 to cancel function signControllerChange(address _proposedController) onlyUserKey{ proposedControllerPendingUntil = now + longTimeLock; proposedController = _proposedController; @@ -60,7 +60,7 @@ contract RecoverableController { suicide(proposedController); } } - //pass 0x0 to cancel + //pass 0x0 to cancel function signUserKeyChange(address _proposedUserKey) onlyUserKey{ proposedUserKeyPendingUntil = now + shortTimeLock; proposedUserKey = _proposedUserKey; @@ -80,4 +80,3 @@ contract RecoverableController { userKey = _userKey; } } - diff --git a/contracts/RecoveryQuorum.sol b/contracts/RecoveryQuorum.sol index 202990d..42a1358 100644 --- a/contracts/RecoveryQuorum.sol +++ b/contracts/RecoveryQuorum.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; import "./RecoverableController.sol"; import "./libs/ArrayLib.sol"; diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index 383f5c9..e74c1c7 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; //This contract is meant as a "singleton" forwarding contract. //Eventually, it will be able to forward any transaction to @@ -46,7 +46,7 @@ contract TxRelay { let mask := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF a := and(mask, mload(add(b, 36))) //36 is the offset of the first param of the data, if encoded properly. - //4 bytes for the function signature, and 32 for the addess. + //4 bytes for the function signature, and 32 for the addess. } } diff --git a/contracts/libs/ArrayLib.sol b/contracts/libs/ArrayLib.sol index c4e8fc6..57c4785 100644 --- a/contracts/libs/ArrayLib.sol +++ b/contracts/libs/ArrayLib.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; library ArrayLib { function findAddress(address a, address[] storage arry) returns (int){ diff --git a/contracts/libs/Owned.sol b/contracts/libs/Owned.sol index 3b0734c..832e076 100644 --- a/contracts/libs/Owned.sol +++ b/contracts/libs/Owned.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; contract Owned { address public owner; diff --git a/contracts/misc/MetaTestRegistry.sol b/contracts/misc/MetaTestRegistry.sol index 40410a6..eb5b269 100644 --- a/contracts/misc/MetaTestRegistry.sol +++ b/contracts/misc/MetaTestRegistry.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.8; +pragma solidity 0.4.11; // This contract is only used for testing purposes. contract MetaTestRegistry { diff --git a/contracts/misc/Migrations.sol b/contracts/misc/Migrations.sol index 3752313..28ffa35 100644 --- a/contracts/misc/Migrations.sol +++ b/contracts/misc/Migrations.sol @@ -1,4 +1,4 @@ -pragma solidity 0.4.8; +pragma solidity 0.4.11; contract Migrations { address public owner; diff --git a/contracts/misc/TestRegistry.sol b/contracts/misc/TestRegistry.sol index 3eb1d96..4eebd15 100644 --- a/contracts/misc/TestRegistry.sol +++ b/contracts/misc/TestRegistry.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.8; +pragma solidity 0.4.11; // This contract is only used for testing purposes. contract TestRegistry { diff --git a/package.json b/package.json index d0d159a..4a4f8cf 100644 --- a/package.json +++ b/package.json @@ -33,14 +33,17 @@ "babel-preset-stage-2": "^6.24.1", "babel-preset-stage-3": "^6.24.1", "bluebird": "^3.5.0", + "eth-lightwallet": "^2.5.6", "eth-signer": "^0.2.2", "ethereumjs-testrpc": "^3.0.3", "ethjs-abi": "^0.1.9", + "left-pad": "^1.1.3", "node-plantuml": "^0.5.0", - "truffle": "3.1.2", + "truffle": "^3.4.3", "truffle-contract": "^1.1.10", - "truffle-hdwallet-provider": "0.0.3", - "eth-lightwallet": "^2.5.6", - "left-pad": "^1.1.3" + "truffle-hdwallet-provider": "0.0.3" + }, + "dependencies": { + "solc": "^0.4.13" } } diff --git a/test/identityManager.js b/test/identityManager.js index 20626e7..4be2c1d 100644 --- a/test/identityManager.js +++ b/test/identityManager.js @@ -28,15 +28,15 @@ async function testForwardTo(testReg, identityManager, proxyAddress, fromAccount // Send forward request from the owner try { await identityManager.forwardTo(claimedFrom, proxyAddress, testReg.address, 0, '0x' + data, {from: fromAccount}) - } catch (error) { - errorThrown = error.message + } catch (e) { + errorThrown = e.message } let regData = await testReg.registry.call(proxyAddress) if (shouldEqual) { assert.isNotOk(errorThrown, 'An error should not have been thrown') assert.equal(regData.toNumber(), testNum) } else { - assert.match(errorThrown, /invalid JUMP/, 'throws an error') + assert.match(errorThrown, /invalid opcode/, 'throws an error') assert.notEqual(regData.toNumber(), testNum) } } @@ -49,15 +49,15 @@ async function testForwardToFromRelay(testReg, identityManager, proxyAddress, fr // Send forward request from the owner try { await identityManager.forwardTo(fromAccount, proxyAddress, testReg.address, 0, '0x' + data, {from: txRelayAddress}) - } catch (error) { - errorThrown = error.message + } catch (e) { + errorThrown = e.message } let regData = await testReg.registry.call(proxyAddress) if (shouldEqual) { assert.isNotOk(errorThrown, 'An error should not have been thrown') assert.equal(regData.toNumber(), testNum) } else { - assert.match(errorThrown, /invalid JUMP/, 'throws an error') + assert.match(errorThrown, /invalid opcode/, 'throws an error') assert.notEqual(regData.toNumber(), testNum) } } @@ -140,7 +140,7 @@ contract('IdentityManager', (accounts) => { try { await testForwardTo(testReg, identityManager, proxy.address, user2, user1, true) } catch (e) { - assert.match(e.message, /invalid JUMP/, "Should have thrown") + assert.match(e.message, /invalid opcode/, "Should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown an error") @@ -173,7 +173,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.addOwner(user1, proxy.address, user4, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -182,7 +182,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.removeOwner(user1, proxy.address, user5, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -191,7 +191,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -206,7 +206,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.removeOwner(user1, proxy.address, user5, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -215,7 +215,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -229,7 +229,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.changeRecovery(user1, proxy.address, recoveryKey2, {from: user1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -241,11 +241,14 @@ contract('IdentityManager', (accounts) => { }) it('non-owner can not add other owner', async function() { + errorThrown = false try { await identityManager.addOwner(user3, proxy.address, user4, {from: user3}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') + errorThrown = true } + assert.isTrue(errorThrown, "should have thrown") }) describe('new owner added by owner', () => { @@ -269,8 +272,8 @@ contract('IdentityManager', (accounts) => { let errorThrown = false try { await identityManager.addOwner(user2, proxy.address, user4, {from: user2}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') errorThrown = true } assert.isTrue(errorThrown, 'Should have thrown') @@ -280,8 +283,8 @@ contract('IdentityManager', (accounts) => { let errorThrown = false try { await identityManager.removeOwner(user2, proxy.address, user1, {from: user2}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') errorThrown = true } assert.isTrue(errorThrown, 'Should have thrown') @@ -291,8 +294,8 @@ contract('IdentityManager', (accounts) => { let errorThrown = false try { await identityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') errorThrown = true } assert.isTrue(errorThrown, 'Should have thrown') @@ -348,7 +351,7 @@ contract('IdentityManager', (accounts) => { try { await identityManager.addOwnerFromRecovery(recoveryKey, proxy.address, user4, {from: recoveryKey}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "should have thrown") @@ -439,8 +442,8 @@ contract('IdentityManager', (accounts) => { let threwError = false try { await identityManager.initiateMigration(user2, proxy.address, newIdenManager.address, {from: user2}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') threwError = true } assert.isTrue(threwError, 'Should have thrown an error here') @@ -450,8 +453,8 @@ contract('IdentityManager', (accounts) => { let threwError = false try { await identityManager.initiateMigration(nobody, proxy.address, newIdenManager.address, {from: nobody}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') threwError = true } assert.isTrue(threwError, 'Should have thrown an error here') @@ -495,8 +498,8 @@ contract('IdentityManager', (accounts) => { let threwError = false try { await identityManager.cancelMigration(nobody, proxy.address, {from: nobody}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') threwError = true } assert.isTrue(threwError, 'Should have thrown error') @@ -507,16 +510,16 @@ contract('IdentityManager', (accounts) => { let threwError = false try { await identityManager.finalizeMigration(nobody, proxy.address, {from: nobody}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') threwError = true } assert.isTrue(threwError, 'non-owner should not be able to finalize') threwError = false try { await identityManager.finalizeMigration(user2, proxy.address, {from: user2}) - } catch(error) { - assert.match(error, /invalid JUMP/, 'throws an error') + } catch(e) { + assert.match(e.message, /invalid opcode/, 'throws an error') threwError = true } assert.isTrue(threwError, 'young owner should not be able to finalize') diff --git a/test/txRelay.js b/test/txRelay.js index 5fac167..d80d860 100644 --- a/test/txRelay.js +++ b/test/txRelay.js @@ -103,7 +103,7 @@ async function testMetaTxForwardTo(signingAddr, sendingAddr, txRelay, identityMa await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sendingAddr}) } catch (error) { errorThrown = true - assert.match(errorThrown, /invalid JUMP/, "An error should have been thrown") + assert.match(errorThrown, /invalid opcode/, "An error should have been thrown") } if (relayShouldFail) { assert.true(errorThrown, "Transaction should not have gotten through relay") @@ -259,7 +259,7 @@ contract('TxRelay', (accounts) => { //claim to be a different person again await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "Should have thrown") + assert.match(e.message, /invalid opcode/, "Should have thrown") errorThrown = true; } assert.isTrue(errorThrown, "Has thrown an error") @@ -281,7 +281,7 @@ contract('TxRelay', (accounts) => { //Wrong sender tries to send transaction await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: notSender}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "Should have thrown") + assert.match(e.message, /invalid opcode/, "Should have thrown") errorThrown = true; } assert.isTrue(errorThrown, "Has thrown an error") @@ -304,7 +304,7 @@ contract('TxRelay', (accounts) => { await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender, value: 1}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "Should have thrown") + assert.match(e.message, /Cannot send value to non-payable function/, "Should have thrown") errorThrown = true; } assert.isTrue(errorThrown, "Should have thrown an error") @@ -331,7 +331,7 @@ contract('TxRelay', (accounts) => { //Relayer tries to relay the same transaction twice await txRelay.relayMetaTx(p.v, p.r, p.s, p.dest, p.data, {from: sender}) } catch (e) { - assert.match(e.message, /invalid JUMP/, "should have thrown") + assert.match(e.message, /invalid opcode/, "should have thrown") errorThrown = true } assert.isTrue(errorThrown, "Should have thrown") diff --git a/yarn.lock b/yarn.lock index 3d41998..48d8fba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,54 +2,16 @@ # yarn lockfile v1 -"@types/mkdirp@^0.3.29": - version "0.3.29" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" - -"@types/node@^6", "@types/node@^6.0.45": - version "6.0.70" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.70.tgz#f6e04b859205ee3611849921f09819701dbfa5e8" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - abstract-leveldown@2.4.1, abstract-leveldown@~2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz#b3bfedb884eb693a12775f0c55e9f0a420ccee64" dependencies: xtend "~4.0.0" -accept@2.x.x: - version "2.1.3" - resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.3.tgz#ab0f5bda4c449bbe926aea607b3522562f5acf86" - dependencies: - boom "4.x.x" - hoek "4.x.x" - -accepts@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - -acorn@^1.0.3: - version "1.2.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" - -adm-zip@~0.4.3: - version "0.4.7" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" - aes-js@^0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - ajv@^4.9.1: version "4.11.7" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" @@ -57,23 +19,6 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ammo@2.x.x: - version "2.0.3" - resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.3.tgz#914bbcf65b043ed0f58a8a9d0196e250ec51e6a7" - dependencies: - boom "4.x.x" - hoek "4.x.x" - -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" - dependencies: - string-width "^1.0.1" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -82,13 +27,6 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" @@ -100,59 +38,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" - -asn1.js@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-1.0.3.tgz#281ba3ec1f2448fe765f92a4eecf883fe1364b54" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - optionalDependencies: - bn.js "^1.0.0" - -asn1.js@^4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -165,14 +50,6 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - async-eventemitter@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.2.tgz#5a77976b59dbcffc3b7156f866038cf6b445dcf4" @@ -183,7 +60,7 @@ async@^1.4.2, async@^1.5.2, async@~1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.3.0: +async@^2.1.2: version "2.3.0" resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" dependencies: @@ -205,31 +82,6 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -b64@3.x.x: - version "3.0.2" - resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.2.tgz#7a9d60466adf7b8de114cbdf651a5fdfcc90894d" - -babel-cli@*: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - babel-code-frame@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" @@ -238,43 +90,6 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.24.1" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - babel-helper-bindify-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" @@ -386,13 +201,6 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -668,15 +476,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-es2015@*, babel-preset-es2015@^6.24.1: +babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" dependencies: @@ -724,18 +524,6 @@ babel-preset-stage-3@^6.24.1: babel-plugin-transform-exponentiation-operator "^6.24.1" babel-plugin-transform-object-rest-spread "^6.22.0" -babel-register@*, babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - babel-runtime@^6.18.0, babel-runtime@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" @@ -780,54 +568,24 @@ babylon@^6.11.0, babylon@^6.15.0: version "6.17.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -base-x@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.0.tgz#77b56f0311070b780b3c8a5f534beac47e506702" - base-x@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-1.1.0.tgz#42d3d717474f9ea02207f6d1aa1f426913eeb7ac" -base-x@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-2.0.5.tgz#11967f90b42995cfdb5f50a1be499d7675db4fce" - -base32.js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" dependencies: tweetnacl "^0.14.3" -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - bignumber.js@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.0.2.tgz#2d1dc37ee5968867ecea90b6da4d16e68608d21d" @@ -849,14 +607,6 @@ bignumber.js@~2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.1.4.tgz#29b3bb693dbb238e88b72eac2fb89650888b2d59" -bignumber.js@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-3.0.1.tgz#807652d10e39de37e9e3497247edc798bb746f76" - -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - bindings@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" @@ -892,31 +642,17 @@ bitcore-mnemonic@^1.2.2: bitcore-lib "^0.14.0" unorm "^1.3.3" -bl@^1.0.0, bl@^1.1.2: +bl@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" dependencies: readable-stream "^2.0.5" -blakejs@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.0.1.tgz#ae54b631fb4ab820c4f7a226a4b430a95f87065e" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.4.1, bluebird@^3.5.0: +bluebird@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" -bn.js@4.11.6, bn.js@^4.0.0, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: +bn.js@4.11.6, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" @@ -924,45 +660,12 @@ bn.js@=2.0.4, bn.js@^2.0.0, bn.js@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.0.4.tgz#220a7cd677f7f1bfa93627ff4193776fe7819480" -bn.js@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-1.3.0.tgz#0db4cbf96f8f23b742f5bcb9d1aa7a9994a05e83" - boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" dependencies: hoek "2.x.x" -boom@4.x.x, boom@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -borc@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.0.2.tgz#8eae1a4d599cfdfdfc9fa857cbba69c90e83291f" - dependencies: - bignumber.js "~3.0.0" - commander "^2.9" - ieee754 "^1.1.8" - json-text-sequence "^0.1" - -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" - brace-expansion@^1.0.0: version "1.1.7" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" @@ -970,23 +673,6 @@ brace-expansion@^1.0.0: balanced-match "^0.4.1" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -brfs@^1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.4.3.tgz#db675d6f5e923e6df087fca5859c9090aaed3216" - dependencies: - quote-stream "^1.0.1" - resolve "^1.1.5" - static-module "^1.1.0" - through2 "^2.0.0" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1005,24 +691,12 @@ browserify-aes@^1.0.6: evp_bytestokey "^1.0.0" inherits "^2.0.1" -browserify-sha3@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.2.tgz#256cccc7ed972c4a80eb499c82aacccbee6c0a45" - dependencies: - js-sha3 "^0.5.1" - browserify-sha3@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.1.tgz#3ff34a3006ef15c0fb3567e541b91a2340123d11" dependencies: js-sha3 "^0.3.1" -browserify-zlib-next@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-zlib-next/-/browserify-zlib-next-1.0.1.tgz#880403868b4f6262f0f3eacf04699abf9f076f9f" - dependencies: - pako "~1.0.4" - bs58@=2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.0.tgz#72b713bed223a0ac518bbda0e3ce3f4817f39eb5" @@ -1031,18 +705,12 @@ bs58@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" -bs58@^3.0.0, bs58@^3.1.0: +bs58@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-3.1.0.tgz#d4c26388bf4804cac714141b1945aa47e5eb248e" dependencies: base-x "^1.1.0" -bs58@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.0.tgz#65f5deaf6d74e6135a99f763ca6209ab424b9172" - dependencies: - base-x "^2.0.1" - bs58check@^1.0.8: version "1.3.4" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-1.3.4.tgz#c52540073749117714fa042c3047eb8f9151cbf8" @@ -1054,14 +722,6 @@ buffer-compare@=1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.0.0.tgz#acaa7a966e98eee9fae14b31c39a5f158fb3c4a2" -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" - -buffer-loader@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-loader/-/buffer-loader-0.0.1.tgz#4d677ca92dd889310878b02a2fbcfab712024cf2" - buffer-shims@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" @@ -1082,64 +742,19 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -call@3.x.x: - version "3.0.4" - resolved "https://registry.yarnpkg.com/call/-/call-3.0.4.tgz#e380f2f2a491330aa79085355f8be080877d559e" - dependencies: - boom "4.x.x" - hoek "4.x.x" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - camelcase@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -catbox-memory@2.x.x: - version "2.0.4" - resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" - dependencies: - hoek "4.x.x" - -catbox@7.x.x: - version "7.1.3" - resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.3.tgz#9817edec5a921743282addfc9c45ace52847eebb" - dependencies: - boom "4.x.x" - hoek "4.x.x" - joi "10.x.x" - -chai@^3.3.0, chai@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" - dependencies: - assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" - -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1155,59 +770,16 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" -chokidar@^1.4.2, chokidar@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" -cids@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.2.0.tgz#0a79f621c34eb3ff9c3be505fda2b809710847fc" - dependencies: - multibase "^0.2.0" - multicodec "0.1.0" - multihashes "^0.2.2" - -cids@^0.3.4: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.3.6.tgz#a0a3a2c386105a92ecd9c8a2f2239beb2f544c15" - dependencies: - multibase "^0.3.0" - multicodec "^0.1.3" - multihashes "^0.3.1" - -cids@^0.4.0, cids@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.4.2.tgz#f1414e78fa466fe97a7ce9cd6c03892993bef307" - dependencies: - multibase "~0.3.4" - multicodec "~0.1.7" - multihashes "~0.4.4" - cipher-base@^1.0.0, cipher-base@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" dependencies: inherits "^2.0.1" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -1235,98 +807,26 @@ coinstring@^2.0.0: bs58 "^2.0.1" create-hash "^1.1.1" -colors@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" dependencies: delayed-stream "~1.0.0" -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - -commander@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" - -commander@2.9.0, commander@^2.8.1, commander@^2.9: +commander@2.9.0, commander@^2.8.1: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: graceful-readlink ">= 1.0.0" -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@~1.4.5: - version "1.4.10" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36" - dependencies: - inherits "~2.0.1" - readable-stream "~1.1.9" - typedarray "~0.0.5" - -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -content@3.x.x, content@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/content/-/content-3.0.3.tgz#000f8a01371b95c66afe99be9390fa6cb91aa87a" - dependencies: - boom "4.x.x" - -convert-source-map@^1.1.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" @@ -1335,20 +835,6 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cpr@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/cpr/-/cpr-0.4.3.tgz#0a23e4b6ec23f3b8cc7a405ecb5cfdc778f7de25" - dependencies: - graceful-fs "~4.1.2" - mkdirp "~0.5.0" - rimraf "~2.4.3" - -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" @@ -1371,12 +857,6 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" -cryptiles@3.x.x: - version "3.1.1" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.1.tgz#86a9203f7367a0e9324bc7555ff0fcf5f81979ee" - dependencies: - boom "4.x.x" - crypto-js@^3.1.4, crypto-js@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" @@ -1391,40 +871,22 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@2.2.0, debug@^2.2.0, debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - -debug@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" dependencies: ms "0.7.2" -debug@^2.1.0, debug@^2.1.1, debug@^2.3.2, debug@^2.3.3, debug@^2.6.3: - version "2.6.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" +debug@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: - ms "0.7.3" + ms "0.7.1" decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - dependencies: - type-detect "0.1.1" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1450,18 +912,6 @@ defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" -del@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1470,53 +920,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - -dexie@^1.4.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dexie/-/dexie-1.5.1.tgz#ac3ad5a0ebaf7e6e42760db58710418d4a756624" - -dicer@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" - dependencies: - readable-stream "1.1.x" - streamsearch "0.1.2" - -diff@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -1525,28 +936,12 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -duplexer2@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - elliptic@=3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-3.0.3.tgz#865c9b420bfbe55006b9f969f97a0d2c44966595" @@ -1577,10 +972,6 @@ elliptic@^6.2.3, elliptic@^6.3.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1593,45 +984,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" - -engine.io@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.2" - errno@~0.1.1: version "0.1.4" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" @@ -1661,69 +1013,18 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" - escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@~0.0.24: - version "0.0.28" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-0.0.28.tgz#0e4ff1715f328775d6cab51ac44a406cd7abffd3" - dependencies: - esprima "~1.0.2" - estraverse "~1.3.0" - optionalDependencies: - source-map ">= 0.1.2" - -escodegen@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" - dependencies: - esprima "~1.1.1" - estraverse "~1.5.0" - esutils "~1.0.0" - optionalDependencies: - source-map "~0.1.33" - -esprima@~1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" - -esprima@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" - estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -estraverse@~1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.3.2.tgz#37c2b893ef13d723f276d878d60d8535152a6c42" - -estraverse@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -esutils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" - -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - eth-lightwallet@^2.5.6: version "2.5.6" resolved "https://registry.yarnpkg.com/eth-lightwallet/-/eth-lightwallet-2.5.6.tgz#6f10f134ca97531e4f03a194008d314322500c13" @@ -1895,91 +1196,12 @@ ethjs-util@^0.1.3: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -ethpm-registry@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethpm-registry/-/ethpm-registry-0.0.8.tgz#9d94d08aa254e1502a074416d8c03d6f4cd065d3" - dependencies: - fs-extra "^2.0.0" - left-pad "^1.1.3" - semver "^5.3.0" - solidity-sha3 "^0.4.1" - truffle beta - truffle-artifactor "^2.1.2" - truffle-contract "^1.1.6" - web3 "^0.18.2" - yargs "^6.6.0" - -ethpm-registry@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/ethpm-registry/-/ethpm-registry-0.0.9.tgz#b76159a45cde351decbd21bf83be5bf7edfb14c1" - dependencies: - fs-extra "^2.0.0" - left-pad "^1.1.3" - semver "^5.3.0" - solidity-sha3 "^0.4.1" - truffle-artifactor "^2.1.2" - truffle-contract "^1.1.6" - web3 "^0.18.2" - -ethpm-spec@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ethpm-spec/-/ethpm-spec-1.0.1.tgz#ad3c09ae0492ad3d3ec7b94b7f5fd8057d4deb91" - dependencies: - json-schema-to-markdown "^1.0.3" - -ethpm@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/ethpm/-/ethpm-0.0.10.tgz#ce7ed7ed1955e9c3bfa2e47a905118a27ad66cc4" - dependencies: - async "^2.1.2" - ethpm-spec "^1.0.0" - fs-extra "^1.0.0" - glob "^7.1.1" - ipfs "^0.18.0" - ipfs-api "^11.1.0" - jsonschema "^1.1.1" - lodash "^4.17.1" - node-dir "^0.1.16" - promisify-node "^0.4.0" - semver "^5.3.0" - wget-improved "^1.4.0" - -ethpm@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/ethpm/-/ethpm-0.0.9.tgz#4af5b993b8c2f5e194fb2b609a134497442b2e3a" - dependencies: - async "^2.1.2" - ethpm-spec "^1.0.0" - fs-extra "^1.0.0" - glob "^7.1.1" - ipfs "^0.18.0" - ipfs-api "^11.1.0" - jsonschema "^1.1.1" - lodash "^4.17.1" - node-dir "^0.1.16" - promisify-node "^0.4.0" - semver "^5.3.0" - wget-improved "^1.4.0" - yargs "^6.4.0" - evp_bytestokey@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" dependencies: create-hash "^1.1.1" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - expand-template@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.0.3.tgz#6c303323177a62b1b22c070279f7861287b69b1a" @@ -1988,12 +1210,6 @@ extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" @@ -2004,42 +1220,6 @@ fake-merkle-patricia-tree@^1.0.1, fake-merkle-patricia-tree@~1.0.1: dependencies: checkpoint-store "^1.1.0" -falafel@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-1.2.0.tgz#c18d24ef5091174a497f318cd24b026a25cddab4" - dependencies: - acorn "^1.0.3" - foreach "^2.0.5" - isarray "0.0.1" - object-keys "^1.0.6" - -filename-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - -finalhandler@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.1.tgz#85a17c6c59a94717d262d61230d4b0ebe3d4a14d" - dependencies: - debug "~2.2.0" - escape-html "~1.0.3" - on-finished "~2.3.0" - unpipe "~1.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2047,32 +1227,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -flatmap@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" - for-each@^0.3.2, for-each@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" dependencies: is-function "~1.0.0" -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -2089,19 +1249,6 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - -fs-extra@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -2112,63 +1259,10 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - -fs-pull-blob-store@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fs-pull-blob-store/-/fs-pull-blob-store-0.3.0.tgz#b489757b4445cdca8e2eab35a9744a44f3453b16" - dependencies: - mkdirp "^0.5.1" - pull-defer "^0.2.2" - pull-file "^0.5.0" - pull-stream "^3.4.3" - pull-write-file "^0.2.1" - -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.0.2, function-bind@^1.1.0, function-bind@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" @@ -2190,20 +1284,6 @@ gauge@~2.7.1: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-browser-rtc@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" - get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -2214,42 +1294,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -github-download@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/github-download/-/github-download-0.5.0.tgz#f7647a70aac4326fb091e5786c8f66ae157da51b" - dependencies: - adm-zip "~0.4.3" - fs-extra "^0.24.0" - request "^2.12.0" - vcsurl "~0.1.0" - github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - dependencies: - inherits "2" - minimatch "0.3" - -glob@7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" +glob@7.1.1, glob@~7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2268,17 +1319,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -2290,38 +1330,7 @@ globals@^9.0.0: version "9.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.2: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2329,43 +1338,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -graphlib@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.1.tgz#42352c52ba2f4d035cb566eb91f7395f76ebc951" - dependencies: - lodash "^4.11.1" - growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" -hapi-set-header@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hapi-set-header/-/hapi-set-header-1.0.2.tgz#2afae002c6719d6d54f3fa88462f822892d2df13" - -hapi@^15.0.3, hapi@^15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/hapi/-/hapi-15.2.0.tgz#5704ca2c04b6386c03caf9ee901f1de080316d23" - dependencies: - accept "2.x.x" - ammo "2.x.x" - boom "4.x.x" - call "3.x.x" - catbox "7.x.x" - catbox-memory "2.x.x" - cryptiles "3.x.x" - heavy "4.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "9.x.x" - mimos "3.x.x" - podium "^1.2.x" - shot "3.x.x" - statehood "5.x.x" - subtext "^4.3.x" - topo "2.x.x" - har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -2383,16 +1359,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" - dependencies: - isarray "0.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -2401,7 +1367,7 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -has@^1.0.0, has@^1.0.1, has@~1.0.1: +has@^1.0.1, has@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" dependencies: @@ -2429,18 +1395,10 @@ hdkey@^0.7.0: coinstring "^2.0.0" secp256k1 "^3.0.1" -heap@^0.2.6, heap@~0.2.6: +heap@~0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" -heavy@4.x.x: - version "4.0.3" - resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.3.tgz#976bba118b011b15fe904aa4f292a168bfc6232f" - dependencies: - boom "4.x.x" - hoek "4.x.x" - joi "10.x.x" - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2453,39 +1411,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -hoek@4.x.x: - version "4.1.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.1.1.tgz#9cc573ffba2b7b408fb5e9c2a13796be94cddce9" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4: version "2.4.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -2498,18 +1427,7 @@ iconv-lite@~0.4.13: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" -idb-pull-blob-store@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/idb-pull-blob-store/-/idb-pull-blob-store-0.5.1.tgz#9c13f9f10eb05aa3a9f20ef571513c47579f75d4" - dependencies: - dexie "^1.4.2" - pull-defer "^0.2.2" - pull-pushable "^2.0.1" - pull-window "^2.1.4" - pull-write "^1.0.2" - typedarray-to-buffer "^3.1.2" - -ieee754@^1.1.4, ieee754@^1.1.8: +ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -2517,14 +1435,6 @@ immediate@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2532,7 +1442,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2544,22 +1454,6 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -interface-connection@^0.3.0, interface-connection@~0.3.1, interface-connection@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/interface-connection/-/interface-connection-0.3.2.tgz#e4949883f6ea79fb7edd01ee3f4fca47a29fd2c4" - dependencies: - pull-defer "~0.2.2" - timed-tape "~0.1.1" - -interface-pull-blob-store@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/interface-pull-blob-store/-/interface-pull-blob-store-0.6.0.tgz#d4ca38bfa634d22c00f631c900d8939f33c85eb3" - dependencies: - chai "^3.5.0" - pull-stream "^3.4.3" - pull-write "^1.0.2" - run-series "^1.1.4" - invariant@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" @@ -2570,280 +1464,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ip-address@^5.8.6: - version "5.8.8" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-5.8.8.tgz#5fd1f8f7465249fb7d2b3c1eec7b41d29d1f1b76" - dependencies: - jsbn "0.1.0" - lodash.find "^4.6.0" - lodash.max "^4.0.1" - lodash.merge "^4.6.0" - lodash.padstart "^4.6.1" - lodash.repeat "^4.1.0" - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -ipfs-api@^11.1.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/ipfs-api/-/ipfs-api-11.2.0.tgz#06529d07e8025082b34bd87a05fc7167989fec98" - dependencies: - async "^2.1.2" - bl "^1.1.2" - bs58 "^3.0.0" - concat-stream "^1.5.2" - detect-node "^2.0.3" - flatmap "0.0.3" - glob "^7.1.1" - ipfs-block "^0.5.0" - ipld-dag-pb "^0.9.0" - is-ipfs "^0.2.1" - isstream "^0.1.2" - lru-cache "^4.0.1" - multiaddr "^2.0.3" - multipart-stream "^2.0.1" - ndjson "^1.4.3" - once "^1.4.0" - peer-id "^0.8.0" - peer-info "^0.8.0" - promisify-es6 "^1.0.2" - qs "^6.3.0" - readable-stream "^1.1.14" - stream-http "^2.5.0" - streamifier "^0.1.1" - tar-stream "^1.5.2" - -ipfs-bitswap@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/ipfs-bitswap/-/ipfs-bitswap-0.8.3.tgz#3545d91011d3562a8ccf878fc787e3b7bb55e7e3" - dependencies: - async "^2.1.4" - cids "^0.3.4" - debug "^2.3.3" - heap "^0.2.6" - ipfs-block "^0.5.3" - lodash.debounce "^4.0.8" - lodash.isequalwith "^4.4.0" - lodash.isundefined "^3.0.1" - multihashes "^0.3.0" - protocol-buffers "^3.2.1" - pull-defer "^0.2.2" - pull-length-prefixed "^1.2.0" - pull-paramap "^1.2.1" - pull-pushable "^2.0.1" - pull-stream "^3.5.0" - -ipfs-block-service@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/ipfs-block-service/-/ipfs-block-service-0.6.0.tgz#e537a4624eb006587f6e61a06bc1750eae4cb74a" - dependencies: - cids "^0.2.0" - pull-stream "^3.4.5" - run-parallel-limit "^1.0.3" - -ipfs-block-service@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ipfs-block-service/-/ipfs-block-service-0.7.2.tgz#18592cf14819391d0dc7a1fdb3be6201d3c6fee2" - dependencies: - async "^2.1.4" - cids "^0.3.4" - -ipfs-block@^0.5.0, ipfs-block@^0.5.3, ipfs-block@~0.5.4, ipfs-block@~0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.5.5.tgz#956a4d1a758c2574fb5362634655ccfa1c0ebd24" - dependencies: - async "^2.1.4" - multihashing-async "~0.4.2" - -ipfs-multipart@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ipfs-multipart/-/ipfs-multipart-0.1.0.tgz#5a8ed13f42e82d8bef7d2e151d8eaf5e3a30e3ea" - dependencies: - content "^3.0.0" - dicer "^0.2.5" - -ipfs-repo@^0.11.0, ipfs-repo@^0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/ipfs-repo/-/ipfs-repo-0.11.3.tgz#eb9219fa0909559cf72c0ccb6549e208a8087a4a" - dependencies: - async "^2.1.4" - base32.js "^0.1.0" - ipfs-block "~0.5.5" - lock "^0.1.3" - multihashes "~0.3.3" - pull-defer "^0.2.2" - pull-stream "^3.5.0" - pull-write "^1.1.1" - safe-buffer "^5.0.1" - -ipfs-unixfs-engine@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.13.0.tgz#4600434e4872c5588daf2c4e04ebcf519d7f3f8a" - dependencies: - async "^2.1.2" - cids "^0.2.0" - ipfs-unixfs "^0.1.5" - ipld-dag-pb "^0.8.0" - ipld-resolver "^0.2.0" - is-ipfs "^0.2.1" - multihashes "^0.2.2" - pull-block "^1.0.2" - pull-paramap "^1.2.0" - pull-pushable "^2.0.1" - pull-stream "^3.5.0" - pull-traverse "^1.0.3" - pull-write "^1.1.1" - -ipfs-unixfs@^0.1.5: - version "0.1.11" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-0.1.11.tgz#4597ea60d3a4c51ed3e05da107e0473b01844bd4" - dependencies: - protocol-buffers "^3.2.1" - -ipfs@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/ipfs/-/ipfs-0.18.0.tgz#8a1254bbbd1e9cb3f77fc6c66aee856b566a9189" - dependencies: - async "^2.1.2" - bl "^1.1.2" - boom "^4.2.0" - debug "^2.3.2" - fs-pull-blob-store "^0.3.0" - glob "^7.1.1" - hapi "^15.2.0" - hapi-set-header "^1.0.2" - idb-pull-blob-store "^0.5.1" - ipfs-api "^11.1.0" - ipfs-bitswap "^0.8.1" - ipfs-block "^0.5.0" - ipfs-block-service "^0.7.0" - ipfs-multipart "^0.1.0" - ipfs-repo "^0.11.1" - ipfs-unixfs "^0.1.5" - ipfs-unixfs-engine "^0.13.0" - ipld-resolver "^0.2.0" - isstream "^0.1.2" - joi "^9.2.0" - libp2p-ipfs "^0.15.0" - libp2p-ipfs-browser "^0.16.0" - lodash.flatmap "^4.5.0" - lodash.get "^4.4.2" - lodash.has "^4.5.2" - lodash.set "^4.3.2" - lodash.sortby "^4.7.0" - lodash.values "^4.3.0" - mafmt "^2.1.2" - multiaddr "^2.0.3" - multihashes "^0.2.2" - path-exists "^3.0.0" - peer-book "^0.3.0" - peer-id "^0.8.0" - peer-info "^0.8.0" - promisify-es6 "^1.0.2" - pull-file "^1.0.0" - pull-paramap "^1.2.1" - pull-pushable "^2.0.1" - pull-sort "^1.0.0" - pull-stream "^3.5.0" - pull-stream-to-stream "^1.3.3" - pull-zip "^2.0.1" - read-pkg-up "^2.0.0" - readable-stream "^1.1.14" - stream-to-pull-stream "^1.7.2" - tar-stream "^1.5.2" - temp "^0.8.3" - through2 "^2.0.1" - update-notifier "^1.0.2" - yargs "^6.3.0" - -ipld-dag-cbor@^0.8.0: - version "0.8.6" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.8.6.tgz#a0a93f4f54db6b26200edb17dd50be1fdbbbd5d6" - dependencies: - async "^2.1.4" - borc "^2.0.2" - bs58 "^4.0.0" - cids "^0.4.0" - is-circular "^1.0.1" - multihashes "^0.3.2" - multihashing-async "^0.4.0" - traverse "^0.6.6" - -ipld-dag-pb@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.8.0.tgz#8ee35f2c681c6ac046300e8c81cc1ad9b840c4e2" - dependencies: - async "^2.1.2" - cids "^0.2.0" - ipfs-block "^0.5.0" - is-ipfs "^0.2.1" - multihashes "^0.2.2" - multihashing-async "^0.2.0" - protocol-buffers "^3.1.6" - pull-stream "^3.5.0" - pull-traverse "^1.0.3" - stable "^0.1.5" - -ipld-dag-pb@^0.9.0: - version "0.9.5" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.9.5.tgz#e8c7dc61a4dd83a8658735559264ee4fedd8b635" - dependencies: - async "^2.1.4" - buffer-loader "0.0.1" - cids "~0.4.1" - ipfs-block "~0.5.4" - is-ipfs "~0.3.0" - multihashes "~0.3.3" - multihashing-async "~0.4.2" - protocol-buffers "^3.2.1" - pull-stream "^3.5.0" - pull-traverse "^1.0.3" - stable "^0.1.5" - -ipld-resolver@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ipld-resolver/-/ipld-resolver-0.2.0.tgz#d278ed72a43a98a96df6119e543e512d6e25d1a2" - dependencies: - async "^2.1.2" - cids "^0.2.0" - interface-pull-blob-store "^0.6.0" - ipfs-block "^0.5.0" - ipfs-block-service "^0.6.0" - ipfs-repo "^0.11.0" - ipld-dag-cbor "^0.8.0" - ipld-dag-pb "^0.8.0" - is-ipfs "^0.2.1" - lodash.flatten "^4.4.0" - lodash.includes "^4.3.0" - multihashes "^0.2.2" - pull-stream "^3.5.0" - pull-traverse "^1.0.3" - -iron@4.x.x: - version "4.0.4" - resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.4.tgz#c1f8cc4c91454194ab8920d9247ba882e528061a" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.0.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -2854,38 +1478,10 @@ is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" -is-circular@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.1.tgz#65b0476a8588e546b8087c1d66d4c08d82a31679" - is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -2896,91 +1492,17 @@ is-function@^1.0.1, is-function@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" -is-ipfs@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.2.1.tgz#10357d3fddc7cded4b6ea6cc1da6fe7d8d84b438" - dependencies: - bs58 "^3.0.0" - multihashes "^0.2.0" - -is-ipfs@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.3.0.tgz#c9935f22b19df50a97e7b265f95ade4c291ad395" - dependencies: - bs58 "^4.0.0" - multihashes "^0.3.2" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - is-regex@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: has "^1.0.1" -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.0.1: +is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2988,7 +1510,7 @@ is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -3000,20 +1522,10 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isemail@2.x.x: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - isomorphic-fetch@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -3021,46 +1533,16 @@ isomorphic-fetch@^2.2.0: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" -isstream@^0.1.2, isstream@~0.1.2: +isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -items@2.x.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" - -jade@0.26.3: - version "0.26.3" - resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" - dependencies: - commander "0.6.1" - mkdirp "0.3.0" - jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" dependencies: jsbn "~0.1.0" -joi@10.x.x: - version "10.4.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-10.4.1.tgz#a2fca1f0d603d1b843f2c1e086b52461f6be1f36" - dependencies: - hoek "4.x.x" - isemail "2.x.x" - items "2.x.x" - topo "2.x.x" - -joi@9.x.x, joi@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-9.2.0.tgz#3385ac790192130cbe230e802ec02c9215bbfeda" - dependencies: - hoek "4.x.x" - isemail "2.x.x" - items "2.x.x" - moment "2.x.x" - topo "2.x.x" - js-sha3@0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" @@ -3069,34 +1551,18 @@ js-sha3@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243" -js-sha3@^0.5.1, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -jsbn@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-schema-to-markdown@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/json-schema-to-markdown/-/json-schema-to-markdown-1.0.3.tgz#4411ca222b2b6760e616663f0bb2bd76bb26ebb8" - json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -3107,24 +1573,14 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json-text-sequence@^0.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - dependencies: - delimit-stream "0.1.0" - json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -3135,10 +1591,6 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonschema@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.1.1.tgz#3cede8e3e411d377872eefbc9fdf26383cbc3ed9" - jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -3164,39 +1616,19 @@ keccakjs@^0.2.0: browserify-sha3 "^0.0.1" sha3 "^1.1.0" -keypair@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.1.tgz#7603719270afb6564ed38a22087a06fc9aa4ea1b" - -kind-of@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" - dependencies: - is-buffer "^1.0.2" - klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" optionalDependencies: graceful-fs "^4.1.9" -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: invert-kv "^1.0.0" -left-pad@^1.1.1, left-pad@^1.1.3: +left-pad@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" @@ -3238,162 +1670,6 @@ levelup@^1.2.1: semver "~5.1.0" xtend "~4.0.0" -libp2p-crypto-secp256k1@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.1.4.tgz#211378fe3a859d89ad1203aa9e0d75d686c85bdf" - dependencies: - async "^2.1.4" - libp2p-crypto "~0.8.4" - multihashing-async "~0.4.2" - nodeify "^1.0.0" - safe-buffer "^5.0.1" - secp256k1 "^3.2.5" - -libp2p-crypto@~0.8.4, libp2p-crypto@~0.8.6, libp2p-crypto@~0.8.7: - version "0.8.8" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.8.8.tgz#dc8a49cbcedb5239de977619f2d18df9fc110f39" - dependencies: - asn1.js "^4.9.1" - async "^2.1.5" - browserify-aes "^1.0.6" - keypair "^1.0.1" - libp2p-crypto-secp256k1 "^0.1.4" - multihashing-async "~0.4.4" - nodeify "^1.0.1" - pem-jwk "^1.5.1" - protocol-buffers "^3.2.1" - rsa-pem-to-jwk "^1.1.3" - safe-buffer "^5.0.1" - tweetnacl "^1.0.0-rc.1" - webcrypto-shim "github:dignifiedquire/webcrypto-shim#master" - optionalDependencies: - node-webcrypto-ossl "^1.0.21" - -libp2p-identify@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/libp2p-identify/-/libp2p-identify-0.3.3.tgz#70e6c4d322b9ef475a75ce57b4bb6898adb75f29" - dependencies: - multiaddr "^2.2.2" - peer-id "~0.8.4" - peer-info "~0.8.4" - protocol-buffers "^3.2.1" - pull-length-prefixed "^1.2.0" - pull-stream "^3.5.0" - -libp2p-ipfs-browser@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/libp2p-ipfs-browser/-/libp2p-ipfs-browser-0.16.0.tgz#fcb2c0b0dbca0a1c6175a9218d28f8861939c0f9" - dependencies: - libp2p-secio "^0.6.3" - libp2p-spdy "^0.10.0" - libp2p-swarm "^0.26.1" - libp2p-webrtc-star "^0.5.0" - libp2p-websockets "^0.9.1" - mafmt "^2.1.2" - multiaddr "^2.0.3" - peer-book "^0.3.0" - peer-id "^0.8.0" - peer-info "^0.8.0" - -libp2p-ipfs@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/libp2p-ipfs/-/libp2p-ipfs-0.15.0.tgz#e2cba14185b04ebcf794886f9f48b04c48e390bb" - dependencies: - libp2p-secio "^0.6.2" - libp2p-spdy "^0.10.0" - libp2p-swarm "^0.26.0" - libp2p-tcp "^0.9.1" - libp2p-websockets "^0.9.0" - mafmt "^2.1.2" - multiaddr "^2.0.3" - peer-book "^0.3.0" - peer-id "^0.8.0" - peer-info "^0.8.0" - -libp2p-secio@^0.6.2, libp2p-secio@^0.6.3: - version "0.6.8" - resolved "https://registry.yarnpkg.com/libp2p-secio/-/libp2p-secio-0.6.8.tgz#29a44a7225a0f6149199fcc0bb09772ac915ee03" - dependencies: - async "^2.1.5" - debug "^2.6.3" - interface-connection "~0.3.2" - libp2p-crypto "~0.8.6" - multihashing-async "~0.4.4" - peer-id "~0.8.4" - protocol-buffers "^3.2.1" - pull-defer "^0.2.2" - pull-handshake "^1.1.4" - pull-length-prefixed "^1.2.0" - pull-stream "^3.5.0" - -libp2p-spdy@^0.10.0: - version "0.10.6" - resolved "https://registry.yarnpkg.com/libp2p-spdy/-/libp2p-spdy-0.10.6.tgz#a7c1828d1de61158e2c432f6c2d1dbc8e2538035" - dependencies: - browserify-zlib-next "^1.0.1" - interface-connection "~0.3.2" - lodash.noop "^3.0.1" - pull-stream-to-stream "^1.3.3" - spdy-transport "^2.0.18" - stream-to-pull-stream "^1.7.2" - -libp2p-swarm@^0.26.0, libp2p-swarm@^0.26.1: - version "0.26.19" - resolved "https://registry.yarnpkg.com/libp2p-swarm/-/libp2p-swarm-0.26.19.tgz#305fab108b6ebaeedaa190b1961a2cb0a224f97e" - dependencies: - async "^2.1.5" - browserify-zlib-next "^1.0.1" - debug "^2.6.3" - interface-connection "~0.3.2" - ip-address "^5.8.6" - libp2p-identify "~0.3.3" - lodash.includes "^4.3.0" - multiaddr "^2.2.2" - multistream-select "~0.13.5" - once "^1.4.0" - peer-id "~0.8.4" - peer-info "~0.8.4" - protocol-buffers "^3.2.1" - -libp2p-tcp@^0.9.1: - version "0.9.4" - resolved "https://registry.yarnpkg.com/libp2p-tcp/-/libp2p-tcp-0.9.4.tgz#9c0dc4177d3341e04f9f140bd55a4b8dc68772d8" - dependencies: - interface-connection "~0.3.2" - ip-address "^5.8.6" - lodash.includes "^4.3.0" - lodash.isfunction "^3.0.8" - mafmt "^2.1.6" - multiaddr "^2.2.2" - stream-to-pull-stream "^1.7.2" - -libp2p-webrtc-star@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/libp2p-webrtc-star/-/libp2p-webrtc-star-0.5.0.tgz#3cd1e55495100e4732f5e3fe78aaee28d8d0712a" - dependencies: - async "^2.1.2" - debug "^2.2.0" - hapi "^15.0.3" - interface-connection "^0.3.0" - mafmt "^2.1.0" - minimist "^1.2.0" - peer-id "^0.8.0" - peer-info "^0.8.0" - pull-stream "^3.4.3" - simple-peer "^6.0.4" - socket.io "^1.4.6" - socket.io-client "^1.4.6" - stream-to-pull-stream "^1.7.0" - -libp2p-websockets@^0.9.0, libp2p-websockets@^0.9.1: - version "0.9.6" - resolved "https://registry.yarnpkg.com/libp2p-websockets/-/libp2p-websockets-0.9.6.tgz#1edf2f543a94be1885ca7a56590d16cad567806b" - dependencies: - interface-connection "~0.3.2" - lodash.includes "^4.3.0" - mafmt "^2.1.6" - pull-ws "^3.2.8" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3404,26 +1680,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lock@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/lock/-/lock-0.1.3.tgz#f66c1caa0c41956e1426608039ed59b71bdf1854" - lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -3459,38 +1715,6 @@ lodash.create@3.1.1: lodash._basecreate "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.filter@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - -lodash.find@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - -lodash.flatmap@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - -lodash.has@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -3499,18 +1723,6 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" -lodash.isequalwith@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz#266726ddd528f854f21f4ea98a065606e0fbc6b0" - -lodash.isfunction@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b" - -lodash.isundefined@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" - lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -3519,101 +1731,24 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash.map@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - -lodash.max@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.max/-/lodash.max-4.0.1.tgz#8735566c618b35a9f760520b487ae79658af136a" - -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.noop@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - -lodash.range@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d" - -lodash.repeat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" - -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - -lodash.values@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" - lodash@=3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.11.1, lodash@^4.11.2, lodash@^4.14.0, lodash@^4.17.1, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.5.1: +lodash@^4.14.0, lodash@^4.2.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - -looper@^3.0.0, looper@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - -looper@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-4.0.0.tgz#7706aded59a99edca06e6b54bb86c8ec19c95155" - loose-envify@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: js-tokens "^3.0.0" -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - ltgt@~2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" -mafmt@^2.1.0, mafmt@^2.1.2, mafmt@^2.1.6: - version "2.1.8" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-2.1.8.tgz#d8b7f763be56db62a0343bc5c47d38ab2cbef45e" - dependencies: - multiaddr "^2.2.3" - memdown@^1.0.0: version "1.2.4" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.2.4.tgz#cd9a34aaf074d53445a271108eb4b8dd4ec0f27f" @@ -3641,45 +1776,16 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@~2.1.2: rlp "^2.0.0" semaphore ">=1.0.1" -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@1.x.x, mime-db@~1.27.0: +mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.7: version "2.1.15" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" dependencies: mime-db "~1.27.0" -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -mimos@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" - dependencies: - hoek "4.x.x" - mime-db "1.x.x" - min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -3694,14 +1800,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: +"minimatch@2 || 3", minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -3711,55 +1810,32 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: +minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.1, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mocha@^2.4.5: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" - dependencies: - commander "2.3.0" - debug "2.2.0" - diff "1.4.0" - escape-string-regexp "1.0.2" - glob "3.2.11" - growl "1.9.2" - jade "0.26.3" - mkdirp "0.5.1" - supports-color "1.2.0" - to-iso-string "0.0.2" - -mocha@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3" +mocha@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" dependencies: browser-stdout "1.3.0" commander "2.9.0" - debug "2.2.0" - diff "1.4.0" + debug "2.6.0" + diff "3.2.0" escape-string-regexp "1.0.5" - glob "7.0.5" + glob "7.1.1" growl "1.9.2" json3 "3.3.2" lodash.create "3.1.1" mkdirp "0.5.1" supports-color "3.1.2" -moment@2.x.x: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" - ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -3768,146 +1844,14 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" -ms@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" - -multiaddr@^2.0.3, multiaddr@^2.2.2, multiaddr@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-2.3.0.tgz#56634824f48bcbd8405fd5434c31b277424c62fc" - dependencies: - bs58 "^4.0.0" - ip "^1.1.5" - lodash.filter "^4.6.0" - lodash.map "^4.6.0" - varint "^5.0.0" - xtend "^4.0.1" - -multibase@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.2.0.tgz#8c0f9d5ff33f863dc4722ca7d06dc1dd9e5f006e" - dependencies: - bs58 "^3.0.0" - -multibase@^0.3.0, multibase@~0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.3.4.tgz#fba8b0aac9724f62e24782557e2a062e30d3ae7f" - dependencies: - base-x "3.0.0" - -multicodec@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.1.0.tgz#00067fcc0517d571bec1c6f325d2c987b3a74cc8" - dependencies: - varint "^4.0.1" - -multicodec@^0.1.3, multicodec@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.1.7.tgz#658f2d15f42fa19e66092fe917a051a1bf07e41e" - dependencies: - varint "^5.0.0" - -multihashes@^0.2.0, multihashes@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.2.2.tgz#8ccf2e3ba3d041e1146728de0d8a4da9e8b18251" - dependencies: - bs58 "^3.0.0" - -multihashes@^0.3.0, multihashes@^0.3.1, multihashes@^0.3.2, multihashes@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.3.3.tgz#18d74d8c2393af39aaf0ac8f4fd6d888d43f2f29" - dependencies: - bs58 "^4.0.0" - -multihashes@~0.4.4, multihashes@~0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.5.tgz#9b053c51fdc74d771edde20e1bc91d4bbec3fa69" - dependencies: - bs58 "^4.0.0" - varint "^5.0.0" - -multihashing-async@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.2.0.tgz#8dec195a20fe402cca38e2728d693607d1c5a37b" - dependencies: - browserify-sha3 "0.0.2" - multihashes "^0.2.2" - nodeify "^1.0.0" - sha3 "^1.2.0" - -multihashing-async@^0.4.0, multihashing-async@~0.4.2, multihashing-async@~0.4.4: - version "0.4.5" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.4.5.tgz#e94b408a68c36c393180146e3fad9126108eb6a9" - dependencies: - async "^2.1.5" - blakejs "^1.0.1" - js-sha3 "^0.5.7" - multihashes "~0.4.5" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multipart-stream@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/multipart-stream/-/multipart-stream-2.0.1.tgz#195c9cb4b2c41e78c72a1e8f38c7d0eba1cd0ba0" - dependencies: - inherits "^2.0.1" - is-stream "^1.0.1" - sandwich-stream "^1.0.0" - -multistream-select@~0.13.5: - version "0.13.5" - resolved "https://registry.yarnpkg.com/multistream-select/-/multistream-select-0.13.5.tgz#fe33676202e64619054aeeb45336a881cc9c54e9" - dependencies: - async "^2.1.5" - debug "^2.6.3" - interface-connection "~0.3.1" - lodash.isfunction "^3.0.8" - lodash.range "^3.2.0" - once "^1.4.0" - pull-handshake "^1.1.4" - pull-length-prefixed "^1.2.0" - pull-stream "^3.5.0" - semver "^5.3.0" - varint "^5.0.0" - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - -nan@^2.0.5, nan@^2.0.8, nan@^2.2.1, nan@^2.3.0, nan@^2.5.1: +nan@^2.0.5, nan@^2.0.8, nan@^2.2.1: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" -ndjson@^1.4.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-1.5.0.tgz#ae603b36b134bcec347b452422b0bf98d5832ec8" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^2.1.0" - through2 "^2.0.3" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -nigel@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" - dependencies: - hoek "4.x.x" - vise "2.x.x" - node-abi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.0.0.tgz#443bfd151b599231028ae425e592e76cd31cb537" -node-dir@^0.1.10, node-dir@^0.1.16: - version "0.1.16" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" - dependencies: - minimatch "^3.0.2" - node-fetch@^1.0.1: version "1.6.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" @@ -3936,60 +1880,10 @@ node-plantuml@^0.5.0: node-nailgun-server "^0.1.3" plantuml-encoder "^1.2.4" -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - -node-webcrypto-ossl@^1.0.21: - version "1.0.21" - resolved "https://registry.yarnpkg.com/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.21.tgz#70567a5dc09f36bd78682eb72c7e1437a137b6bf" - dependencies: - "@types/mkdirp" "^0.3.29" - "@types/node" "^6.0.45" - mkdirp "^0.5.1" - nan "^2.5.1" - tslib "^1.5.0" - typescript "^2" - webcrypto-core "^0" - -nodegit-promise@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/nodegit-promise/-/nodegit-promise-4.0.0.tgz#5722b184f2df7327161064a791d2e842c9167b34" - dependencies: - asap "~2.0.3" - -nodeify@^1.0.0, nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" - noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.3.8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" @@ -3999,19 +1893,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npm-programmatic@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/npm-programmatic/-/npm-programmatic-0.0.6.tgz#3c8f4dbb210efd65b99ee6a5ac76f27b4d5d6b78" - dependencies: - bluebird "^3.4.1" - -npmlog@^4.0.1, npmlog@^4.0.2: +npmlog@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" dependencies: @@ -4035,31 +1917,15 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object-inspect@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.4.0.tgz#f5157c116c1455b243b06ee97703392c5ad89fec" - object-inspect@~1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.2.2.tgz#c82115e4fcc888aea14d64c22e4f17f6a70d5e5a" -object-keys@^1.0.6, object-keys@^1.0.8: +object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -4067,40 +1933,17 @@ object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -obuf@^1.0.0, obuf@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - dependencies: - wordwrap "~0.0.2" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" +original-require@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -4110,60 +1953,9 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.3.tgz#5f515b0c6722e1982920ae8005eacb0b7ca73ccf" - -pako@~1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.5.tgz#d2205dfe5b9da8af797e7c163db4d1f84e4600bc" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" +pako@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.3.tgz#5f515b0c6722e1982920ae8005eacb0b7ca73ccf" parse-headers@^2.0.0: version "2.0.1" @@ -4172,52 +1964,22 @@ parse-headers@^2.0.0: for-each "^0.3.2" trim "0.0.1" -parse-json@^2.1.0, parse-json@^2.2.0: +parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: error-ex "^1.2.0" -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" dependencies: pinkie-promise "^2.0.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -4226,65 +1988,16 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - pbkdf2@^3.0.0, pbkdf2@^3.0.3: version "3.0.9" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" dependencies: create-hmac "^1.1.2" -peer-book@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/peer-book/-/peer-book-0.3.2.tgz#2a5f42acb19bbc3170a13aeffb4b3310388feaf4" - dependencies: - bs58 "^4.0.0" - -peer-id@^0.8.0, peer-id@^0.8.5, peer-id@~0.8.4: - version "0.8.7" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.8.7.tgz#c9bd9d1588d4ccce71752a9049afa9f10176a33d" - dependencies: - async "^2.3.0" - libp2p-crypto "~0.8.7" - lodash "^4.17.4" - multihashes "~0.4.5" - -peer-info@^0.8.0, peer-info@~0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.8.5.tgz#b8fbee6376405c04c8b644610cd06231c4262a1e" - dependencies: - lodash.uniqby "^4.7.0" - multiaddr "^2.2.3" - peer-id "^0.8.5" - -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - -pem-jwk@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-1.5.1.tgz#7a8637fd2f67a827e57c0c42e1c23c3fd52cfb01" - dependencies: - asn1.js "1.0.3" - performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" -pez@2.x.x: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.4.tgz#73f822fa62d599d65c4606f490d54d345191bc7c" - dependencies: - b64 "3.x.x" - boom "4.x.x" - content "3.x.x" - hoek "4.x.x" - nigel "2.x.x" - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -4306,14 +2019,6 @@ plantuml-encoder@^1.2.4: pako "1.0.3" utf8-bytes "0.0.1" -podium@^1.2.x: - version "1.2.5" - resolved "https://registry.yarnpkg.com/podium/-/podium-1.2.5.tgz#87c566c2f0365bcf0a1ec7602c4d01948cdd2ad5" - dependencies: - hoek "4.x.x" - items "2.x.x" - joi "10.x.x" - prebuild-install@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.1.2.tgz#d9ae0ca85330e03962d93292f95a8b44c2ebf505" @@ -4333,14 +2038,6 @@ prebuild-install@^2.0.0: tunnel-agent "^0.4.3" xtend "4.0.1" -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -4353,38 +2050,6 @@ process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - dependencies: - is-promise "~1" - -promisify-es6@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.2.tgz#63093553e39be5036d757b455fb93d155da4b589" - -promisify-node@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/promisify-node/-/promisify-node-0.4.0.tgz#32803874ec411784e4786c339902a87a179a469c" - dependencies: - nodegit-promise "~4.0.0" - object-assign "^4.0.1" - -protocol-buffers-schema@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.0.tgz#141271d96c718f2c810847f158c991f5bca9e321" - -protocol-buffers@^3.1.6, protocol-buffers@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/protocol-buffers/-/protocol-buffers-3.2.1.tgz#37258e17e24a082f06ebb17731e92851d1c76889" - dependencies: - brfs "^1.4.0" - generate-function "^2.0.0" - generate-object-property "^1.2.0" - protocol-buffers-schema "^3.1.1" - signed-varint "^2.0.0" - varint "^5.0.0" - prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -4393,128 +2058,6 @@ prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -pull-block@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pull-block/-/pull-block-1.2.0.tgz#e3947f0a83426e847ecececb0b9ba308b019b3e1" - dependencies: - pull-through "^1.0.18" - safe-buffer "^5.0.1" - -pull-cat@^1.1.11, pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - -pull-defer@^0.2.2, pull-defer@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.2.tgz#0887b0ffb30af32a56dbecfa72c1672271f07b13" - -pull-file@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pull-file/-/pull-file-0.5.0.tgz#b3ca405306e082f9d4528288933badb2b656365b" - dependencies: - pull-utf8-decoder "^1.0.2" - -pull-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pull-file/-/pull-file-1.0.0.tgz#5a0cb036d78ee10e3e0b4293dfcf6effa1036318" - dependencies: - pull-utf8-decoder "^1.0.2" - -pull-handshake@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/pull-handshake/-/pull-handshake-1.1.4.tgz#6000a0fd018884cdfd737254f8cc60ab2a637791" - dependencies: - pull-cat "^1.1.9" - pull-pair "~1.1.0" - pull-pushable "^2.0.0" - pull-reader "^1.2.3" - -pull-length-prefixed@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pull-length-prefixed/-/pull-length-prefixed-1.2.1.tgz#fa00ca142a85f347a91d6c12da416ef5659897dc" - dependencies: - pull-pushable "^2.0.1" - pull-reader "^1.2.9" - safe-buffer "^5.0.1" - varint "^5.0.0" - -pull-pair@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pull-pair/-/pull-pair-1.1.0.tgz#7ee427263fdf4da825397ac0a05e1ab4b74bd76d" - -pull-paramap@^1.2.0, pull-paramap@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/pull-paramap/-/pull-paramap-1.2.2.tgz#51a4193ce9c8d7215d95adad45e2bcdb8493b23a" - dependencies: - looper "^4.0.0" - -pull-pushable@^2.0.0, pull-pushable@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.0.1.tgz#02bdca51a39cf585f483fbecde2fc9378076f212" - -pull-reader@^1.2.3, pull-reader@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/pull-reader/-/pull-reader-1.2.9.tgz#d2e9ad00bcfb54e62aa66d42c2dbbcb5eb6843b0" - -pull-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pull-sort/-/pull-sort-1.0.0.tgz#0e39fb9a38e54175befe418eaba21223f2c0e705" - -pull-stream-to-stream@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/pull-stream-to-stream/-/pull-stream-to-stream-1.3.4.tgz#3f81d8216bd18d2bfd1a198190471180e2738399" - -pull-stream@^3.2.3, pull-stream@^3.4.3, pull-stream@^3.4.5, pull-stream@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.5.0.tgz#1ee5b6f76fd3b3a49a5afb6ded5c0320acb3cfc7" - -pull-through@^1.0.18: - version "1.0.18" - resolved "https://registry.yarnpkg.com/pull-through/-/pull-through-1.0.18.tgz#8dd62314263e59cf5096eafbb127a2b6ef310735" - dependencies: - looper "~3.0.0" - -pull-traverse@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pull-traverse/-/pull-traverse-1.0.3.tgz#74fb5d7be7fa6bd7a78e97933e199b7945866938" - -pull-utf8-decoder@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz#a7afa2384d1e6415a5d602054126cc8de3bcbce7" - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - dependencies: - looper "^2.0.0" - -pull-write-file@^0.2.1: - version "0.2.4" - resolved "https://registry.yarnpkg.com/pull-write-file/-/pull-write-file-0.2.4.tgz#437344aeb2189f65e678ed1af37f0f760a5453ef" - -pull-write@^1.0.2, pull-write@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pull-write/-/pull-write-1.1.2.tgz#60274aa478f8c827710b92095325331ab175fdd2" - dependencies: - looper "^4.0.0" - pull-cat "^1.1.11" - pull-stream "^3.4.5" - -pull-ws@^3.2.8: - version "3.2.9" - resolved "https://registry.yarnpkg.com/pull-ws/-/pull-ws-3.2.9.tgz#8a90502a41d9058fcb3096ad4823a0f189d613ba" - dependencies: - relative-url "^1.0.2" - ws "^1.1.0" - -pull-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pull-zip/-/pull-zip-2.0.1.tgz#e0641ceaff964af27596daac0700e79b381028f5" - pump@^1.0.0, pump@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" @@ -4526,41 +2069,15 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -qs@^6.3.0, qs@~6.4.0: +qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" -quote-stream@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" - dependencies: - buffer-equal "0.0.1" - minimist "^1.1.3" - through2 "^2.0.0" - -quote-stream@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-0.0.0.tgz#cde29e94c409b16e19dc7098b89b6658f9721d3b" - dependencies: - minimist "0.0.8" - through2 "~0.4.1" - -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -randombytes@^2.0.1, randombytes@^2.0.3: +randombytes@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.1.6: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" dependencies: @@ -4569,13 +2086,6 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -4583,13 +2093,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -4598,24 +2101,16 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@1.1.x, readable-stream@^1.0.33, readable-stream@^1.1.14, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" +readable-stream@^1.0.33, readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: core-util-is "~1.0.0" inherits "~2.0.1" isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6: version "2.2.9" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" dependencies: @@ -4627,24 +2122,6 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.0" util-deprecate "~1.0.1" -readable-stream@~1.0.15, readable-stream@~1.0.17, readable-stream@~1.0.27-1: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -4661,13 +2138,6 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -4676,18 +2146,6 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -registry-auth-token@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.2.0.tgz#5bf3bd4608a2dd9242542c44d66ad8a5f9cdd3b0" - dependencies: - rc "^1.1.6" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -4698,29 +2156,7 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -relative-url@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/relative-url/-/relative-url-1.0.2.tgz#d21c52a72d6061018bcee9f9c9fc106bf7d65287" - -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@^2.12.0, request@^2.67.0, request@^2.81.0: +request@^2.67.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -4759,11 +2195,7 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-nocache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/require-nocache/-/require-nocache-1.0.0.tgz#a665d0b60a07e8249875790a4d350219d3c85fa3" - -resolve@^1.1.5, resolve@~1.1.7: +resolve@~1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -4773,22 +2205,12 @@ resumer@~0.0.0: dependencies: through "~2.3.4" -rimraf@2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -rimraf@^2.2.8, rimraf@~2.4.3: +rimraf@^2.2.8: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" dependencies: glob "^6.0.1" -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - ripemd160@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" @@ -4797,35 +2219,10 @@ rlp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0" -rsa-pem-to-jwk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" - dependencies: - object-assign "^2.0.0" - rsa-unpack "0.0.6" - -rsa-unpack@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" - dependencies: - optimist "~0.3.5" - -run-parallel-limit@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.3.tgz#6c3930cc7c0b47d35ae7420109f660aade2401e3" - -run-series@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" - safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" -sandwich-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-1.0.0.tgz#7830e45797b5933287f1f9b28f871907456262f2" - scrypt-async@^1.2.0, scrypt-async@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-1.3.1.tgz#a11fd6fac981b4b823ee01dee0221169500ddae9" @@ -4849,7 +2246,7 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" -secp256k1@^3.0.1, secp256k1@^3.2.0, secp256k1@^3.2.5: +secp256k1@^3.0.1, secp256k1@^3.2.0: version "3.2.5" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.2.5.tgz#0dde5b27e5021665f6dffca7b2c3e010c6c13c93" dependencies: @@ -4870,13 +2267,7 @@ semaphore@>=1.0.1, semaphore@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.0.5.tgz#b492576e66af193db95d65e25ec53f5f19798d60" -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4884,86 +2275,30 @@ semver@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" -send@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" - dependencies: - debug "2.6.1" - depd "~1.1.0" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.1" - mime "1.3.4" - ms "0.7.2" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-static@^1.10.0: - version "1.12.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.1" - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - sha.js@^2.3.6: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" dependencies: inherits "^2.0.1" -sha3@^1.1.0, sha3@^1.2.0: +sha3@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.0.tgz#6989f1b70a498705876a373e2c62ace96aa9399a" dependencies: nan "^2.0.5" -shallow-copy@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" - shelljs@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" -shot@3.x.x: - version "3.4.0" - resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.0.tgz#e7125ee72575ae5218349e933636808d790d4b92" - dependencies: - hoek "4.x.x" - joi "10.x.x" - -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -signed-varint@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - dependencies: - varint "~5.0.0" - simple-get@^1.4.2: version "1.4.3" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" @@ -4972,75 +2307,23 @@ simple-get@^1.4.2: unzip-response "^1.0.0" xtend "^4.0.0" -simple-peer@^6.0.4: - version "6.4.4" - resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-6.4.4.tgz#4e421f485ac7b13b08077a4476934d52c5ba3bb3" - dependencies: - debug "^2.1.0" - get-browser-rtc "^1.0.0" - inherits "^2.0.1" - randombytes "^2.0.3" - readable-stream "^2.0.5" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" dependencies: hoek "2.x.x" -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.7.3, socket.io-client@^1.4.6: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.3" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" - dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" - -socket.io@^1.4.6: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" +solc@0.4.11: + version "0.4.11" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.11.tgz#2522eb43e7c0419bac2060b96e20a2593bfb5e8b" dependencies: - debug "2.3.3" - engine.io "1.8.3" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.3" - socket.io-parser "2.3.1" + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" -solc@0.4.6, solc@^0.4.2: +solc@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.6.tgz#afa929a1ceafc0252cfbb4217c8e2b1dab139db7" dependencies: @@ -5049,9 +2332,9 @@ solc@0.4.6, solc@^0.4.2: require-from-string "^1.1.0" yargs "^4.7.1" -solc@0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.8.tgz#96abbee1266341ae97fb4bdc3abcc9bc1b5052ab" +solc@^0.4.13, solc@^0.4.2: + version "0.4.13" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.13.tgz#aa5cbdcce3e6ae3c190d20f5fdf8bc880702ec75" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -5059,52 +2342,6 @@ solc@0.4.8: semver "^5.3.0" yargs "^4.7.1" -solidity-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/solidity-parser/-/solidity-parser-0.2.0.tgz#317aa865ff71239bfc2f2d03e658ece1a196edca" - dependencies: - mocha "^2.4.5" - pegjs "^0.10.0" - yargs "^4.6.0" - -solidity-parser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/solidity-parser/-/solidity-parser-0.3.0.tgz#cab04f8e406bdc1f3c16512eec6aa87a1072f8b9" - dependencies: - mocha "^2.4.5" - pegjs "^0.10.0" - yargs "^4.6.0" - -solidity-sha3@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/solidity-sha3/-/solidity-sha3-0.4.1.tgz#17577e93f6cfd58489c4ec7f2da3047530329ec1" - dependencies: - babel-cli "*" - babel-preset-es2015 "*" - babel-register "*" - left-pad "^1.1.1" - web3 "^0.16.0" - -source-map-support@^0.4.2: - version "0.4.14" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" - dependencies: - source-map "^0.5.6" - -"source-map@>= 0.1.2", source-map@^0.5.0, source-map@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@~0.1.33: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -spawn-args@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/spawn-args/-/spawn-args-0.1.0.tgz#3e0232a0571b387907f8b3f544aa531c6224848c" - spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -5119,26 +2356,6 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -spdy-transport@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6" - dependencies: - debug "^2.2.0" - hpack.js "^2.1.6" - obuf "^1.1.0" - readable-stream "^2.0.1" - wbuf "^1.4.0" - -split2@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.1.1.tgz#7a1f551e176a90ecd3345f7246a0cfe175ef4fd0" - dependencies: - through2 "^2.0.2" - -sprintf-js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - sshpk@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" @@ -5154,73 +2371,7 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stable@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.6.tgz#910f5d2aed7b520c6e777499c1f32e139fdecb10" - -statehood@5.x.x: - version "5.0.1" - resolved "https://registry.yarnpkg.com/statehood/-/statehood-5.0.1.tgz#fc13c97b37751c18e70513d2b97e896ac8b73005" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - iron "4.x.x" - items "2.x.x" - joi "10.x.x" - -static-eval@~0.2.0: - version "0.2.4" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-0.2.4.tgz#b7d34d838937b969f9641ca07d48f8ede263ea7b" - dependencies: - escodegen "~0.0.24" - -static-module@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-1.3.1.tgz#79071d340e4419e4ab5ce87976a9eb67250c8493" - dependencies: - concat-stream "~1.4.5" - duplexer2 "~0.0.2" - escodegen "~1.3.2" - falafel "^1.0.0" - has "^1.0.0" - object-inspect "~0.4.0" - quote-stream "~0.0.0" - readable-stream "~1.0.27-1" - shallow-copy "~0.0.1" - static-eval "~0.2.0" - through2 "~0.4.1" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stream-http@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-to-pull-stream@^1.7.0, stream-to-pull-stream@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz#757609ae1cebd33c7432d4afbe31ff78650b9dde" - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -streamifier@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f" - -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -5262,10 +2413,6 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -5276,20 +2423,6 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -subtext@^4.3.x: - version "4.4.0" - resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.4.0.tgz#0cf137965f47fe0e126a56a2488bb1c88dc93514" - dependencies: - boom "4.x.x" - content "3.x.x" - hoek "4.x.x" - pez "2.x.x" - wreck "10.x.x" - -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - supports-color@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" @@ -5327,20 +2460,7 @@ tar-fs@^1.13.0: pump "^1.0.0" tar-stream "^1.1.2" -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar-stream@^1.1.2, tar-stream@^1.5.2: +tar-stream@^1.1.2: version "1.5.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" dependencies: @@ -5349,174 +2469,37 @@ tar-stream@^1.1.2, tar-stream@^1.5.2: readable-stream "^2.0.0" xtend "^4.0.0" -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -temp@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - -timed-tape@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/timed-tape/-/timed-tape-0.1.1.tgz#9b6e569f17e66c79f1eed2d25ff7962fc7418e49" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - to-fast-properties@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" -to-iso-string@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" - -topo@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" - dependencies: - hoek "4.x.x" - tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: punycode "^1.4.1" -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" -truffle-artifactor@^2.1.0, truffle-artifactor@^2.1.2, truffle-artifactor@~2.1.2, truffle-artifactor@~2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/truffle-artifactor/-/truffle-artifactor-2.1.4.tgz#320b38e102a7f9abb7f2aa9af6781b99d735bd13" - dependencies: - async "^1.5.2" - fs-extra "^1.0.0" - lodash "^4.11.2" - truffle-contract "^2.0.0" - truffle-contract-schema "0.0.5" - truffle-blockchain-utils@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.1.tgz#07a58e55bb0555a64208c9119c0b04ffe1464aa4" dependencies: web3 "^0.18.0" -truffle-compile@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/truffle-compile/-/truffle-compile-1.0.0.tgz#a62b316affd0f0aa099e555738031ddfc5eb37d7" - dependencies: - async "^2.1.4" - colors "^1.1.2" - graphlib "^2.1.1" - solc "0.4.8" - solidity-parser "^0.2.0" - truffle-config "0.0.7" - truffle-contract-sources "^0.0.1" - truffle-error "0.0.2" - truffle-expect "0.0.3" - -truffle-compile@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/truffle-compile/-/truffle-compile-1.1.2.tgz#d2e2e6b8cc52fc49447405f930c0d8346ea85db8" - dependencies: - async "^2.1.4" - colors "^1.1.2" - graphlib "^2.1.1" - solc "0.4.8" - solidity-parser "^0.3.0" - truffle-config "0.0.7" - truffle-contract-sources "^0.0.1" - truffle-error "0.0.2" - truffle-expect "0.0.3" - -truffle-config@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-0.0.2.tgz#c41bccde798791244724c62b231f71e6777dbcfa" - dependencies: - find-up "^2.1.0" - lodash "^4.17.4" - require-nocache "^1.0.0" - truffle-error "0.0.1" - truffle-provider "0.0.1" - -truffle-config@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-0.0.6.tgz#9bfceee29f0b62e1adef37f0305df313f63d456b" - dependencies: - find-up "^2.1.0" - lodash "^4.17.4" - require-nocache "^1.0.0" - truffle-error "0.0.1" - truffle-provider "0.0.1" - -truffle-config@0.0.7, truffle-config@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-0.0.7.tgz#03185bb9ddd88c62a6a306cfdfc495b3c715e7c4" - dependencies: - find-up "^2.1.0" - lodash "^4.17.4" - require-nocache "^1.0.0" - truffle-error "0.0.2" - truffle-provider "0.0.1" - truffle-contract-schema@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/truffle-contract-schema/-/truffle-contract-schema-0.0.5.tgz#5e9d20bd0bf2a27fe94310748249d484eee49961" dependencies: crypto-js "^3.1.9-1" -truffle-contract-sources@^0.0.1, truffle-contract-sources@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/truffle-contract-sources/-/truffle-contract-sources-0.0.1.tgz#29b6270366c86109cbb0eb307418fc6b2795d7fd" - dependencies: - node-dir "^0.1.16" - -truffle-contract@^1.0.3, truffle-contract@^1.1.10, truffle-contract@^1.1.6, truffle-contract@^1.1.8, truffle-contract@~1.1.11, truffle-contract@~1.1.8: +truffle-contract@^1.1.10: version "1.1.11" resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-1.1.11.tgz#ce1fa787f797758aff572f45e8b1174527f6edaa" dependencies: @@ -5525,41 +2508,6 @@ truffle-contract@^1.0.3, truffle-contract@^1.1.10, truffle-contract@^1.1.6, truf truffle-contract-schema "0.0.5" web3 "^0.16.0" -truffle-contract@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-2.0.0.tgz#8536c06bb1172b143498121d135f96c10d3eb720" - dependencies: - ethjs-abi "0.1.8" - truffle-blockchain-utils "0.0.1" - truffle-contract-schema "0.0.5" - web3 "^0.18.0" - -truffle-deployer@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-0.1.1.tgz#04fea783ac7bc32d7fe2a7606accb5f81e06d988" - dependencies: - truffle-contract "^1.0.3" - truffle-expect "^0.0.3" - -truffle-deployer@0.1.2, truffle-deployer@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/truffle-deployer/-/truffle-deployer-0.1.2.tgz#54241c28b19d2f6f1c7ba370d8f7439ee309873f" - dependencies: - truffle-contract "^1.0.3" - truffle-expect "^0.0.3" - -truffle-error@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.1.tgz#4b39badf54805a206e95fca72becabcec2c05a6f" - -truffle-error@0.0.2, truffle-error@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.2.tgz#01b189b78505566ae1689c239c7ca2dd121cfe4c" - -truffle-expect@0.0.3, truffle-expect@^0.0.3, truffle-expect@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/truffle-expect/-/truffle-expect-0.0.3.tgz#9b75cef343bd596e7e5dbc878f5f1b2e318a944c" - truffle-hdwallet-provider@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz#0e1de02104b73d3875e1cf7093305b4ea8a2d843" @@ -5569,186 +2517,13 @@ truffle-hdwallet-provider@0.0.3: web3 "^0.18.2" web3-provider-engine "^8.4.0" -truffle-init@~1.0.2, truffle-init@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/truffle-init/-/truffle-init-1.0.5.tgz#1694cee4a58bd1d14a0c7881d3faca8ca4185711" - dependencies: - fs-extra "^2.0.0" - github-download "^0.5.0" - npm-programmatic "0.0.6" - rimraf "^2.5.4" - temp "^0.8.3" - truffle-config "0.0.7" - -truffle-migrate@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-0.0.5.tgz#b4a313924ed86b5c333adaa42f6353f50adbf12a" - dependencies: - async "^2.1.4" - node-dir "^0.1.16" - truffle-artifactor "^2.1.0" - truffle-deployer "0.1.1" - truffle-expect "0.0.3" - truffle-require "0.0.2" - web3 "^0.18.0" - -truffle-migrate@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/truffle-migrate/-/truffle-migrate-1.1.1.tgz#4214995a15e9cb569740bea8bf131dc0a0148087" - dependencies: - async "^2.1.4" - node-dir "^0.1.16" - truffle-deployer "0.1.2" - truffle-expect "0.0.3" - truffle-require "1.0.0" - web3 "^0.18.0" - -truffle-provider@0.0.1, truffle-provider@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.0.1.tgz#9d0ddb01131de1e3c59c4f8a0532bd2770811f1f" +truffle@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-3.4.3.tgz#6d9ea4abea758b452b2d3769669eb7109146229e" dependencies: - web3 "^0.18.0" - -truffle-provisioner@^0.1.0, truffle-provisioner@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/truffle-provisioner/-/truffle-provisioner-0.1.0.tgz#029e5249c1015300738535e04fded931a53c4f62" - -truffle-require@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/truffle-require/-/truffle-require-0.0.2.tgz#f23eaccc407735a6049ecfd59e99183bc460136c" - dependencies: - truffle-config "0.0.2" - truffle-expect "0.0.3" - web3 "^0.18.0" - -truffle-require@1.0.0, truffle-require@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/truffle-require/-/truffle-require-1.0.0.tgz#b17aa5e3c27eb4b3a26ddcf76c55ccb01d62ead9" - dependencies: - truffle-config "0.0.6" - truffle-expect "0.0.3" - web3 "^0.18.0" - -truffle-require@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/truffle-require/-/truffle-require-0.0.3.tgz#72c090822b9358979d82be6f4abbb5305af6d976" - dependencies: - truffle-config "0.0.6" - truffle-expect "0.0.3" - web3 "^0.18.0" - -truffle-resolver@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/truffle-resolver/-/truffle-resolver-1.0.1.tgz#b0cc16b8101c4c6b6a17bd371dfdba6932ef104a" - dependencies: - async "^2.1.4" - truffle-contract "^1.1.8" - truffle-expect "0.0.3" - truffle-provisioner "^0.1.0" - -truffle-resolver@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/truffle-resolver/-/truffle-resolver-2.0.0.tgz#323c3ab82450878e41dbdaf918c1aea5380dd025" - dependencies: - async "^2.1.4" - truffle-contract "^1.1.8" - truffle-expect "0.0.3" - truffle-provisioner "^0.1.0" - -truffle-solidity-utils@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/truffle-solidity-utils/-/truffle-solidity-utils-0.0.1.tgz#13a90e3bd979df01dbb3312e8f2ae0c3ef96d1b3" - dependencies: - solidity-parser "^0.2.0" - -truffle-solidity-utils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/truffle-solidity-utils/-/truffle-solidity-utils-1.0.0.tgz#5320416dcd3702a775e4cca5c5731d465dab30ae" - dependencies: - solidity-parser "^0.3.0" - -truffle@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-3.1.2.tgz#dacdd079995db46736e660d0ff8cef59e04bf2d7" - dependencies: - async "^1.4.2" - chai "^3.3.0" - chokidar "^1.4.2" - colors "^1.1.2" - cpr "^0.4.3" - del "^2.2.0" - ethpm "0.0.9" - ethpm-registry "0.0.8" - finalhandler "^0.4.0" - fs-extra "^2.0.0" - lodash "^4.5.1" - mkdirp "^0.5.1" - mocha "^3.2.0" - node-dir "^0.1.10" - serve-static "^1.10.0" - spawn-args "^0.1.0" - temp "^0.8.3" - truffle-artifactor "~2.1.2" - truffle-compile "~1.0.0" - truffle-config "~0.0.7" - truffle-contract "~1.1.8" - truffle-contract-sources "~0.0.1" - truffle-deployer "~0.1.2" - truffle-error "~0.0.2" - truffle-expect "~0.0.3" - truffle-init "~1.0.2" - truffle-migrate "~0.0.5" - truffle-provider "~0.0.1" - truffle-provisioner "~0.1.0" - truffle-require "~0.0.3" - truffle-resolver "~1.0.0" - truffle-solidity-utils "~0.0.1" - web3 "0.18.0" - yargs "^6.6.0" - -truffle@beta: - version "3.1.10" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-3.1.10.tgz#093e0d64e450823e04287483ed13347e36054e4c" - dependencies: - async "^1.4.2" - chai "^3.3.0" - chokidar "^1.4.2" - colors "^1.1.2" - cpr "^0.4.3" - del "^2.2.0" - diff "1.4.0" - ethpm "0.0.10" - ethpm-registry "0.0.9" - finalhandler "^0.4.0" - fs-extra "^2.0.0" - lodash "^4.5.1" - mkdirp "^0.5.1" - mocha "^3.2.0" - node-dir "^0.1.10" - serve-static "^1.10.0" - spawn-args "^0.1.0" - temp "^0.8.3" - truffle-artifactor "~2.1.3" - truffle-compile "~1.1.2" - truffle-config "~0.0.7" - truffle-contract "~1.1.11" - truffle-contract-sources "~0.0.1" - truffle-deployer "~0.1.2" - truffle-error "~0.0.2" - truffle-expect "~0.0.3" - truffle-init "~1.0.5" - truffle-migrate "~1.1.0" - truffle-provider "~0.0.1" - truffle-provisioner "~0.1.0" - truffle-require "~1.0.0" - truffle-resolver "~2.0.0" - truffle-solidity-utils "~1.0.0" - web3 "^0.18.0" - yargs "^6.6.0" - -tslib@^1.5.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.6.1.tgz#b77b09abc5fa4935e157d838b80e36dad47152c4" + mocha "^3.4.2" + original-require "^1.0.1" + solc "0.4.11" tunnel-agent@^0.4.3: version "0.4.3" @@ -5760,10 +2535,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.2.tgz#f23bcd8b7a7b8a864261b2084f66f93193396334" - tweetnacl-util@^0.13.3: version "0.13.5" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" @@ -5776,75 +2547,14 @@ tweetnacl@0.14.3, tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" -tweetnacl@^1.0.0-rc.1: - version "1.0.0-rc.1" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.0-rc.1.tgz#1198f1dfccb24859a4091c82787d5882425f0cde" - -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" - -typedarray-to-buffer@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz#1017b32d984ff556eba100f501589aba1ace2e04" - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -typescript@^2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - unorm@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unzip-response@^1.0.0, unzip-response@^1.0.2: +unzip-response@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" -update-notifier@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - utf8-bytes@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/utf8-bytes/-/utf8-bytes-0.0.1.tgz#116b025448c9b500081cdfbf1f4d6c6c37d8837d" @@ -5853,7 +2563,7 @@ utf8@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" -util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -5865,12 +2575,6 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -v8flags@^2.0.10: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -5878,36 +2582,12 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -varint@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/varint/-/varint-4.0.1.tgz#490829b942d248463b2b35097995c3bf737198e9" - -varint@^5.0.0, varint@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf" - -vcsurl@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/vcsurl/-/vcsurl-0.1.1.tgz#5e00a109e7381b55b5d45b892533c8ec35c9320c" - verror@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" dependencies: extsprintf "1.0.2" -vise@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" - dependencies: - hoek "4.x.x" - -wbuf@^1.1.0, wbuf@^1.4.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" - dependencies: - minimalistic-assert "^1.0.0" - web3-provider-engine@^8.4.0: version "8.6.1" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz#4d86e19e30caaf97df351511ec0f60136e5b30eb" @@ -5946,16 +2626,6 @@ web3-provider-engine@~8.1.0: xhr "^2.2.0" xtend "^4.0.1" -web3@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.0.tgz#03e4471bc2853a8177f06212fcad6adf1b16736a" - dependencies: - bignumber.js "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" - crypto-js "^3.1.4" - utf8 "^2.1.1" - xhr2 "*" - xmlhttprequest "*" - web3@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/web3/-/web3-0.15.3.tgz#f997ccda419fc528c0d6c5d8d5382212bfa74628" @@ -5994,24 +2664,6 @@ web3@^0.19.1: xhr2 "*" xmlhttprequest "*" -webcrypto-core@^0: - version "0.1.14" - resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-0.1.14.tgz#03ffb074de14a56235c17e3fb8316ecea5e6c77b" - dependencies: - "@types/node" "^6" - tslib "^1.5.0" - -"webcrypto-shim@github:dignifiedquire/webcrypto-shim#master": - version "0.1.1" - resolved "https://codeload.github.com/dignifiedquire/webcrypto-shim/tar.gz/effe03d3401ccbfb4837191bc393bb347e0c0f0a" - -wget-improved@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/wget-improved/-/wget-improved-1.4.0.tgz#a1e3c448bf9337900926fbfaba62502065f89725" - dependencies: - minimist "1.2.0" - tunnel "0.0.2" - whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" @@ -6026,12 +2678,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - window-size@^0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" @@ -6040,10 +2686,6 @@ window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -6055,45 +2697,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -wreck@10.x.x: - version "10.0.0" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-10.0.0.tgz#98ab882f85e16a526332507f101f5a7841162278" - dependencies: - boom "4.x.x" - hoek "4.x.x" - -write-file-atomic@^1.1.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.2.tgz#f80ac5e06d3a38996ab51b5d310db57102deb902" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -ws@^1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" - -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" - xhr2@*: version "0.1.4" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" @@ -6107,15 +2710,11 @@ xhr@^2.2.0: parse-headers "^2.0.0" xtend "^4.0.0" -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" - xmlhttprequest@*: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xtend@4.0.1, xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@4.0.1, xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -6129,10 +2728,6 @@ y18n@^3.2.0, y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -6140,13 +2735,7 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs@^4.6.0, yargs@^4.7.1: +yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" dependencies: @@ -6165,24 +2754,6 @@ yargs@^4.6.0, yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^6.3.0, yargs@^6.4.0, yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - yargs@~3.29.0: version "3.29.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" @@ -6193,7 +2764,3 @@ yargs@~3.29.0: os-locale "^1.4.0" window-size "^0.1.2" y18n "^3.2.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 4a95c63eff0122c8c852cdf676d0e5b164222dae Mon Sep 17 00:00:00 2001 From: naterush Date: Tue, 11 Jul 2017 10:17:44 -0400 Subject: [PATCH 51/53] update dependencies, small linting fixes. --- build/contracts/ArrayLib.json | 4 +- build/contracts/IdentityFactory.json | 4 +- .../IdentityFactoryWithRecoveryKey.json | 4 +- build/contracts/IdentityManager.json | 4 +- build/contracts/MetaTestRegistry.json | 4 +- build/contracts/Migrations.json | 4 +- build/contracts/Owned.json | 4 +- build/contracts/Proxy.json | 4 +- build/contracts/RecoverableController.json | 4 +- build/contracts/RecoveryQuorum.json | 4 +- build/contracts/TestRegistry.json | 4 +- build/contracts/TxRelay.json | 4 +- contracts/IdentityManager.sol | 1 + contracts/TxRelay.sol | 2 +- contracts/misc/MetaTestRegistry.sol | 1 + package-lock.json | 7442 ----------------- package.json | 4 +- yarn.lock | 1220 ++- 18 files changed, 909 insertions(+), 7809 deletions(-) delete mode 100644 package-lock.json diff --git a/build/contracts/ArrayLib.json b/build/contracts/ArrayLib.json index f91cbf6..35942fd 100644 --- a/build/contracts/ArrayLib.json +++ b/build/contracts/ArrayLib.json @@ -41,7 +41,7 @@ "type": "function" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b6102048061001c6000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002c578063f14717c71461003c575bfe5b61003a600435602435610065565b005b610053600160a060020a036004351660243561011b565b60408051918252519081900360200190f35b805460001981019082908290811061007957fe5b906000526020600020900160005b9054906101000a9004600160a060020a031682848154811015156100a757fe5b906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a0316021790555081818154811015156100e557fe5b906000526020600020900160005b6101000a815490600160a060020a030219169055808281610114919061018d565b505b505050565b6000805b82548110156101805783600160a060020a0316838281548110151561014057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316141561017757809150610186565b5b60010161011f565b60001991505b5092915050565b815481835581811511610116576000838152602090206101169181019083016101b7565b5b505050565b6101d591905b808211156101d157600081556001016101bd565b5090565b905600a165627a7a72305820f2cce27a26dd6d82241987d38d814802fba984f8ea673cf78a4b40e9762dbd270029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6102048061001c6000396000f300606060405263ffffffff60e060020a600035041663c6f31521811461002c578063f14717c71461003c575bfe5b61003a600435602435610065565b005b610053600160a060020a036004351660243561011b565b60408051918252519081900360200190f35b805460001981019082908290811061007957fe5b906000526020600020900160005b9054906101000a9004600160a060020a031682848154811015156100a757fe5b906000526020600020900160005b6101000a815481600160a060020a030219169083600160a060020a0316021790555081818154811015156100e557fe5b906000526020600020900160005b6101000a815490600160a060020a030219169055808281610114919061018d565b505b505050565b6000805b82548110156101805783600160a060020a0316838281548110151561014057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316141561017757809150610186565b5b60010161011f565b60001991505b5092915050565b815481835581811511610116576000838152602090206101169181019083016101b7565b5b505050565b6101d591905b808211156101d157600081556001016101bd565b5090565b905600a165627a7a723058202e5fcbcc910279570525c4660cf6d3f4364d7baca9a8148451efb2a669b25e9e0029", "networks": { "1": { "events": {}, @@ -81,5 +81,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/IdentityFactory.json b/build/contracts/IdentityFactory.json index 28d878b..a94f246 100644 --- a/build/contracts/IdentityFactory.json +++ b/build/contracts/IdentityFactory.json @@ -72,7 +72,7 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b6121328061001c6000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002c578063e90bcb321461008f575bfe5b341561003457fe5b60408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c792505050565b005b341561009757fe5b6100ab600160a060020a036004351661030f565b60408051600160a060020a039092168252519081900360200190f35b6000600060006100d561032a565b60405190819003906000f08015156100e957fe5b9250828786866100f761033a565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013457fe5b915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561018d57fe5b6102c65a03f1151561019b57fe5b50505081866101a861034a565b600160a060020a03831681526040602080830182815284519284019290925283516060840191858101910280838382156101fd575b8051825260208311156101fd57601f1990920191602091820191016101dd565b5050509050019350505050604051809103906000f080151561021b57fe5b905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561027457fe5b6102c65a03f1151561028257fe5b505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a0390811660009081526020819052604090208054600160a060020a0319169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681565b6040516103aa8061035b83390190565b604051610a108061070583390190565b604051610ff28061111583390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e700296060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820a3a1f0440d52e487ce36e27f23a99d82cd7f9755cc7eab2dff72696babee06200029a165627a7a72305820780cbcfb803f6a9617e0566d233f4a36bc3d83f7541bb47146fe2e42eb2632620029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6121328061001c6000396000f300606060405263ffffffff60e060020a60003504166394d9cf8f811461002c578063e90bcb321461008f575bfe5b341561003457fe5b60408051602480356004818101356020818102868101820190975281865261008d96600160a060020a0384351696939560449501929182919085019084908082843750949650508435946020013593506100c792505050565b005b341561009757fe5b6100ab600160a060020a036004351661030f565b60408051600160a060020a039092168252519081900360200190f35b6000600060006100d561032a565b60405190819003906000f08015156100e957fe5b9250828786866100f761033a565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013457fe5b915082600160a060020a0316631a695230836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561018d57fe5b6102c65a03f1151561019b57fe5b50505081866101a861034a565b600160a060020a03831681526040602080830182815284519284019290925283516060840191858101910280838382156101fd575b8051825260208311156101fd57601f1990920191602091820191016101dd565b5050509050019350505050604051809103906000f080151561021b57fe5b905081600160a060020a031663a08df770826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561027457fe5b6102c65a03f1151561028257fe5b505060408051600160a060020a0386811682528581166020830152848116828401529151918a1692507fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61919081900360600190a233600160a060020a0390811660009081526020819052604090208054600160a060020a0319169185169190911790555b50505050505050565b600060208190529081526040902054600160a060020a031681565b6040516103aa8061035b83390190565b604051610a108061070583390190565b604051610ff28061111583390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a7230582011e578b01d4fe52397b0794d6b9dee762670ecd8207070f40e7959ce4f99f1f000296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582036f25230ff8e04974ed47406729a7f86b522c2cf97aacf6ac89429407114745600296060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058206ab392f107a7aa73b72b027ba2cd2ae63d7d926745e054e647fd0e718bc2301c0029a165627a7a72305820d6cc4d7f94797afcd7db43c683b191a89a00dce3ffaee46c100c189c3155c3100029", "networks": { "1": { "events": { @@ -256,5 +256,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499717349641 + "updated_at": 1499785642008 } \ No newline at end of file diff --git a/build/contracts/IdentityFactoryWithRecoveryKey.json b/build/contracts/IdentityFactoryWithRecoveryKey.json index 850e518..31f0541 100644 --- a/build/contracts/IdentityFactoryWithRecoveryKey.json +++ b/build/contracts/IdentityFactoryWithRecoveryKey.json @@ -90,7 +90,7 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b6110e38061001c6000396000f300606060405263ffffffff60e060020a6000350416634a3a87e281146100375780636738bd4e14610061578063e90bcb3214610099575bfe5b341561003f57fe5b61005f600160a060020a03600435811690602435166044356064356100d1565b005b341561006957fe5b61007d600160a060020a03600435166102a7565b60408051600160a060020a039092168252519081900360200190f35b34156100a157fe5b61007d600160a060020a03600435166102c2565b60408051600160a060020a039092168252519081900360200190f35b600060006100dd6102dd565b60405190819003906000f08015156100f157fe5b9150818685856100ff6102ed565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013c57fe5b905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561019557fe5b6102c65a03f115156101a357fe5b50505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15156101fd57fe5b6102c65a03f1151561020b57fe5b505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a033381166000908152602081815260408083208054858816600160a060020a03199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681565b6040516103aa806102fe83390190565b604051610a10806106a883390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e70029a165627a7a723058203d25c37c89f65b722fffc1e1165720b097ea109e4fa17188648867a997fbac680029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6110e38061001c6000396000f300606060405263ffffffff60e060020a6000350416634a3a87e281146100375780636738bd4e14610061578063e90bcb3214610099575bfe5b341561003f57fe5b61005f600160a060020a03600435811690602435166044356064356100d1565b005b341561006957fe5b61007d600160a060020a03600435166102a7565b60408051600160a060020a039092168252519081900360200190f35b34156100a157fe5b61007d600160a060020a03600435166102c2565b60408051600160a060020a039092168252519081900360200190f35b600060006100dd6102dd565b60405190819003906000f08015156100f157fe5b9150818685856100ff6102ed565b600160a060020a0394851681529290931660208301526040808301919091526060820192909252905190819003608001906000f080151561013c57fe5b905081600160a060020a0316631a695230826040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b151561019557fe5b6102c65a03f115156101a357fe5b50505080600160a060020a031663a08df770866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15156101fd57fe5b6102c65a03f1151561020b57fe5b505060408051600160a060020a03858116825284811660208301528251818a169450908a16927fc36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61928290030190a3600160a060020a033381166000908152602081815260408083208054858816600160a060020a03199182168117909255948a168452600190925290912080549092161790555b505050505050565b600160205260009081526040902054600160a060020a031681565b600060208190529081526040902054600160a060020a031681565b6040516103aa806102fe83390190565b604051610a10806106a883390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a7230582011e578b01d4fe52397b0794d6b9dee762670ecd8207070f40e7959ce4f99f1f000296060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582036f25230ff8e04974ed47406729a7f86b522c2cf97aacf6ac8942940711474560029a165627a7a72305820a7fb1a61bd7fac3920b54dba1fa96a731199737fe45842fcc1d5277339d9698f0029", "networks": { "3": { "events": { @@ -196,5 +196,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/IdentityManager.json b/build/contracts/IdentityManager.json index 20f1433..39b06ef 100644 --- a/build/contracts/IdentityManager.json +++ b/build/contracts/IdentityManager.json @@ -385,8 +385,8 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b60405160808061140383398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b611391806100726000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008a5780631e2629e1146100b45780633061e0ef146100de578063701b882614610108578063754fd35214610178578063781f5a83146101a2578063a5967039146101c6578063a949c637146101ea578063c7576ed414610214578063d10e73ab14610238575bfe5b341561009257fe5b6100b2600160a060020a036004358116906024358116906044351661025c565b005b34156100bc57fe5b6100b2600160a060020a03600435811690602435811690604435166103cd565b005b34156100e657fe5b6100b2600160a060020a03600435811690602435811690604435166104ea565b005b341561011057fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061068495505050505050565b005b341561018057fe5b6100b2600160a060020a036004358116906024358116906044351661081c565b005b34156101aa57fe5b6100b2600160a060020a036004358116906024351661096c565b005b34156101ce57fe5b6100b2600160a060020a0360043581169060243516610a2f565b005b34156101f257fe5b6100b2600160a060020a0360043581169060243581169060443516610b60565b005b341561021c57fe5b6100b2600160a060020a0360043581169060243516610cc7565b005b341561024057fe5b6100b2600160a060020a0360043581169060243516610e84565b005b60035433600160a060020a039081169116148061027d575061027d33610f43565b5b156103a557600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102e6575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806103ee57506103ee33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610457575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038481166000818152600760209081526040918290204281556001018054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a039081169116148061050b575061050b33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610574575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452909152902042905585908116156103a557600160a060020a038781166000818152600560209081526040918290208054600160a060020a0319168b86169081179091558251948d168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610655565b60006000fd5b5b506103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806106a557506106a533610f43565b5b156103a557600160a060020a0380851660009081526004602090815260408083209389168352929052908120548591879111801561070e5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a55785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383600083146107a0575b8051825260208311156107a057601f199092019160209182019101610780565b505050905090810190601f1680156107cc5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156107e957fe5b6102c65a03f115156107f757fe5b5050505b610806565b60006000fd5b5b5050610814565b60006000fd5b5b5050505050565b60035433600160a060020a039081169116148061083d575061083d33610f43565b5b156103a557600160a060020a0380831660009081526005602052604090205483918591811690821614156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156108ef5760006000fd5b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c168552519193600080516020611326833981519152929081900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b80600160a060020a038116156103a557600160a060020a0333811660009081526005602052604081205490911611156109a55760006000fd5b60008054600160a060020a03338116808452600460209081526040808620898516808852908352818720429690960390955582865260058252948590208054938816600160a060020a03199094168417905584519384529351919390928392600080516020611346833981519152929181900390910190a45b6103c7565b60006000fd5b5b505050565b60035433600160a060020a0390811691161480610a505750610a5033610f43565b5b156103a557600160a060020a03808216600090815260046020908152604080832093861683529290529081205482918491118015610ab95750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a557600160a060020a03808416600081815260076020908152604091829020600101548251898616815292519416937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f5679281900390910190a3600160a060020a03831660009081526007602052604081209081556001018054600160a060020a03191690555b610b4d565b60006000fd5b5b5050610b5b565b60006000fd5b5b5050565b60035433600160a060020a0390811691161480610b815750610b8133610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610bea575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190556001548b8616808652600485528386208c8816808852908652958490209190920390558151948c168552905192939092600080516020611326833981519152929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035460009033600160a060020a0390811691161480610ceb5750610ceb33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610d54575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038416600090815260076020526040812054118015610d9a575060008054600160a060020a03861682526007602052604090912054429101105b156104cb57600160a060020a0380851660008181526007602052604080822060018101805491849055600160a060020a031982169055815160e460020a6301a6952302815294166004850181905290519096509192631a695230926024808301939282900301818387803b1515610e0d57fe5b6102c65a03f11515610e1b57fe5b505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b600081600160a060020a038116156103a557610e9e610f6b565b60405190819003906000f0801515610eb257fe5b60008054600160a060020a038381168084526004602090815260408086208b8516808852908352818720429690960390955582865260058252948590208054600160a060020a0319168a851690811790915585519485529451959750939433909216939092600080516020611346833981519152929081900390910190a45b610f3c565b60006000fd5b5b50505050565b60006024361015610f5657506000610f66565b50600435600160a060020a031681145b919050565b6040516103aa80610f7c83390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f04500293047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386c36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61a165627a7a723058205a699f780e7ac73f314717ace5f7fa4c4dc94a97a3ad7463e458b4866de4d60d0029", + "unlinked_binary": "0x6060604052341561000c57fe5b60405160808061140383398101604090815281516020830151918301516060909301519092905b60008390556001849055600282905560038054600160a060020a031916600160a060020a0383161790555b505050505b611391806100726000396000f300606060405236156100885763ffffffff60e060020a6000350416631a45fac7811461008a5780631e2629e1146100b45780633061e0ef146100de578063701b882614610108578063754fd35214610178578063781f5a83146101a2578063a5967039146101c6578063a949c637146101ea578063c7576ed414610214578063d10e73ab14610238575bfe5b341561009257fe5b6100b2600160a060020a036004358116906024358116906044351661025c565b005b34156100bc57fe5b6100b2600160a060020a03600435811690602435811690604435166103cd565b005b34156100e657fe5b6100b2600160a060020a03600435811690602435811690604435166104ea565b005b341561011057fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100b294600160a060020a03813581169560248035831696604435909316956064359560a494920191819084018382808284375094965061068495505050505050565b005b341561018057fe5b6100b2600160a060020a036004358116906024358116906044351661081c565b005b34156101aa57fe5b6100b2600160a060020a036004358116906024351661096c565b005b34156101ce57fe5b6100b2600160a060020a0360043581169060243516610a2f565b005b34156101f257fe5b6100b2600160a060020a0360043581169060243581169060443516610b60565b005b341561021c57fe5b6100b2600160a060020a0360043581169060243516610cc7565b005b341561024057fe5b6100b2600160a060020a0360043581169060243516610e84565b005b60035433600160a060020a039081169116148061027d575061027d33610f43565b5b156103a557600160a060020a038083166000908152600460209081526040808320938716835292905290812054839185911180156102e6575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a03808316600090815260066020908152604080832085851684528252808320429055898416808452600483528184208a8616808652908452828520949094558151948c1685529051929390927fc5d55f5b9504a5698fdae1a66c6327ad53ed43440071e233dc0caad0ca8406d4929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806103ee57506103ee33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610457575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038481166000818152600760209081526040918290204281556001018054600160a060020a0319168886169081179091558251948a168552915191937fcfc00227bf2b3a4415906c30423e1d01d99604f93a0d756dc25fbf69cf233e20929081900390910190a35b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a039081169116148061050b575061050b33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610574575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452909152902042905585908116156103a557600160a060020a038781166000818152600560209081526040918290208054600160a060020a0319168b86169081179091558251948d168552915191937fa9bb12bc681659b583320c1fa0fbf4d8c1dfb4fcd51566c8f6edf9438a8b8ece929081900390910190a35b610655565b60006000fd5b5b506103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035433600160a060020a03908116911614806106a557506106a533610f43565b5b156103a557600160a060020a0380851660009081526004602090815260408083209389168352929052908120548591879111801561070e5750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a55785600160a060020a031663d7f31eb98686866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383600083146107a0575b8051825260208311156107a057601f199092019160209182019101610780565b505050905090810190601f1680156107cc5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156107e957fe5b6102c65a03f115156107f757fe5b5050505b610806565b60006000fd5b5b5050610814565b60006000fd5b5b5050505050565b60035433600160a060020a039081169116148061083d575061083d33610f43565b5b156103a557600160a060020a0380831660009081526005602052604090205483918591811690821614156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042905589841683526004825280832093891683529290529081205411156108ef5760006000fd5b600160a060020a0380871660008181526004602090815260408083208a8616808552908352928190204290558051948c168552519193600080516020611326833981519152929081900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b80600160a060020a038116156103a557600160a060020a0333811660009081526005602052604081205490911611156109a55760006000fd5b60008054600160a060020a03338116808452600460209081526040808620898516808852908352818720429690960390955582865260058252948590208054938816600160a060020a03199094168417905584519384529351919390928392600080516020611346833981519152929181900390910190a45b6103c7565b60006000fd5b5b505050565b60035433600160a060020a0390811691161480610a505750610a5033610f43565b5b156103a557600160a060020a03808216600090815260046020908152604080832093861683529290529081205482918491118015610ab95750600154600160a060020a0380841660009081526004602090815260408083209386168352929052205442910111155b156103a557600160a060020a03808416600081815260076020908152604091829020600101548251898616815292519416937f788f980ac1598bf6282c4cc596fedd7807726e6e8e51f1505a1b6df5d726f5679281900390910190a3600160a060020a03831660009081526007602052604081209081556001018054600160a060020a03191690555b610b4d565b60006000fd5b5b5050610b5b565b60006000fd5b5b5050565b60035433600160a060020a0390811691161480610b815750610b8133610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610bea575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600254600160a060020a038086166000908152600660209081526040808320938a16835292905220548591879142910110156103a557600160a060020a0380831660009081526006602090815260408083208585168452825280832042908190556001548b8616808652600485528386208c8816808852908652958490209190920390558151948c168552905192939092600080516020611326833981519152929181900390910190a35b6103ab565b60006000fd5b5b50506103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b60035460009033600160a060020a0390811691161480610ceb5750610ceb33610f43565b5b156103a557600160a060020a03808316600090815260046020908152604080832093871683529290529081205483918591118015610d54575060008054600160a060020a03808516835260046020908152604080852092861685529190529091205442910111155b156103a557600160a060020a038416600090815260076020526040812054118015610d9a575060008054600160a060020a03861682526007602052604090912054429101105b156104cb57600160a060020a0380851660008181526007602052604080822060018101805491849055600160a060020a031982169055815160e460020a6301a6952302815294166004850181905290519096509192631a695230926024808301939282900301818387803b1515610e0d57fe5b6102c65a03f11515610e1b57fe5b505060408051600160a060020a03888116825291518287169350918716917f5d50e5b65a3141f147362981bdcac9e274984e1c2efec57320f86b3e071dd6f89181900360200190a35b5b6103b9565b60006000fd5b5b50506103c7565b60006000fd5b5b505050565b600081600160a060020a038116156103a557610e9e610f6b565b60405190819003906000f0801515610eb257fe5b60008054600160a060020a038381168084526004602090815260408086208b8516808852908352818720429690960390955582865260058252948590208054600160a060020a0319168a851690811790915585519485529451959750939433909216939092600080516020611346833981519152929081900390910190a45b610f3c565b60006000fd5b5b50505050565b60006024361015610f5657506000610f66565b50600435600160a060020a031681145b919050565b6040516103aa80610f7c83390190560060606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a7230582011e578b01d4fe52397b0794d6b9dee762670ecd8207070f40e7959ce4f99f1f000293047230d3e8ea09f306e55725064a524f79ccdf75f030deeb6db4f95518b6386c36800ebd6079fdafc3a7100d0d1172815751804a6d1b7eb365b85f6c9c80e61a165627a7a723058207a11016e2b926b74676bcd6db6666ba60ae51bfdff807ca720b16a6c2fb90cec0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/MetaTestRegistry.json b/build/contracts/MetaTestRegistry.json index 9de5ac7..a916304 100644 --- a/build/contracts/MetaTestRegistry.json +++ b/build/contracts/MetaTestRegistry.json @@ -75,8 +75,8 @@ "type": "function" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b61019f8061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a424146100705780634a99e570146100d75780636d705ebb146100f5575bfe5b341561004a57fe5b61005e600160a060020a0360043516610116565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061012892505050565b005b34156100df57fe5b6100d5600160a060020a036004351661014a565b005b34156100fd57fe5b6100d5600160a060020a0360043516602435610153565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b50565b600160a060020a03821660009081526020819052604090208190555b50505600a165627a7a72305820be1648a864f1d664d3f856ac0ea822a3256ddad753cf454a74a5b0b10a7051960029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b61019f8061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a424146100705780634a99e570146100d75780636d705ebb146100f5575bfe5b341561004a57fe5b61005e600160a060020a0360043516610116565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061012892505050565b005b34156100df57fe5b6100d5600160a060020a036004351661014a565b005b34156100fd57fe5b6100d5600160a060020a0360043516602435610153565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b50565b600160a060020a03821660009081526020819052604090208190555b50505600a165627a7a723058201c48ee23273dc1af579a0a8268f42c0bb88b10c0a2ba2217595c37782ed575d10029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index a67a931..73857f4 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -59,7 +59,7 @@ "type": "constructor" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6101a0806100396000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610042578063445df0ac146100605780638da5cb5b14610082578063fdacd576146100ae575bfe5b341561004a57fe5b61005e600160a060020a03600435166100c3565b005b341561006857fe5b61007061013d565b60408051918252519081900360200190f35b341561008a57fe5b610092610143565b60408051600160a060020a039092168252519081900360200190f35b34156100b657fe5b61005e600435610152565b005b6000805433600160a060020a03908116911614156101375781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561012557fe5b6102c65a03f1151561013357fe5b5050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561016f5760018190555b5b5b505600a165627a7a723058209129380aaaaccdc967252bac0b186d0adcea97c30a3dd6499a7682423df0d2540029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6101a0806100396000396000f300606060405263ffffffff60e060020a6000350416630900f0108114610042578063445df0ac146100605780638da5cb5b14610082578063fdacd576146100ae575bfe5b341561004a57fe5b61005e600160a060020a03600435166100c3565b005b341561006857fe5b61007061013d565b60408051918252519081900360200190f35b341561008a57fe5b610092610143565b60408051600160a060020a039092168252519081900360200190f35b34156100b657fe5b61005e600435610152565b005b6000805433600160a060020a03908116911614156101375781905080600160a060020a031663fdacd5766001546040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b151561012557fe5b6102c65a03f1151561013357fe5b5050505b5b5b5050565b60015481565b600054600160a060020a031681565b60005433600160a060020a039081169116141561016f5760018190555b5b5b505600a165627a7a7230582056142661b5de6d2b3547cca54cb75cdf2a16bfed17ade3184f96a8e6fea7ab3a0029", "networks": { "1": { "events": {}, @@ -87,5 +87,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/Owned.json b/build/contracts/Owned.json index b7ba21b..c6f8888 100644 --- a/build/contracts/Owned.json +++ b/build/contracts/Owned.json @@ -51,8 +51,8 @@ "type": "constructor" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b610154806100396000396000f300606060405263ffffffff60e060020a6000350416631a69523081146100375780632f54bf6e146100555780638da5cb5b14610085575bfe5b341561003f57fe5b610053600160a060020a03600435166100b1565b005b341561005d57fe5b610071600160a060020a0360043516610102565b604080519115158252519081900360200190f35b341561008d57fe5b610095610119565b60408051600160a060020a039092168252519081900360200190f35b6100ba33610102565b15156100c65760006000fd5b30600160a060020a031681600160a060020a03161415156100fd5760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a72305820fd2149f49a82afd1abc790669fc15ea5fb4392f9c67bdc191b57c9146efc415f0029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b60008054600160a060020a03191633600160a060020a03161790555b5b610154806100396000396000f300606060405263ffffffff60e060020a6000350416631a69523081146100375780632f54bf6e146100555780638da5cb5b14610085575bfe5b341561003f57fe5b610053600160a060020a03600435166100b1565b005b341561005d57fe5b610071600160a060020a0360043516610102565b604080519115158252519081900360200190f35b341561008d57fe5b610095610119565b60408051600160a060020a039092168252519081900360200190f35b6100ba33610102565b15156100c65760006000fd5b30600160a060020a031681600160a060020a03161415156100fd5760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a0316815600a165627a7a723058203236cb8b84291d0c68350b08839bd8b7756f03d9bd9908c5099b31cf486108ef0029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index d38a599..71cb7dd 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -110,8 +110,8 @@ "type": "event" } ], - "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a723058204fb4c9c92a759257fa610eaa2c6e0d79ad7aaa43b89b30e33e62fdfdef28f0450029", + "unlinked_binary": "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610379806100316000396000f300606060405236156100465763ffffffff60e060020a6000350416631a695230811461008e5780632f54bf6e146100ac5780638da5cb5b146100dc578063d7f31eb914610108575b61008c5b604080513481529051600160a060020a033316917f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874919081900360200190a25b565b005b341561009657fe5b61008c600160a060020a036004351661016d565b005b34156100b457fe5b6100c8600160a060020a03600435166101be565b604080519115158252519081900360200190f35b34156100e457fe5b6100ec6101d5565b60408051600160a060020a039092168252519081900360200190f35b341561011057fe5b604080516020600460443581810135601f810184900484028501840190955284845261008c948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506101e495505050505050565b005b610176336101be565b15156101825760006000fd5b30600160a060020a031681600160a060020a03161415156101b95760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b600054600160a060020a038281169116145b919050565b600054600160a060020a031681565b6101ed336101be565b15156101f95760006000fd5b82600160a060020a031682826040518082805190602001908083836000831461023d575b80518252602083111561023d57601f19909201916020918201910161021d565b505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561028e5760006000fd5b82600160a060020a03167fc1de93dfa06362c6a616cde73ec17d116c0d588dd1df70f27f91b500de207c418383604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461030c575b80518252602083111561030c57601f1990920191602091820191016102ec565b505050905090810190601f1680156103385780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25b5b5050505600a165627a7a7230582011e578b01d4fe52397b0794d6b9dee762670ecd8207070f40e7959ce4f99f1f00029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/RecoverableController.json b/build/contracts/RecoverableController.json index d702895..22ac6cc 100644 --- a/build/contracts/RecoverableController.json +++ b/build/contracts/RecoverableController.json @@ -307,8 +307,8 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820d3df6adcbcd626d7aa4b4f009a0eb1f797eb04204814cc12920fb94dc5c838e70029", + "unlinked_binary": "0x6060604052341561000c57fe5b604051608080610a1083398101604090815281516020830151918301516060909301519092905b600160008190558054600160a060020a03808716600160a060020a03199283161790925560028054868416908316179055600a839055600b8490556005805433909316929091169190911790555b505050505b61097b806100956000396000f300606060405236156101015763ffffffff60e060020a60003504166309b8f77a81146101035780631c1c22891461012f5780631de0e8771461015b5780631ec9f7b51461017d57806334c7dcf81461019f5780634893ed5b146101cb57806354fd4d50146101ed5780637a5d53451461020f5780637ab0b9981461022d57806384191f621461024b5780638ac0eef91461025d57806397905a881461026f578063a08df7701461029b578063c998e9dd146102b9578063cbd2c73b146102d7578063d1c484f6146102f5578063d233fc0b14610317578063d7f31eb914610329578063ec5568891461038e578063f60edb0e146103ba578063f66c6691146103e6575bfe5b341561010b57fe5b610113610408565b60408051600160a060020a039092168252519081900360200190f35b341561013757fe5b610113610417565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61016b610426565b60408051918252519081900360200190f35b341561018557fe5b61016b61042c565b60408051918252519081900360200190f35b34156101a757fe5b610113610432565b60408051600160a060020a039092168252519081900360200190f35b34156101d357fe5b61016b610441565b60408051918252519081900360200190f35b34156101f557fe5b61016b610447565b60408051918252519081900360200190f35b341561021757fe5b61022b600160a060020a036004351661044d565b005b341561023557fe5b61022b600160a060020a03600435166104e2565b005b341561025357fe5b61022b610575565b005b341561026557fe5b61022b610608565b005b341561027757fe5b61011361069e565b60408051600160a060020a039092168252519081900360200190f35b34156102a357fe5b61022b600160a060020a03600435166106ad565b005b34156102c157fe5b61022b600160a060020a03600435166106e5565b005b34156102df57fe5b61022b600160a060020a0360043516610729565b005b34156102fd57fe5b61016b6107bb565b60408051918252519081900360200190f35b341561031f57fe5b61022b6107c1565b005b341561033157fe5b604080516020600460443581810135601f810184900484028501840190955284845261022b948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061080a95505050505050565b005b341561039657fe5b61011361090b565b60408051600160a060020a039092168252519081900360200190f35b34156103c257fe5b61011361091a565b60408051600160a060020a039092168252519081900360200190f35b34156103ee57fe5b61016b610929565b60408051918252519081900360200190f35b600654600160a060020a031681565b600254600160a060020a031681565b60095481565b600b5481565b600354600160a060020a031681565b60045481565b60005481565b60025433600160a060020a03908116911614156104dd57600b54420160095560088054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601482820152606060020a737369676e436f6e74726f6c6c65724368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60025433600160a060020a03908116911614156104dd57600b54420160075560068054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601282820152607060020a717369676e5265636f766572794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b426009541080156105905750600854600160a060020a031615155b15610605576001546008546040805160e460020a6301a69523028152600160a060020a03928316600482015290519190921691631a69523091602480830192600092919082900301818387803b15156105e557fe5b6102c65a03f115156105f357fe5b5050600854600160a060020a03169050ff5b5b565b426004541080156106235750600354600160a060020a031615155b15610605576003805460028054600160a060020a03808416600160a060020a03199283161790925590911690915560408051339092166020830152808252600d82820152609860020a6c6368616e6765557365724b657902606083015251600080516020610930833981519152916080908290030190a15b5b565b600554600160a060020a031681565b60055433600160a060020a03908116911614156104dd5760058054600160a060020a031916600160a060020a0383161790555b5b5b50565b60055433600160a060020a03908116911614156104dd5760038054600160a060020a031990811690915560028054909116600160a060020a0383161790555b5b5b50565b60025433600160a060020a03908116911614156104dd57600a54420160045560038054600160a060020a031916600160a060020a038381169190911790915560408051339092166020830152808252601182820152607860020a707369676e557365724b65794368616e676502606083015251600080516020610930833981519152916080908290030190a15b5b5b50565b60075481565b426007541080156107dc5750600654600160a060020a031615155b15610605576006805460058054600160a060020a0319908116600160a060020a038416179091551690555b5b565b60025433600160a060020a03908116911614156109045760015460405160e060020a63d7f31eb9028152600160a060020a038581166004830190815260248301869052606060448401908152855160648501528551929094169363d7f31eb99388938893889390929091608490910190602085019080838382156108a9575b8051825260208311156108a957601f199092019160209182019101610889565b505050905090810190601f1680156108d55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156108f257fe5b6102c65a03f1151561090057fe5b5050505b5b5b505050565b600154600160a060020a031681565b600854600160a060020a031681565b600a54815600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a7230582036f25230ff8e04974ed47406729a7f86b522c2cf97aacf6ac8942940711474560029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/RecoveryQuorum.json b/build/contracts/RecoveryQuorum.json index e08505a..555c263 100644 --- a/build/contracts/RecoveryQuorum.json +++ b/build/contracts/RecoveryQuorum.json @@ -177,7 +177,7 @@ "type": "event" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a72305820a3a1f0440d52e487ce36e27f23a99d82cd7f9755cc7eab2dff72696babee06200029", + "unlinked_binary": "0x6060604052341561000c57fe5b604051610ff2380380610ff283398101604052805160208201519091015b60008054600160a060020a031916600160a060020a0384161781555b815181101561015557600f811061005c57610155565b6001805480820161006d838261015e565b916000526020600020900160005b848481518110151561008957fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a0316021790555050606060405190810160405280651cae8c13e0008152602001600081526020016000600160a060020a03168152506002600084848151811015156100f957fe5b602090810291909101810151600160a060020a0390811683528282019390935260409182016000208451815590840151600182015592015160029092018054600160a060020a031916929091169190911790555b600101610046565b5b5050506101a9565b81548183558181151161018257600083815260209020610182918101908301610188565b5b505050565b6101a691905b808211156101a2576000815560010161018e565b5090565b90565b610e3a806101b86000396000f3006060604052361561007d5763ffffffff60e060020a60003504166323d44dee811461007f578063245d1314146100ad5780633f31281a146100cb578063587cde1e146100e957806364bc82c31461012c578063943e170d1461015b578063a39fac121461017d578063e71e592b146101e8578063f77c479114610275575bfe5b341561008757fe5b61009b600160a060020a03600435166102a1565b60408051918252519081900360200190f35b34156100b557fe5b6100c9600160a060020a036004351661039b565b005b34156100d357fe5b6100c9600160a060020a036004351661047a565b005b34156100f157fe5b610105600160a060020a0360043516610607565b604080519384526020840192909252600160a060020a031682820152519081900360600190f35b341561013457fe5b61013f600435610630565b60408051600160a060020a039092168252519081900360200190f35b341561016357fe5b61009b610662565b60408051918252519081900360200190f35b341561018557fe5b61018d610708565b60408051602080825283518183015283519192839290830191858101910280838382156101d5575b8051825260208311156101d557601f1990920191602091820191016101b5565b5050509050019250505060405180910390f35b34156101f057fe5b6100c9600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061077195505050505050565b005b341561027d57fe5b61013f6108c1565b60408051600160a060020a039092168252519081900360200190f35b6000805b60015481101561039457610321600260006001848154811015156102c557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208083019390935260409182016000208251606081018452815481526001820154948101949094526002015416908201526108d0565b801561037f575082600160a060020a03166002600060018481548110151561034557fe5b906000526020600020900160005b9054600160a060020a036101009290920a90048116825260208201929092526040016000206002015416145b1561038b576001909101905b5b6001016102a5565b5b50919050565b600160a060020a0333811660009081526002602081815260409283902083516060810185528154815260018201549281019290925290910154909216908201526103e4906108fb565b156104765733600160a060020a039081166000908152600260208190526040909120018054600160a060020a0319169183169190911790556104258161047a565b60408051600160a060020a0333166020820152818152600e81830152609060020a6d7369676e557365724368616e67650260608201529051600080516020610def8339815191529181900360800190a15b5b50565b6000610484610662565b61048d836102a1565b1061060157600080546040805160e060020a63c998e9dd028152600160a060020a0386811660048301529151919092169263c998e9dd926024808201939182900301818387803b15156104dc57fe5b6102c65a03f115156104ea57fe5b505050600090505b60015481101561060157426002600060018481548110151561051057fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020019081526020016000206001015411156105a257426002600060018481548110151561056e57fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041681526020810191909152604001600020555b600260006001838154811015156105b557fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000206002018054600160a060020a03191690555b6001016104f2565b5b5b5050565b6002602081905260009182526040909120805460018201549190920154600160a060020a031683565b600180548290811061063e57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600080805b6001548110156106f8576106e36002600060018481548110151561068757fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610905565b156106ef576001909101905b5b600101610667565b6002825b0460010192505b505090565b610710610d91565b600180548060200260200160405190810160405280929190818152602001828054801561076657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610748575b505050505090505b90565b60008054604080516020908101849052815160e060020a631c1c228902815291518493600160a060020a031692631c1c228992600480830193919282900301818787803b15156107bd57fe5b6102c65a03f115156107cb57fe5b50505060405180519050600160a060020a031633600160a060020a031614156108b957600091505b83518210156108285761081c848381518110151561080d57fe5b90602001906020020151610939565b5b6001909101906107f3565b610830610aa8565b5060005b82518110156108665761085d838281518110151561084e57fe5b90602001906020020151610c0a565b5b600101610834565b60408051600160a060020a0333166020820152818152601081830152608060020a6f7265706c61636544656c6567617465730260608201529051600080516020610def8339815191529181900360800190a15b5b5b50505050565b600054600160a060020a031681565b60006108db82610905565b80156108f357506040820151600160a060020a031615155b90505b919050565b805115155b919050565b6000610910826108fb565b8015610922575061092082610d85565b155b80156108f35750816020015142115b90505b919050565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561099557fe5b6102c65a03f115156109a357fe5b50506040805151600160a060020a038516600090815260026020529190912054920190911115905061047657600160a060020a03811660009081526002602052604090206001015442901115610a1357600160a060020a0381166000908152600260205260409020429055610476565b42600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610a6f57fe5b6102c65a03f11515610a7d57fe5b50506040805151600160a060020a03851660009081526002602052919091209201909155505b5b5b50565b60005b60015481101561047657610b2760026000600184815481101515610acb57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004811682526020808301939093526040918201600020825160608101845281548152600182015494810194909452600201541690820152610d85565b15610bfd5760026000600183815481101515610b3f57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004168152602081019190915260409081016000908120818155600180820183905560029091018054600160a060020a0319169055825160e060020a63c6f31521028152600481018590526024810191909152915173__ArrayLib______________________________9263c6f31521926044808301939192829003018186803b1515610be757fe5b6102c65a03f41515610bf557fe5b505050610c01565b6001015b610aab565b5b50565b600160a060020a038082166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015490921690820152610c53906108fb565b158015610c635750600154600f90105b1561047657606060405190810160405280651cae8c13e0008152602001600060009054906101000a9004600160a060020a0316600160a060020a0316631ec9f7b56000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610cdb57fe5b6102c65a03f11515610ce957fe5b505060408051514201835260006020938401819052600160a060020a0386811682526002808652918390208651815594860151600180870191909155959092015193018054600160a060020a0319169390911692909217909155508054808201610d538382610da3565b916000526020600020900160005b8154600160a060020a038086166101009390930a92830292021916179055505b5b50565b8051429011155b919050565b60408051602081019091526000815290565b815481835581811511610dc757600083815260209020610dc7918101908301610dcd565b5b505050565b61076e91905b80821115610de75760008155600101610dd3565b5090565b905600ea8e84a162c4602ea0c61acf85fa1242db8ce550e7a448d613e3c7dff2f06793a165627a7a723058206ab392f107a7aa73b72b027ba2cd2ae63d7d926745e054e647fd0e718bc2301c0029", "networks": { "4": { "events": { @@ -206,5 +206,5 @@ } }, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/TestRegistry.json b/build/contracts/TestRegistry.json index f1dbb55..d1376b4 100644 --- a/build/contracts/TestRegistry.json +++ b/build/contracts/TestRegistry.json @@ -66,8 +66,8 @@ "type": "function" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b6101858061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a4241461007057806350bff6bf146100d7578063f207564e146100e9575bfe5b341561004a57fe5b61005e600160a060020a03600435166100fe565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061011092505050565b005b34156100df57fe5b6100d5610132565b005b34156100f157fe5b6100d560043561013a565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820e9e44509d5dfa9e66497a7ee2a258a475565dacb1f6afa21ebb11740d8e9d9920029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6101858061001c6000396000f300606060405263ffffffff60e060020a600035041663038defd781146100425780630da9a4241461007057806350bff6bf146100d7578063f207564e146100e9575bfe5b341561004a57fe5b61005e600160a060020a03600435166100fe565b60408051918252519081900360200190f35b341561007857fe5b604080516020600460443581810135601f81018490048402850184019095528484526100d59482359460248035600160a060020a031695606494929391909201918190840183828082843750949650509335935061011092505050565b005b34156100df57fe5b6100d5610132565b005b34156100f157fe5b6100d560043561013a565b005b60006020819052908152604090205481565b600160a060020a03831660009081526020819052604090208190555b50505050565b60006000fd5b565b600160a060020a03331660009081526020819052604090208190555b505600a165627a7a72305820b8aa772571a057935c76c8e11f222ac8bb8536e0d759d0f81cb5ec845a2a6c460029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/build/contracts/TxRelay.json b/build/contracts/TxRelay.json index 3536207..a5363bc 100644 --- a/build/contracts/TxRelay.json +++ b/build/contracts/TxRelay.json @@ -67,8 +67,8 @@ "type": "function" } ], - "unlinked_binary": "0x6060604052341561000c57fe5b5b6103ff8061001c6000396000f300606060405263ffffffff60e060020a6000350416632d0335ab8114610037578063b4fadcad14610065578063c47cf5de146100d2575bfe5b341561003f57fe5b610053600160a060020a0360043516610144565b60408051918252519081900360200190f35b341561006d57fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100d09460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965061016395505050505050565b005b34156100da57fe5b610128600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496506103aa95505050505050565b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0381166000908152602081905260409020545b919050565b600060006000610172846103aa565b9250306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b6020831061020f5780518252601f1990920191602091820191016101f0565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f115156102db57fe5b505060408051601f190151600160a060020a038086166000818152602081905293909320805460010190559092508216146103165760006000fd5b84600160a060020a03168460405180828051906020019080838360008314610359575b80518252602083111561035957601f199092019160209182019101610339565b505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f15050505b5b5050505050505050565b60006024825110156103be5750600061015e565b506024810151600160a060020a03165b9190505600a165627a7a723058204c361cca7df3283e56cd08a7512f605c602e629e2d47509e3195e5e2ad6376dd0029", + "unlinked_binary": "0x6060604052341561000c57fe5b5b6103ff8061001c6000396000f300606060405263ffffffff60e060020a6000350416632d0335ab8114610037578063b4fadcad14610065578063c47cf5de146100d2575bfe5b341561003f57fe5b610053600160a060020a0360043516610144565b60408051918252519081900360200190f35b341561006d57fe5b604080516020601f6084356004818101359283018490048402850184019095528184526100d09460ff81351694602480359560443595600160a060020a03606435169560a494930191819084018382808284375094965061016395505050505050565b005b34156100da57fe5b610128600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496506103aa95505050505050565b60408051600160a060020a039092168252519081900360200190f35b600160a060020a0381166000908152602081905260409020545b919050565b600060006000610172846103aa565b9250306000600085600160a060020a0316600160a060020a03168152602001908152602001600020548686336040518086600160a060020a0316600160a060020a0316606060020a02815260140185815260200184600160a060020a0316600160a060020a0316606060020a02815260140183805190602001908083835b6020831061020f5780518252601f1990920191602091820191016101f0565b6001836020036101000a03801982511681845116808217855250505050505090500182600160a060020a0316600160a060020a0316606060020a0281526014019550505050505060405180910390209150600182898989604051806000526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f115156102db57fe5b505060408051601f190151600160a060020a038086166000818152602081905293909320805460010190559092508216146103165760006000fd5b84600160a060020a03168460405180828051906020019080838360008314610359575b80518252602083111561035957601f199092019160209182019101610339565b505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f15050505b5b5050505050505050565b60006024825110156103be5750600061015e565b506024810151600160a060020a03165b9190505600a165627a7a723058204745660e5fb80bc04f5a0f6ba35168ca3cf7706d8563da424b18c4e5c2012c330029", "networks": {}, "schema_version": "0.0.5", - "updated_at": 1499717349642 + "updated_at": 1499785642009 } \ No newline at end of file diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index ddeb721..bcfaf47 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -1,6 +1,7 @@ pragma solidity 0.4.11; import "./Proxy.sol"; + contract IdentityManager { event IdentityCreated( diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index e74c1c7..5a61eaf 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -1,9 +1,9 @@ pragma solidity 0.4.11; + //This contract is meant as a "singleton" forwarding contract. //Eventually, it will be able to forward any transaction to //Any contract that is built to accept it. - contract TxRelay { // Note: This is a local nonce. diff --git a/contracts/misc/MetaTestRegistry.sol b/contracts/misc/MetaTestRegistry.sol index eb5b269..08b23ec 100644 --- a/contracts/misc/MetaTestRegistry.sol +++ b/contracts/misc/MetaTestRegistry.sol @@ -1,5 +1,6 @@ pragma solidity 0.4.11; + // This contract is only used for testing purposes. contract MetaTestRegistry { diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 0668912..0000000 --- a/package-lock.json +++ /dev/null @@ -1,7442 +0,0 @@ -{ - "name": "uport-identity", - "version": "1.0.5", - "lockfileVersion": 1, - "dependencies": { - "@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", - "dev": true, - "optional": true - }, - "@types/node": { - "version": "6.0.78", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.78.tgz", - "integrity": "sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==", - "dev": true - }, - "abstract-leveldown": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz", - "integrity": "sha1-s7/tuITraToSd18MVenwpCDM7mQ=", - "dev": true - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true - }, - "acorn": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", - "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=", - "dev": true - }, - "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", - "dev": true - }, - "aes-js": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-0.2.4.tgz", - "integrity": "sha1-lLiBq3FyhtAV+iGeCPtmcJ3aWj0=", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true - }, - "ansi-align": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", - "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true - }, - "aproba": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true - }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", - "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", - "dev": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-eventemitter": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.3.tgz", - "integrity": "sha1-959IDf2mZFqXvWFCwBcVDWO05w4=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-cli": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", - "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", - "dev": true - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true - }, - "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "dev": true - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "dev": true - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", - "dev": true - }, - "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "dev": true - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true - }, - "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "dev": true - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true - }, - "babelify": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", - "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", - "dev": true - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base-x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-1.1.0.tgz", - "integrity": "sha1-QtPXF0dPnqAiB/bRqh9CaRPut6w=", - "dev": true - }, - "base32.js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", - "integrity": "sha1-tYLexpPC8R6JPPBk7mrFthMaIgI=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true - }, - "bignumber.js": { - "version": "github:debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", - "dev": true - }, - "bip39": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.2.0.tgz", - "integrity": "sha1-QOc/cGdMJn8UjNv4N08qUL4Waw0=", - "dev": true - }, - "bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "dev": true - }, - "bitcore-lib": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-0.14.0.tgz", - "integrity": "sha1-IcsjWf57mXo7e3c+t9cnWuN9ZE4=", - "dev": true, - "dependencies": { - "bn.js": { - "version": "https://registry.npmjs.org/bn.js/-/bn.js-2.0.4.tgz", - "integrity": "sha1-Igp81nf38b+pNif/QZN3b+eBlIA=", - "dev": true - }, - "bs58": { - "version": "https://registry.npmjs.org/bs58/-/bs58-2.0.0.tgz", - "integrity": "sha1-crcTvtIjoKxRi72g484/SBfznrU=", - "dev": true - }, - "buffer-compare": { - "version": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.0.0.tgz", - "integrity": "sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI=", - "dev": true - }, - "elliptic": { - "version": "https://registry.npmjs.org/elliptic/-/elliptic-3.0.3.tgz", - "integrity": "sha1-hlybQgv75VAGuflp+XoNLESWZZU=", - "dev": true, - "dependencies": { - "brorand": { - "version": "https://registry.npmjs.org/brorand/-/brorand-1.0.5.tgz", - "integrity": "sha1-B7VMowKGq9Fxig4qgwgD79yb+gQ=", - "dev": true - }, - "hash.js": { - "version": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", - "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", - "dev": true - } - } - }, - "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "bitcore-mnemonic": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/bitcore-mnemonic/-/bitcore-mnemonic-1.2.5.tgz", - "integrity": "sha1-Rfq6ABY8VXoFQgL/6aIPuiNgaF8=", - "dev": true - }, - "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", - "dev": true - }, - "blakejs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", - "dev": true - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "bn.js": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", - "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true - }, - "borc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/borc/-/borc-2.0.2.tgz", - "integrity": "sha1-jq4aTVmc/f38n6hXy7ppyQ6DKR8=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-3.0.1.tgz", - "integrity": "sha1-gHZS0Q453jfp40lyR+3HmLt0b3Y=", - "dev": true - } - } - }, - "boxen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", - "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", - "dev": true, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true - }, - "brfs": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.4.3.tgz", - "integrity": "sha1-22ddb16SPm3wh/ylhZyQkKrtMhY=", - "dev": true - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true - }, - "browserify-sha3": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.1.tgz", - "integrity": "sha1-P/NKMAbvFcD7NWflQbkaI0ASPRE=", - "dev": true - }, - "browserify-zlib-next": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-zlib-next/-/browserify-zlib-next-1.0.1.tgz", - "integrity": "sha1-iAQDhotPYmLw8+rPBGmav58Hb58=", - "dev": true, - "dependencies": { - "pako": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.5.tgz", - "integrity": "sha1-0iBd/ludqK95fnwWPbTR+E5GALw=", - "dev": true - } - } - }, - "bs58": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-3.1.0.tgz", - "integrity": "sha1-1MJjiL9IBMrHFBQbGUWqR+XrJI4=", - "dev": true - }, - "bs58check": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-1.3.4.tgz", - "integrity": "sha1-xSVABzdJEXcU+gQsMEfrj5FRy/g=", - "dev": true - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-loader": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-loader/-/buffer-loader-0.0.1.tgz", - "integrity": "sha1-TWd8qS3YiTEIeLAqL7z6txICTPI=", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true - }, - "checkpoint-store": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", - "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "cids": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.4.2.tgz", - "integrity": "sha1-8UFOePpGb+l6fOnNbAOJKZO+8wc=", - "dev": true, - "dependencies": { - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "multihashes": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", - "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", - "dev": true - } - } - }, - "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true - }, - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "coinstring": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz", - "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", - "dev": true, - "dependencies": { - "bs58": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz", - "integrity": "sha1-VZCNWPGYKrogCPob7Y+RmYopv40=", - "dev": true - } - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true - }, - "commander": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", - "integrity": "sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true - }, - "configstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", - "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "content": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/content/-/content-3.0.4.tgz", - "integrity": "sha1-yj3eBEgPElGbcVJuxEvUiN37P+8=", - "dev": true, - "dependencies": { - "boom": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.1.0.tgz", - "integrity": "sha1-Awj6jpJM1tQtnDv0iDvcmPDnHfg=", - "dev": true - }, - "hoek": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", - "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", - "dev": true - } - } - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cpr": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/cpr/-/cpr-0.4.3.tgz", - "integrity": "sha1-CiPktuwj87jMekBey1z9x3j33iU=", - "dev": true, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true - }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", - "dev": true - } - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true - }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true - }, - "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true - }, - "crypto-js": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz", - "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true - }, - "deferred-leveldown": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz", - "integrity": "sha1-XSXDMQ9f6QmUb2JA3J+Q3RCace8=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "delimit-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=", - "dev": true - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "dexie": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-1.5.1.tgz", - "integrity": "sha1-rDrVoOuvfm5Cdg21hxBBjUp1ZiQ=", - "dev": true - }, - "dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", - "dev": true - }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true - }, - "drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", - "dev": true - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true - }, - "engine.io": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz", - "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", - "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", - "dev": true, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "dependencies": { - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true - }, - "es-abstract": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", - "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", - "dev": true - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz", - "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=", - "dev": true, - "dependencies": { - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", - "dev": true - }, - "esutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", - "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "optional": true - } - } - }, - "esprima": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz", - "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", - "dev": true - }, - "eth-signer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/eth-signer/-/eth-signer-0.2.2.tgz", - "integrity": "sha1-QSlrLqX5sifuWA8wXGnCGWcwbu4=", - "dev": true - }, - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", - "dev": true - }, - "ethereumjs-account": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.4.tgz", - "integrity": "sha1-+MMCMby3B/RRTYoFLB+doQNiTUc=", - "dev": true - }, - "ethereumjs-block": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.2.2.tgz", - "integrity": "sha1-LsdTSlkCG47JuDww5JaQxuuu3aE=", - "dev": true, - "dependencies": { - "ethereum-common": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.16.tgz", - "integrity": "sha1-mh4Wnq00q3XgifUMpRK/0PvRJlU=", - "dev": true - } - } - }, - "ethereumjs-testrpc": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/ethereumjs-testrpc/-/ethereumjs-testrpc-3.0.5.tgz", - "integrity": "sha1-DVxRdND5InjHzIeFuFpar+3XUTo=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.1.4.tgz", - "integrity": "sha1-KbO7aT27I46Ity6sL7iWUIiLLVk=", - "dev": true - }, - "web3": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", - "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - } - } - } - } - }, - "ethereumjs-tx": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.1.tgz", - "integrity": "sha1-1pCavPs32mQE/BgSTTUe2iAEfaw=", - "dev": true, - "dependencies": { - "ethereumjs-util": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", - "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", - "dev": true - } - } - }, - "ethereumjs-util": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", - "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", - "dev": true - }, - "ethereumjs-vm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.0.2.tgz", - "integrity": "sha1-hOI3KlcVqApi9/KjEvjGRTfoqEI=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "ethereumjs-wallet": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz", - "integrity": "sha1-gnY7Fpfuenlr5xVdqd+0my+Yz9s=", - "dev": true - }, - "ethjs-abi": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.9.tgz", - "integrity": "sha1-UhHErcOiB5OtMZqdIgTkOAfnb+o=", - "dev": true, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "js-sha3": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", - "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", - "dev": true - } - } - }, - "ethjs-util": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.4.tgz", - "integrity": "sha1-HItoeSV0RO9NPz+7rC3tEs2ZfZM=", - "dev": true - }, - "ethpm": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ethpm/-/ethpm-0.0.9.tgz", - "integrity": "sha1-SvW5k7jC9eGU+ytgmhNEl0QrLjo=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true - } - } - }, - "ethpm-registry": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ethpm-registry/-/ethpm-registry-0.0.8.tgz", - "integrity": "sha1-nZTQiqJU4VAqB0QW2MA9b0zQZdM=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "solc": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.11.tgz", - "integrity": "sha1-JSLrQ+fAQZusIGC5biCiWTv7Xos=", - "dev": true, - "dependencies": { - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true - } - } - }, - "truffle": { - "version": "3.2.93", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-3.2.93.tgz", - "integrity": "sha1-qbaZS2xFV54e2DZOTT0BD30fiHc=", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "dependencies": { - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true - } - } - } - } - }, - "ethpm-spec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-1.0.1.tgz", - "integrity": "sha1-rTwJrgSSrT0+x7lLf1/YBX1N65E=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true - }, - "expand-template": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz", - "integrity": "sha1-bDAzIxd6YrGyLAcCefeGEoe2mxo=", - "dev": true - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "fake-merkle-patricia-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", - "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", - "dev": true - }, - "falafel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", - "integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true - }, - "filled-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", - "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", - "dev": true - }, - "finalhandler": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", - "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true - }, - "flatmap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/flatmap/-/flatmap-0.0.3.tgz", - "integrity": "sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ=", - "dev": true - }, - "for-each": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", - "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", - "dev": true - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true - }, - "fs-pull-blob-store": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fs-pull-blob-store/-/fs-pull-blob-store-0.3.0.tgz", - "integrity": "sha1-tIl1e0RFzcqOLqs1qXRKRPNFOxY=", - "dev": true, - "dependencies": { - "pull-file": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz", - "integrity": "sha1-s8pAUwbggvnUUoKIkzutsrZWNls=", - "dev": true - } - } - }, - "fs-readdir-recursive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", - "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true - }, - "get-browser-rtc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz", - "integrity": "sha1-u81AyEUaftTvXDc7gWmkCd0dEdk=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "github-download": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/github-download/-/github-download-0.5.0.tgz", - "integrity": "sha1-92R6cKrEMm+wkeV4bI9mrhV9pRs=", - "dev": true, - "dependencies": { - "fs-extra": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.24.0.tgz", - "integrity": "sha1-1OQ0KpZnXLeEZjOmCZJJMytTmVI=", - "dev": true - } - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "dependencies": { - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "graphlib": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.1.tgz", - "integrity": "sha1-QjUsUrovTQNctWbrkfc5X3bryVE=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "hapi": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/hapi/-/hapi-15.2.0.tgz", - "integrity": "sha1-VwTKLAS2OGwDyvnukB8d4IAxbSM=", - "dev": true, - "dependencies": { - "accept": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.2.tgz", - "integrity": "sha1-VRh07Y8saLJwe/8qsl/hNT5GHWs=", - "dev": true - }, - "ammo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.2.tgz", - "integrity": "sha1-NmxV97xPLyQhjtOk3UuN8TXC5so=", - "dev": true - }, - "boom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.0.0.tgz", - "integrity": "sha1-fllGkmTq3bdP7fvBsWUk1pppRXc=", - "dev": true - }, - "call": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/call/-/call-3.0.3.tgz", - "integrity": "sha1-5HSN27t/Qa5AzuBV+LJwtzO/fI0=", - "dev": true - }, - "catbox": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.2.tgz", - "integrity": "sha1-RnIbHJmWdRP9e36UUXBqBe3+1a0=", - "dev": true - }, - "catbox-memory": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.3.tgz", - "integrity": "sha1-36qcFj+tND2a3W18H9x7Qps2nDg=", - "dev": true - }, - "cryptiles": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.0.2.tgz", - "integrity": "sha1-7M30qFuHVPFdC1Mg1Kt41A0PokQ=", - "dev": true - }, - "heavy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.2.tgz", - "integrity": "sha1-27Zs2l8BellPxsgwHfaZnqjVM/A=", - "dev": true - }, - "hoek": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.0.2.tgz", - "integrity": "sha1-e5afTIoa+KOMosZmxmv6bEL+LN0=", - "dev": true - }, - "iron": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.3.tgz", - "integrity": "sha1-DA0yUmYdihxhS+2e07B32A6g/Xg=", - "dev": true - }, - "items": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", - "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", - "dev": true - }, - "joi": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz", - "integrity": "sha1-iNZIkJFavrEnzXVwJxFtUN8+aN8=", - "dev": true, - "dependencies": { - "isemail": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", - "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", - "dev": true - }, - "moment": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "integrity": "sha1-s1snxH5X7S3ccAU9awe+zbKRdBw=", - "dev": true - } - } - }, - "mimos": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", - "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", - "dev": true, - "dependencies": { - "mime-db": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=", - "dev": true - } - } - }, - "podium": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/podium/-/podium-1.2.3.tgz", - "integrity": "sha1-XJW3zC9ch90yTgrUqTY6xi1ms3E=", - "dev": true - }, - "shot": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/shot/-/shot-3.3.2.tgz", - "integrity": "sha1-aRwmEXWd7MIEh7INJcwpnznl+bc=", - "dev": true - }, - "statehood": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/statehood/-/statehood-5.0.0.tgz", - "integrity": "sha1-ziKFqr6uOYrofLunRhhLdZm4+jE=", - "dev": true - }, - "subtext": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.3.0.tgz", - "integrity": "sha1-36yQSS7DVmn9bgDG5dk4sG18z7s=", - "dev": true, - "dependencies": { - "content": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/content/-/content-3.0.2.tgz", - "integrity": "sha1-8di0w6uyHqTA4hc/Q6wCKaTtbRw=", - "dev": true - }, - "pez": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.2.tgz", - "integrity": "sha1-0dEjcXkqVYluI+IeUJxAle0IHbI=", - "dev": true, - "dependencies": { - "b64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.2.tgz", - "integrity": "sha1-ep1gRmrfe43hFMvfZRpf38yQiU0=", - "dev": true - }, - "nigel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", - "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", - "dev": true, - "dependencies": { - "vise": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", - "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", - "dev": true - } - } - } - } - }, - "wreck": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/wreck/-/wreck-10.0.0.tgz", - "integrity": "sha1-mKuIL4XhalJjMlB/EB9aeEEWIng=", - "dev": true - } - } - }, - "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "dev": true - } - } - }, - "hapi-set-header": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hapi-set-header/-/hapi-set-header-1.0.2.tgz", - "integrity": "sha1-KvrgAsZxnW1U8/qIRi+CKJLS3xM=", - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true - }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true - }, - "hash.js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", - "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==", - "dev": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true - }, - "hdkey": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-0.7.1.tgz", - "integrity": "sha1-yu5L6BqneSHpCbjSKN0PKayu5jI=", - "dev": true - }, - "heap": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", - "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true - }, - "hosted-git-info": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", - "dev": true - }, - "idb-pull-blob-store": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/idb-pull-blob-store/-/idb-pull-blob-store-0.5.1.tgz", - "integrity": "sha1-nBP58Q6wWqOp8g71cVE8R1efddQ=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true - }, - "interface-connection": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/interface-connection/-/interface-connection-0.3.2.tgz", - "integrity": "sha1-5JSYg/bqeft+3QHuP0/KR6Kf0sQ=", - "dev": true - }, - "interface-pull-blob-store": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/interface-pull-blob-store/-/interface-pull-blob-store-0.6.0.tgz", - "integrity": "sha1-1Mo4v6Y00iwA9jHJANiTnzPIXrM=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-address": { - "version": "5.8.8", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.8.8.tgz", - "integrity": "sha1-X9H490ZSSft9Kzwe7HtB0p0fG3Y=", - "dev": true, - "dependencies": { - "jsbn": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "integrity": "sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=", - "dev": true - } - } - }, - "ipfs": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.18.0.tgz", - "integrity": "sha1-ihJUu70enLP3f8bGau6Fa1ZqkYk=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true - }, - "hoek": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", - "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true - } - } - }, - "ipfs-api": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-11.2.0.tgz", - "integrity": "sha1-BlKdB+gCUIKzS9h6BfxxZ5if7Jg=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "ipfs-bitswap": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-0.8.3.tgz", - "integrity": "sha1-NUXZEBHTViqMz4ePx4fjt7tV5+M=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "cids": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.3.6.tgz", - "integrity": "sha1-oKOiw4YQWpLs2cii8iOb6y9UTBU=", - "dev": true - }, - "multihashes": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", - "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", - "dev": true - } - } - }, - "ipfs-block": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.5.5.tgz", - "integrity": "sha1-lWpNGnWMJXT7U2JjRlXM+hwOvSQ=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "ipfs-block-service": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.7.2.tgz", - "integrity": "sha1-GFks8UgZOR0Nx6H9s75iAdPG/uI=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "cids": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.3.6.tgz", - "integrity": "sha1-oKOiw4YQWpLs2cii8iOb6y9UTBU=", - "dev": true - }, - "multihashes": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", - "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", - "dev": true - } - } - }, - "ipfs-multipart": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ipfs-multipart/-/ipfs-multipart-0.1.0.tgz", - "integrity": "sha1-Wo7RP0LoLYvvfS4VHY6vXjow4+o=", - "dev": true - }, - "ipfs-repo": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.11.3.tgz", - "integrity": "sha1-65IZ+gkJVZz3LAzLZUniCKgIeko=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "multihashes": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", - "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", - "dev": true - } - } - }, - "ipfs-unixfs": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-0.1.12.tgz", - "integrity": "sha1-R/SFd2/Qhh1w4Xcf2rjk61zu3DM=", - "dev": true - }, - "ipfs-unixfs-engine": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.13.0.tgz", - "integrity": "sha1-RgBDTkhyxViNryxOBOvPUZ1/P4o=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "browserify-sha3": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.2.tgz", - "integrity": "sha1-JWzMx+2XLEqA60mcgqrMy+5sCkU=", - "dev": true - }, - "cids": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.2.0.tgz", - "integrity": "sha1-Cnn2IcNOs/+cO+UF/aK4CXEIR/w=", - "dev": true - }, - "ipld-dag-pb": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.8.0.tgz", - "integrity": "sha1-juNfLGgcasBGMA6Mgcwa2bhAxOI=", - "dev": true - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, - "multibase": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.2.0.tgz", - "integrity": "sha1-jA+dX/M/hj3Eciyn0G3B3Z5fAG4=", - "dev": true - }, - "multicodec": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.0.tgz", - "integrity": "sha1-AAZ/zAUX1XG+wcbzJdLJh7OnTMg=", - "dev": true - }, - "multihashing-async": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.2.0.tgz", - "integrity": "sha1-jewZWiD+QCzKOOJyjWk2B9HFo3s=", - "dev": true - }, - "varint": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/varint/-/varint-4.0.1.tgz", - "integrity": "sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk=", - "dev": true - } - } - }, - "ipld-dag-cbor": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-0.8.6.tgz", - "integrity": "sha1-oKk/T1TbayYgDtsX3VC+H9u71dY=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "multihashes": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", - "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", - "dev": true - } - } - }, - "ipld-dag-pb": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.9.5.tgz", - "integrity": "sha1-6MfcYaTdg6hlhzVVkmTuT+3YtjU=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "is-ipfs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.3.0.tgz", - "integrity": "sha1-yZNfIrGd9QqX57Jl+VreTCka05U=", - "dev": true - }, - "multihashes": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.3.3.tgz", - "integrity": "sha1-GNdNjCOTrzmq8KyPT9bYiNQ/Lyk=", - "dev": true - } - } - }, - "ipld-resolver": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ipld-resolver/-/ipld-resolver-0.2.0.tgz", - "integrity": "sha1-0njtcqQ6mKlt9hGeVD5RLW4l0aI=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "browserify-sha3": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.2.tgz", - "integrity": "sha1-JWzMx+2XLEqA60mcgqrMy+5sCkU=", - "dev": true - }, - "cids": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.2.0.tgz", - "integrity": "sha1-Cnn2IcNOs/+cO+UF/aK4CXEIR/w=", - "dev": true - }, - "ipfs-block-service": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.6.0.tgz", - "integrity": "sha1-5TekYk6wBlh/bmGga8F1Dq5Mt0o=", - "dev": true - }, - "ipld-dag-pb": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.8.0.tgz", - "integrity": "sha1-juNfLGgcasBGMA6Mgcwa2bhAxOI=", - "dev": true - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, - "multibase": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.2.0.tgz", - "integrity": "sha1-jA+dX/M/hj3Eciyn0G3B3Z5fAG4=", - "dev": true - }, - "multicodec": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.0.tgz", - "integrity": "sha1-AAZ/zAUX1XG+wcbzJdLJh7OnTMg=", - "dev": true - }, - "multihashing-async": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.2.0.tgz", - "integrity": "sha1-jewZWiD+QCzKOOJyjWk2B9HFo3s=", - "dev": true - }, - "varint": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/varint/-/varint-4.0.1.tgz", - "integrity": "sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk=", - "dev": true - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-circular": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-circular/-/is-circular-1.0.1.tgz", - "integrity": "sha1-ZbBHaoWI5Ua4CHwdZtTAjYKjFnk=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true - }, - "is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", - "dev": true - }, - "is-ipfs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.2.1.tgz", - "integrity": "sha1-EDV9P93Hze1LbqbMHab+fY2EtDg=", - "dev": true - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isemail": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", - "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "items": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", - "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", - "dev": true - }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true - }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, - "joi": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", - "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", - "dev": true, - "dependencies": { - "hoek": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", - "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", - "dev": true - } - } - }, - "js-sha3": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.3.1.tgz", - "integrity": "sha1-hhIoAhQvCChQKg0d7h2V4lO7AkM=", - "dev": true - }, - "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-to-markdown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-schema-to-markdown/-/json-schema-to-markdown-1.0.3.tgz", - "integrity": "sha1-RBHKIisrZ2DmFmY/C7K9drsm67g=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json-text-sequence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha1-py8hfcSvxGKf/1/rME3BvVGi89I=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonschema": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.1.1.tgz", - "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk=", - "dev": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "keccak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.3.0.tgz", - "integrity": "sha512-JgsKPxYhcJxKrV+TrCyg/GwZbOjhpRPrz2kG8xbAsUaIDelUlKjm08YcwBO9Fm8sqf/Kg8ZWkk6nWujhLykfvw==", - "dev": true - }, - "keccakjs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.1.tgz", - "integrity": "sha1-HWM6+QfvMFu/ny+mFtVsRFYd+k0=", - "dev": true - }, - "keypair": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.1.tgz", - "integrity": "sha1-dgNxknCvtlZO04oiCHoG/Jqk6hs=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true - }, - "latest-version": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", - "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "dev": true - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true - }, - "left-pad": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.1.3.tgz", - "integrity": "sha1-YS9hwDPzqeCOk58crr7qQbbzGZo=", - "dev": true - }, - "level-codec": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz", - "integrity": "sha1-9d8KmVgvdtrEOFUVGrb05NDWAEU=", - "dev": true - }, - "level-errors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz", - "integrity": "sha1-NYXmI5dMc3qTdVSSpDwCZ82kQl8=", - "dev": true - }, - "level-iterator-stream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", - "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "level-ws": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", - "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true - } - } - }, - "levelup": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.8.tgz", - "integrity": "sha1-+0QsSI776hBD9+uZKaeSp0+9HaY=", - "dev": true - }, - "libp2p-crypto": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.8.8.tgz", - "integrity": "sha1-3IpJy87bUjnel3YZ8tGN+fwRDzk=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "tweetnacl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", - "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", - "dev": true - } - } - }, - "libp2p-crypto-secp256k1": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.1.4.tgz", - "integrity": "sha1-IRN4/jqFnYmtEgOqng111obIW98=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "libp2p-identify": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/libp2p-identify/-/libp2p-identify-0.3.3.tgz", - "integrity": "sha1-cObE0yK570dadc5XtLtomK23Xyk=", - "dev": true - }, - "libp2p-ipfs": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/libp2p-ipfs/-/libp2p-ipfs-0.15.0.tgz", - "integrity": "sha1-4suhQYWwTrz3lIhvn0iwTEjjkLs=", - "dev": true - }, - "libp2p-ipfs-browser": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/libp2p-ipfs-browser/-/libp2p-ipfs-browser-0.16.0.tgz", - "integrity": "sha1-/LLAsNvKChxhdakhjSj4hhk5wPk=", - "dev": true - }, - "libp2p-secio": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/libp2p-secio/-/libp2p-secio-0.6.8.tgz", - "integrity": "sha1-KaRKciWg9hSRmfzAuwl3KskV7gM=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "libp2p-spdy": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/libp2p-spdy/-/libp2p-spdy-0.10.6.tgz", - "integrity": "sha1-p8GCjR3mEVjixDL2wtHbyOJTgDU=", - "dev": true - }, - "libp2p-swarm": { - "version": "0.26.19", - "resolved": "https://registry.npmjs.org/libp2p-swarm/-/libp2p-swarm-0.26.19.tgz", - "integrity": "sha1-MF+rEItuuu7aoZCxlhossKIk+X4=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "libp2p-tcp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.9.4.tgz", - "integrity": "sha1-nA3EF30zQeBPnxQL1VpLjcaHctg=", - "dev": true - }, - "libp2p-webrtc-star": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.5.0.tgz", - "integrity": "sha1-PNHlVJUQDkcy9eP+eKruKNjQcSo=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "libp2p-websockets": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.9.6.tgz", - "integrity": "sha1-Ht8vVDqUvhiFynpWWQ0WytVngGs=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lock": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/lock/-/lock-0.1.3.tgz", - "integrity": "sha1-9mwcqgxBlW4UJmCAOe1ZtxvfGFQ=", - "dev": true - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", - "dev": true - }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, - "lodash.flatmap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.has": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", - "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isequalwith": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz", - "integrity": "sha1-Jmcm3dUo+FTyH06pigZWBuD7xrA=", - "dev": true - }, - "lodash.isfunction": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz", - "integrity": "sha1-TbcJ/IG8So/XEnpFilNGxc3OLGs=", - "dev": true - }, - "lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", - "dev": true - }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=", - "dev": true - }, - "lodash.noop": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", - "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=", - "dev": true - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", - "dev": true - }, - "lodash.range": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz", - "integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=", - "dev": true - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", - "dev": true - }, - "lodash.values": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", - "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=", - "dev": true - }, - "looper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", - "integrity": "sha1-Zs0Md0rz1P7axTeU90LbVtqPCew=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true - }, - "ltgt": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", - "integrity": "sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ=", - "dev": true - }, - "mafmt": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-2.1.8.tgz", - "integrity": "sha1-2Lf3Y75W22KgNDvFxH04qyy+9F4=", - "dev": true - }, - "memdown": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.2.4.tgz", - "integrity": "sha1-zZo0qvB01TRFonEQjrS43U7A8n8=", - "dev": true - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "merkle-patricia-tree": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.1.2.tgz", - "integrity": "sha1-ckSD1Ut1YxpI/t2lXhFAUXBqcpE=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", - "dev": true - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true - }, - "mocha": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", - "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", - "dev": true, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true - }, - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true - } - } - }, - "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multiaddr": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-2.3.0.tgz", - "integrity": "sha1-VmNIJPSLy9hAX9VDTDGyd0JMYvw=", - "dev": true, - "dependencies": { - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - } - } - }, - "multibase": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.3.4.tgz", - "integrity": "sha1-+6iwqslyT2LiR4JVfioGLjDTrn8=", - "dev": true, - "dependencies": { - "base-x": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.0.tgz", - "integrity": "sha1-d7VvAxEHC3gLPIpfU0vqxH5QZwI=", - "dev": true - } - } - }, - "multicodec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.1.7.tgz", - "integrity": "sha1-ZY8tFfQvoZ5mCS/pF6BRob8H5B4=", - "dev": true - }, - "multihashes": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.2.2.tgz", - "integrity": "sha1-jM8uO6PQQeEUZyjeDYpNqeixglE=", - "dev": true - }, - "multihashing-async": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.5.tgz", - "integrity": "sha1-6UtAimjDbDkxgBRuP62RJhCOtqk=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - }, - "multihashes": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", - "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", - "dev": true - } - } - }, - "multipart-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/multipart-stream/-/multipart-stream-2.0.1.tgz", - "integrity": "sha1-GVyctLLEHnjHKh6POMfQ66HNC6A=", - "dev": true - }, - "multistream-select": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-0.13.5.tgz", - "integrity": "sha1-/jNnYgLmRhkFSu60UzaogcycVOk=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "murmurhash3js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz", - "integrity": "sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=", - "dev": true - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "dev": true - }, - "ndjson": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", - "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "node-abi": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.0.3.tgz", - "integrity": "sha1-DKZ+XmZ7jhNDVJyhcVOoFdC7/ao=", - "dev": true - }, - "node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", - "dev": true - }, - "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", - "dev": true - }, - "node-nailgun-client": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/node-nailgun-client/-/node-nailgun-client-0.1.0.tgz", - "integrity": "sha1-tkJNsGA3gaGT82c4Xi1hXKbfILI=", - "dev": true - }, - "node-nailgun-server": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/node-nailgun-server/-/node-nailgun-server-0.1.3.tgz", - "integrity": "sha1-plCRjkhhXI18TSOT22cxblrQEvE=", - "dev": true - }, - "node-plantuml": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/node-plantuml/-/node-plantuml-0.5.0.tgz", - "integrity": "sha1-A8LthW5rJyxxShVoRTp0fCZv3B8=", - "dev": true - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, - "node-webcrypto-ossl": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/node-webcrypto-ossl/-/node-webcrypto-ossl-1.0.26.tgz", - "integrity": "sha512-psdPxEdu56vMLND0LuvuO1qUwuDjmddo1k4+1/enmuRQ0wtiGdClbSv1fuSd/HGaL/x2PKUbJU0AgJCnGqpb8A==", - "dev": true, - "optional": true - }, - "nodegit-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz", - "integrity": "sha1-VyKxhPLfcycWEGSnkdLoQskWezQ=", - "dev": true - }, - "nodeify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", - "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", - "dev": true - }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", - "dev": true - }, - "normalize-package-data": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true - }, - "npm-programmatic": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/npm-programmatic/-/npm-programmatic-0.0.6.tgz", - "integrity": "sha1-PI9NuyEO/WW5nualrHbye01da3g=", - "dev": true - }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "dev": true, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-inspect": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.2.2.tgz", - "integrity": "sha1-yCEV5PzIiK6hTWTCLk8X9qcNXlo=", - "dev": true - }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true - }, - "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true - }, - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "dev": true - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "original-require": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", - "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true - }, - "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "dev": true - }, - "pako": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.3.tgz", - "integrity": "sha1-X1FbDGci4ZgpIK6ABerLC3ynPM8=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true - }, - "parse-headers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", - "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true - }, - "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true - }, - "peer-book": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/peer-book/-/peer-book-0.3.2.tgz", - "integrity": "sha1-Kl9CrLGbvDFwoTrv+0szEDiP6vQ=", - "dev": true, - "dependencies": { - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - } - } - }, - "peer-id": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.8.7.tgz", - "integrity": "sha1-yb2dFYjUzM5xdSqQSa+p8QF2oz0=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "base-x": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.2.tgz", - "integrity": "sha1-v4c4YbdRQnm3lp80CSnquHwR0TA=", - "dev": true - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true - }, - "multihashes": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.5.tgz", - "integrity": "sha1-mwU8Uf3HTXce3eIOG8kdS77D+mk=", - "dev": true - } - } - }, - "peer-info": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/peer-info/-/peer-info-0.8.5.tgz", - "integrity": "sha1-uPvuY3ZAXATItkRhDNBiMcQmKh4=", - "dev": true - }, - "pegjs": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", - "dev": true - }, - "pem-jwk": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-1.5.1.tgz", - "integrity": "sha1-eoY3/S9nqCflfAxC4cI8P9Us+wE=", - "dev": true, - "dependencies": { - "asn1.js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-1.0.3.tgz", - "integrity": "sha1-KBuj7B8kSP52X5Kk7s+IP+E2S1Q=", - "dev": true - }, - "bn.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-1.3.0.tgz", - "integrity": "sha1-DbTL+W+PI7dC9by50ap6mZSgXoM=", - "dev": true, - "optional": true - } - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true - }, - "plantuml-encoder": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.2.4.tgz", - "integrity": "sha1-XwBW98BL12ru9CC/zd7zOen0QIE=", - "dev": true - }, - "prebuild-install": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.1.2.tgz", - "integrity": "sha1-2a4MqFMw4Dli2TKS+VqLRMLr9QU=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", - "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", - "dev": true - }, - "promisify-es6": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promisify-es6/-/promisify-es6-1.0.2.tgz", - "integrity": "sha1-Ywk1U+Ob5QNtdXtFX7k9FV2ktYk=", - "dev": true - }, - "promisify-node": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.4.0.tgz", - "integrity": "sha1-MoA4dOxBF4TkeGwzmQKoeheaRpw=", - "dev": true - }, - "protocol-buffers": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/protocol-buffers/-/protocol-buffers-3.2.1.tgz", - "integrity": "sha1-NyWOF+JKCC8G67F3MekoUdHHaIk=", - "dev": true - }, - "protocol-buffers-schema": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.1.tgz", - "integrity": "sha1-rRURQYd8aviChkeFGvZqDbaSdfU=", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "pull-block": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pull-block/-/pull-block-1.2.0.tgz", - "integrity": "sha1-45R/CoNCboR+zs7LC5ujCLAZs+E=", - "dev": true - }, - "pull-cat": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", - "integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs=", - "dev": true - }, - "pull-defer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz", - "integrity": "sha1-CIew/7MK8ypW2+z6csFnInHwexM=", - "dev": true - }, - "pull-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pull-file/-/pull-file-1.0.0.tgz", - "integrity": "sha1-WgywNteO4Q4+C0KT389u/6EDYxg=", - "dev": true - }, - "pull-handshake": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz", - "integrity": "sha1-YACg/QGIhM39c3JU+Mxgqypjd5E=", - "dev": true - }, - "pull-length-prefixed": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pull-length-prefixed/-/pull-length-prefixed-1.3.0.tgz", - "integrity": "sha512-FkxMYPNUSFjEDEXuS6MAaKwagQAN0sonifeC+NeutQmgXy+WBdPOtPzDT1dyT69Io1wzraZ+GzXAbBGnFcjdFQ==", - "dev": true - }, - "pull-pair": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz", - "integrity": "sha1-fuQnJj/fTaglOXrAoF4atLdL120=", - "dev": true - }, - "pull-paramap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz", - "integrity": "sha1-UaQZPOnI1yFdla2tReK824STsjo=", - "dev": true, - "dependencies": { - "looper": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", - "integrity": "sha1-dwat7VmpntygbmtUu4bI7BnJUVU=", - "dev": true - } - } - }, - "pull-pushable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.1.1.tgz", - "integrity": "sha1-hmZqu+P1QC8ffq0D7v1pt4Xspbg=", - "dev": true - }, - "pull-reader": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.9.tgz", - "integrity": "sha1-0umtALz7VOYqpm1Cwtu8tetoQ7A=", - "dev": true - }, - "pull-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pull-sort/-/pull-sort-1.0.0.tgz", - "integrity": "sha1-Djn7mjjlQXW+/kGOq6ISI/LA5wU=", - "dev": true - }, - "pull-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.0.tgz", - "integrity": "sha1-WdAzpoFdTjCX1Hw9KxiTqeWKI1E=", - "dev": true - }, - "pull-stream-to-stream": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/pull-stream-to-stream/-/pull-stream-to-stream-1.3.4.tgz", - "integrity": "sha1-P4HYIWvRjSv9GhmBkEcRgOJzg5k=", - "dev": true - }, - "pull-through": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz", - "integrity": "sha1-jdYjFCY+Wc9Qlur7sSeitu8xBzU=", - "dev": true, - "dependencies": { - "looper": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", - "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", - "dev": true - } - } - }, - "pull-traverse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pull-traverse/-/pull-traverse-1.0.3.tgz", - "integrity": "sha1-dPtde+f6a9enjpeTPhmbeUWGaTg=", - "dev": true - }, - "pull-utf8-decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz", - "integrity": "sha1-p6+iOE0eZBWl1gIFQSbMjeO8vOc=", - "dev": true - }, - "pull-window": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", - "integrity": "sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA=", - "dev": true - }, - "pull-write": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz", - "integrity": "sha1-3d6jFJO0j2douEooHQHrO1Mf4Lg=", - "dev": true, - "dependencies": { - "looper": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", - "integrity": "sha1-dwat7VmpntygbmtUu4bI7BnJUVU=", - "dev": true - } - } - }, - "pull-write-file": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/pull-write-file/-/pull-write-file-0.2.4.tgz", - "integrity": "sha1-Q3NErrIYn2XmeO0a838PdgpUU+8=", - "dev": true - }, - "pull-ws": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.9.tgz", - "integrity": "sha1-ipBQKkHZBY/LMJatSCOg8YnWE7o=", - "dev": true - }, - "pull-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pull-zip/-/pull-zip-2.0.1.tgz", - "integrity": "sha1-4GQc6v+WSvJ1ltqsBwDnmzgQKPU=", - "dev": true - }, - "pump": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", - "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true - } - } - }, - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true - }, - "readable-stream": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", - "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", - "dev": true - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "dev": true - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true - }, - "relative-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz", - "integrity": "sha1-0hxSpy1gYQGLzun5yfwQa/fWUoc=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "dependencies": { - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-nocache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/require-nocache/-/require-nocache-1.0.0.tgz", - "integrity": "sha1-pmXQtgoH6CSYdXkKTTUCGdPIX6M=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "dev": true - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true - }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true - }, - "rlp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.0.0.tgz", - "integrity": "sha1-nbOE/0uJqPYVY9kjldhiWxjzr7A=", - "dev": true - }, - "rsa-pem-to-jwk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz", - "integrity": "sha1-JF52vbfnI0z+58oDLTG1TDj6uY4=", - "dev": true, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - } - } - }, - "rsa-unpack": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/rsa-unpack/-/rsa-unpack-0.0.6.tgz", - "integrity": "sha1-9Q69VqYoN45jHylxYQJs6atO3bo=", - "dev": true - }, - "run-parallel-limit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.0.3.tgz", - "integrity": "sha1-bDkwzHwLR9Na50IBCfZgqt4kAeM=", - "dev": true - }, - "run-series": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz", - "integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "sandwich-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-1.0.0.tgz", - "integrity": "sha1-eDDkV5e1kzKH8fmyj4cZB0ViYvI=", - "dev": true - }, - "scrypt": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", - "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", - "dev": true - }, - "scrypt-async": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/scrypt-async/-/scrypt-async-1.3.1.tgz", - "integrity": "sha1-oR/W+smBtLgj7gHe4CIRaVAN2uk=", - "dev": true - }, - "scrypt.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.0.tgz", - "integrity": "sha1-r40UZbcemZARC+38WTuUeeA6ito=", - "dev": true - }, - "scryptsy": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", - "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", - "dev": true - }, - "secp256k1": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.3.0.tgz", - "integrity": "sha512-CbrQoeGG5V0kQ1ohEMGI+J7oKerapLTpivLICBaXR0R4HyQcN3kM9itLsV5fdpV1UR1bD14tOkJ1xughmlDIiQ==", - "dev": true - }, - "seedrandom": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", - "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=", - "dev": true - }, - "semaphore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.0.5.tgz", - "integrity": "sha1-tJJXbmavGT25XWXiXsU/Xxl5jWA=", - "dev": true - }, - "semver": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz", - "integrity": "sha1-oykqNz5vPgeY2gsgZBuanFvEfhk=", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true - }, - "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - } - } - }, - "serve-static": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true - }, - "sha3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.0.tgz", - "integrity": "sha1-aYnxtwpJhwWHajc+LGKs6WqpOZo=", - "dev": true - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "shelljs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", - "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", - "dev": true - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "signed-varint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", - "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", - "dev": true - }, - "simple-get": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", - "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", - "dev": true - }, - "simple-peer": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-6.4.4.tgz", - "integrity": "sha1-TkIfSFrHsTsIB3pEdpNNUsW6O7M=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true - }, - "socket.io": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", - "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } - } - }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", - "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", - "dev": true, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "solc": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.6.tgz", - "integrity": "sha1-r6kpoc6vwCUs+7QhfI4rHasTnbc=", - "dev": true, - "dependencies": { - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true - } - } - }, - "solidity-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/solidity-parser/-/solidity-parser-0.2.0.tgz", - "integrity": "sha1-MXqoZf9xI5v8Ly0D5ljs4aGW7co=", - "dev": true, - "dependencies": { - "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true - }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", - "dev": true - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true - }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true - } - } - }, - "solidity-sha3": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/solidity-sha3/-/solidity-sha3-0.4.1.tgz", - "integrity": "sha1-F1d+k/bP1YSJxOx/LaMEdTAynsE=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "web3": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", - "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", - "dev": true - } - } - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true - }, - "spawn-args": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/spawn-args/-/spawn-args-0.1.0.tgz", - "integrity": "sha1-PgIyoFcbOHkH+LP1RKpTHGIkhIw=", - "dev": true - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", - "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", - "dev": true - }, - "split2": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.1.1.tgz", - "integrity": "sha1-eh9VHhdqkOzTNF9yRqDP4XXvT9A=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", - "dev": true - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "stable": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", - "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=", - "dev": true - }, - "static-eval": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.4.tgz", - "integrity": "sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns=", - "dev": true, - "dependencies": { - "escodegen": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", - "integrity": "sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M=", - "dev": true - }, - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", - "dev": true - }, - "estraverse": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz", - "integrity": "sha1-N8K4k+8T1yPydth41g2FNRUqbEI=", - "dev": true - } - } - }, - "static-module": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-1.3.2.tgz", - "integrity": "sha1-Mp+58iOlZiZr2nGEO32TLHZxdPM=", - "dev": true, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-inspect": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz", - "integrity": "sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w=", - "dev": true - }, - "quote-stream": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-0.0.0.tgz", - "integrity": "sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true - } - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true - }, - "stream-to-pull-stream": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz", - "integrity": "sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4=", - "dev": true, - "dependencies": { - "looper": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", - "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", - "dev": true - } - } - }, - "streamifier": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", - "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", - "dev": true - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "dev": true - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true - }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "tape": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.6.3.tgz", - "integrity": "sha1-Y353WB6ass4XV36b1M5PV1gG2LY=", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "tar-fs": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz", - "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", - "dev": true - }, - "tar-stream": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", - "dev": true - }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", - "dev": true - }, - "timed-tape": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/timed-tape/-/timed-tape-0.1.1.tgz", - "integrity": "sha1-m25WnxfmbHnx7tLSX/eWL8dBjkk=", - "dev": true - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-iso-string": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", - "dev": true - }, - "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "dev": true, - "dependencies": { - "hoek": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.1.1.tgz", - "integrity": "sha1-nMVz/7ore0CPtenCoTeWvpTN3Ok=", - "dev": true - } - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "truffle": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-3.1.2.tgz", - "integrity": "sha1-2s3QeZldtGc25mDQ/4zvWeBL8tc=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true - }, - "web3": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.0.tgz", - "integrity": "sha1-A+RHG8KFOoF38GIS/K1q3xsWc2o=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true - } - } - }, - "truffle-artifactor": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/truffle-artifactor/-/truffle-artifactor-2.1.4.tgz", - "integrity": "sha1-Mgs44QKn+au38qqa9ngbmdc1vRM=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "ethjs-abi": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.8.tgz", - "integrity": "sha1-zSiFg+1ijN+tr4re+juh28vKbBg=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true - }, - "js-sha3": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", - "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", - "dev": true - }, - "truffle-contract": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/truffle-contract/-/truffle-contract-2.0.1.tgz", - "integrity": "sha1-+D4/GNgEQCfyqe58M3Z7oQ/Tndg=", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - } - } - }, - "truffle-blockchain-utils": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.1.tgz", - "integrity": "sha1-B6WOVbsFVaZCCMkRnAsE/+FGSqQ=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - } - } - }, - "truffle-compile": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/truffle-compile/-/truffle-compile-1.0.0.tgz", - "integrity": "sha1-pisxav/Q8KoJnlVXOAMd38XrN9c=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "solc": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.8.tgz", - "integrity": "sha1-lqu+4SZjQa6X+0vcOrzJvBtQUqs=", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true - } - } - }, - "truffle-config": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.7.tgz", - "integrity": "sha1-Axhbud3YjGKmowbP38SVs8cV58Q=", - "dev": true, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true - } - } - }, - "truffle-contract": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/truffle-contract/-/truffle-contract-1.1.11.tgz", - "integrity": "sha1-zh+nh/eXdYr/Vy9F6LEXRSf27ao=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "ethjs-abi": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.1.8.tgz", - "integrity": "sha1-zSiFg+1ijN+tr4re+juh28vKbBg=", - "dev": true - }, - "js-sha3": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", - "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", - "dev": true - }, - "web3": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", - "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", - "dev": true - } - } - }, - "truffle-contract-schema": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/truffle-contract-schema/-/truffle-contract-schema-0.0.5.tgz", - "integrity": "sha1-Xp0gvQvyon/pQxB0gknUhO7kmWE=", - "dev": true, - "dependencies": { - "crypto-js": { - "version": "3.1.9-1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz", - "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=", - "dev": true - } - } - }, - "truffle-contract-sources": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-contract-sources/-/truffle-contract-sources-0.0.1.tgz", - "integrity": "sha1-KbYnA2bIYQnLsOswdBj8ayeV1/0=", - "dev": true - }, - "truffle-deployer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/truffle-deployer/-/truffle-deployer-0.1.2.tgz", - "integrity": "sha1-VCQcKLGdL28ce6Nw2PdDnuMJhz8=", - "dev": true - }, - "truffle-error": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.2.tgz", - "integrity": "sha1-AbGJt4UFVmrhaJwjnHyi3RIc/kw=", - "dev": true - }, - "truffle-expect": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/truffle-expect/-/truffle-expect-0.0.3.tgz", - "integrity": "sha1-m3XO80O9WW5+XbyHj18bLjGKlEw=", - "dev": true - }, - "truffle-hdwallet-provider": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz", - "integrity": "sha1-Dh3gIQS3PTh14c9wkzBbTqii2EM=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "ethereumjs-util": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", - "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - }, - "web3-provider-engine": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz", - "integrity": "sha1-TYbhnjDKr5ffNRUR7A9gE25bMOs=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "web3": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", - "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", - "dev": true - } - } - } - } - }, - "truffle-init": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/truffle-init/-/truffle-init-1.0.6.tgz", - "integrity": "sha1-gHZaQJ2fL1w+i2a27UrF2+dcnZQ=", - "dev": true, - "dependencies": { - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true - } - } - }, - "truffle-migrate": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/truffle-migrate/-/truffle-migrate-0.0.5.tgz", - "integrity": "sha1-tKMTkk7Ya1wzOtqkL2NT9Qrb8So=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true - }, - "truffle-config": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.2.tgz", - "integrity": "sha1-xBvM3nmHkSRHJMYrIx9x5nd9vPo=", - "dev": true - }, - "truffle-deployer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/truffle-deployer/-/truffle-deployer-0.1.1.tgz", - "integrity": "sha1-BP6ng6x7wy1/4qdgasy1+B4G2Yg=", - "dev": true - }, - "truffle-error": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.1.tgz", - "integrity": "sha1-Szm631SAWiBulfynK+yrzsLAWm8=", - "dev": true - }, - "truffle-require": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/truffle-require/-/truffle-require-0.0.2.tgz", - "integrity": "sha1-8j6szEB3NaYEns/VnpkYO8RgE2w=", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - } - } - }, - "truffle-provider": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-provider/-/truffle-provider-0.0.1.tgz", - "integrity": "sha1-nQ3bARMd4ePFnE+KBTK9J3CBHx8=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - } - } - }, - "truffle-provisioner": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/truffle-provisioner/-/truffle-provisioner-0.1.0.tgz", - "integrity": "sha1-Ap5SScEBUwBzhTXgT97ZMaU8T2I=", - "dev": true - }, - "truffle-require": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/truffle-require/-/truffle-require-0.0.3.tgz", - "integrity": "sha1-csCQgiuTWJedgr5vSru1MFr22XY=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true - }, - "truffle-config": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/truffle-config/-/truffle-config-0.0.6.tgz", - "integrity": "sha1-m/zu4p8LYuGt7zfwMF3zE/Y9RWs=", - "dev": true - }, - "truffle-error": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-error/-/truffle-error-0.0.1.tgz", - "integrity": "sha1-Szm631SAWiBulfynK+yrzsLAWm8=", - "dev": true - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true - } - } - }, - "truffle-resolver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/truffle-resolver/-/truffle-resolver-1.0.1.tgz", - "integrity": "sha1-sMwWuBAcTGtqF703Hf26aTLvEEo=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - } - } - }, - "truffle-solidity-utils": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/truffle-solidity-utils/-/truffle-solidity-utils-0.0.1.tgz", - "integrity": "sha1-E6kOO9l53wHbszEujyrgw++W0bM=", - "dev": true - }, - "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", - "dev": true - }, - "tunnel": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.2.tgz", - "integrity": "sha1-8jvNi3p7ioZCYbIIT2b5MZM5YzQ=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - }, - "tweetnacl": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", - "integrity": "sha1-PaOC9nDyXe1417PReSEZvKC3Ey0=", - "dev": true - }, - "tweetnacl-util": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz", - "integrity": "sha1-45zV2ZcJ7nEloYsDiVtFoSmeR18=", - "dev": true - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz", - "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=", - "dev": true - }, - "typescript": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", - "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", - "dev": true, - "optional": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "unorm": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", - "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", - "dev": true - }, - "update-notifier": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", - "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "utf8": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", - "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY=", - "dev": true - }, - "utf8-bytes": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz", - "integrity": "sha1-EWsCVEjJtQAIHN+/H01sbDfYg30=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true - }, - "varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", - "dev": true - }, - "vcsurl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/vcsurl/-/vcsurl-0.1.1.tgz", - "integrity": "sha1-XgChCec4G1W11FuJJTPI7DXJMgw=", - "dev": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true - }, - "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", - "dev": true - }, - "web3": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.15.3.tgz", - "integrity": "sha1-+ZfM2kGfxSjA1sXY1TgiEr+nRig=", - "dev": true, - "dependencies": { - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - } - } - }, - "web3-provider-engine": { - "version": "8.1.19", - "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.1.19.tgz", - "integrity": "sha1-PMrpWt7O9VYy4qc7877mS35i/Pc=", - "dev": true, - "dependencies": { - "async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "dev": true - }, - "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true - }, - "ethereumjs-util": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz", - "integrity": "sha1-JboCFcu0wvCxCKb5avKi5i5Fkh8=", - "dev": true - }, - "web3": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", - "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", - "dev": true - } - } - }, - "webcrypto-core": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-0.1.16.tgz", - "integrity": "sha1-3kkUtZFI23Moe8T45hz0+y9W8CA=", - "dev": true, - "optional": true - }, - "webcrypto-shim": { - "version": "github:dignifiedquire/webcrypto-shim#effe03d3401ccbfb4837191bc393bb347e0c0f0a", - "dev": true - }, - "wget-improved": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/wget-improved/-/wget-improved-1.5.0.tgz", - "integrity": "sha512-t+G+g9SQSy2h2+dg7h54r9adllfdI0fHHtshbl1V4jwIIBj1c10SmHwjP8vFx9fn1dr9QuF27uC7xoZr9YwEmg==", - "dev": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", - "dev": true - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "dev": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true - }, - "ws": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", - "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", - "dev": true - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true - }, - "xhr": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz", - "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=", - "dev": true - }, - "xhr2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", - "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=", - "dev": true - }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz", - "integrity": "sha1-GquWYOrnnYuPZ1vK7qtu40ws9pw=", - "dev": true, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "dev": true - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - } - } -} diff --git a/package.json b/package.json index bdc7deb..a423fc4 100644 --- a/package.json +++ b/package.json @@ -40,12 +40,10 @@ "ethjs-abi": "^0.1.9", "left-pad": "^1.1.3", "node-plantuml": "^0.5.0", + "solidity-sha3": "^0.4.1", "solium": "^0.5.3", "truffle": "^3.4.3", "truffle-contract": "^1.1.10", "truffle-hdwallet-provider": "0.0.3" - }, - "dependencies": { - "solc": "^0.4.13" } } diff --git a/yarn.lock b/yarn.lock index 48d8fba..e1a1a24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + abstract-leveldown@2.4.1, abstract-leveldown@~2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz#b3bfedb884eb693a12775f0c55e9f0a420ccee64" @@ -13,8 +17,8 @@ aes-js@^0.2.3: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" ajv@^4.9.1: - version "4.11.7" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -27,9 +31,16 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" are-we-there-yet@~1.1.2: version "1.1.4" @@ -38,6 +49,24 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -50,26 +79,26 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + async-eventemitter@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.2.tgz#5a77976b59dbcffc3b7156f866038cf6b445dcf4" + version "0.2.3" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.3.tgz#f79f480dfda6645a97bd6142c017150d63b4e70e" dependencies: - async "~0.2.9" + async "^2.4.0" -async@^1.4.2, async@^1.5.2, async@~1.5.0: +async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" +async@^2.0.1, async@^2.1.2, async@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: lodash "^4.14.0" -async@~0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -82,6 +111,27 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +babel-cli@*: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" + dependencies: + babel-core "^6.24.1" + babel-polyfill "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.6.1" + babel-code-frame@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" @@ -90,6 +140,43 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" +babel-core@^6.0.14, babel-core@^6.24.1: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.25.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.25.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.25.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + babel-helper-bindify-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" @@ -201,6 +288,13 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -476,7 +570,15 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-preset-es2015@^6.24.1: +babel-polyfill@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-es2015@*, babel-preset-es2015@^6.24.0, babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" dependencies: @@ -524,6 +626,18 @@ babel-preset-stage-3@^6.24.1: babel-plugin-transform-exponentiation-operator "^6.24.1" babel-plugin-transform-object-rest-spread "^6.22.0" +babel-register@*, babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + babel-runtime@^6.18.0, babel-runtime@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" @@ -531,54 +645,61 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" +babel-template@^6.24.1, babel-template@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" dependencies: babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" lodash "^4.2.0" -babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" +babel-traverse@^6.24.1, babel-traverse@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" dependencies: babel-code-frame "^6.22.0" babel-messages "^6.23.0" babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" + babel-types "^6.25.0" + babylon "^6.17.2" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.19.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" dependencies: babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.15.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +babylon@^6.17.2: + version "6.17.4" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base-x@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-1.1.0.tgz#42d3d717474f9ea02207f6d1aa1f426913eeb7ac" base64-js@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" bcrypt-pbkdf@^1.0.0: version "1.0.1" @@ -590,39 +711,37 @@ bignumber.js@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.0.2.tgz#2d1dc37ee5968867ecea90b6da4d16e68608d21d" -bignumber.js@debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2: - version "2.0.7" - resolved "https://codeload.github.com/debris/bignumber.js/tar.gz/94d7146671b9719e00a09c29b01a691bc85048c2" - "bignumber.js@git+https://github.com/debris/bignumber.js#master": version "2.0.7" - resolved "git+https://github.com/debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2" + resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9" "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" - uid "94d7146671b9719e00a09c29b01a691bc85048c2" resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" -bignumber.js@~2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.1.4.tgz#29b3bb693dbb238e88b72eac2fb89650888b2d59" +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" bindings@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" -bip39@^2.2.0, bip39@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.2.0.tgz#40e73f70674c267f148cdbf8374f2a50be166b0d" +bip39@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.3.1.tgz#c8238abc09d719c6f01136ef042daccc5dc3581b" dependencies: create-hash "^1.1.0" - pbkdf2 "^3.0.0" + pbkdf2 "^3.0.9" randombytes "^2.0.1" + safe-buffer "^5.0.1" unorm "^1.3.3" bip66@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.4.tgz#8a59f8ae16eccb94681c3c2a7b224774605aadfb" + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + dependencies: + safe-buffer "^5.0.1" bitcore-lib@^0.14.0: version "0.14.0" @@ -643,11 +762,17 @@ bitcore-mnemonic@^1.2.2: unorm "^1.3.3" bl@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" dependencies: readable-stream "^2.0.5" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + bluebird@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -666,13 +791,21 @@ boom@2.x.x: dependencies: hoek "2.x.x" -brace-expansion@^1.0.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -722,10 +855,6 @@ buffer-compare@=1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.0.0.tgz#acaa7a966e98eee9fae14b31c39a5f158fb3c4a2" -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - buffer-xor@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -742,10 +871,6 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -camelcase@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -770,17 +895,33 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" +chokidar@^1.6.0, chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" -cipher-base@^1.0.0, cipher-base@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" dependencies: inherits "^2.0.1" + safe-buffer "^5.0.1" -cliui@^3.0.3, cliui@^3.2.0: +cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" dependencies: @@ -807,18 +948,34 @@ coinstring@^2.0.0: bs58 "^2.0.1" create-hash "^1.1.1" +colors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" dependencies: delayed-stream "~1.0.0" -commander@2.9.0, commander@^2.8.1: +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" + +commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: graceful-readlink ">= 1.0.0" +commander@^2.8.1, commander@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -827,6 +984,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +convert-source-map@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" @@ -836,20 +997,24 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" dependencies: cipher-base "^1.0.1" inherits "^2.0.1" - ripemd160 "^1.0.0" - sha.js "^2.3.6" + ripemd160 "^2.0.0" + sha.js "^2.4.0" -create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" +create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" dependencies: + cipher-base "^1.0.3" create-hash "^1.1.0" inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" cryptiles@2.x.x: version "2.0.5" @@ -871,19 +1036,19 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@^2.2.0: +debug@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" -decamelize@^1.0.0, decamelize@^1.1.1: +debug@2.6.0, debug@^2.1.1, debug@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -892,8 +1057,8 @@ deep-equal@~1.0.1: resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" deferred-leveldown@~1.2.1: version "1.2.1" @@ -920,6 +1085,16 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -1013,6 +1188,10 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +escape-string-regexp@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" + escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1042,10 +1221,9 @@ eth-lightwallet@^2.5.6: web3 "^0.19.1" eth-signer@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/eth-signer/-/eth-signer-0.2.2.tgz#41296b2ea5f9b227ee580f305c69c21967306eee" + version "0.2.3" + resolved "https://registry.yarnpkg.com/eth-signer/-/eth-signer-0.2.3.tgz#1808820769ebfef0c1dd6cfbc9412ef5e0c3a1a0" dependencies: - bignumber.js debris/bignumber.js#94d7146671b9719e00a09c29b01a691bc85048c2 bitcore-lib "^0.14.0" bitcore-mnemonic "^1.2.2" buffer "^4.9.1" @@ -1058,75 +1236,41 @@ eth-signer@^0.2.2: secp256k1 "^3.2.0" tweetnacl "0.14.3" tweetnacl-util "^0.13.3" - web3 "^0.15.3" - -ethereum-common@0.0.16: - version "0.0.16" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.16.tgz#9a1e169ead34ab75e089f50ca512bfd0fbd12655" + web3 "^0.19.1" ethereum-common@0.0.18, ethereum-common@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" -ethereum-common@^0.0.17: - version "0.0.17" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.17.tgz#0b554ca9d512cadc8be0456fbd000ffcc3ac4f6f" - -ethereumjs-account@^2.0.3, ethereumjs-account@~2.0.4: +ethereumjs-account@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.4.tgz#f8c30231bcb707f4514d8a052c1f9da103624d47" dependencies: ethereumjs-util "^4.0.1" rlp "^2.0.0" -ethereumjs-block@^1.2.2, ethereumjs-block@~1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.2.2.tgz#2ec7534a59021b8ec9b83c30e49690c6ebaedda1" +ethereumjs-block@^1.2.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.5.1.tgz#ffb9f636f2e7d4db4b8060df98f08e9d688dc660" dependencies: - async "^1.5.2" - ethereum-common "0.0.16" - ethereumjs-tx "^1.0.0" - ethereumjs-util "^4.0.1" + async "^2.0.1" + ethereum-common "0.0.18" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" ethereumjs-testrpc@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-3.0.4.tgz#3f82decf0a116e6e7d7e34dd97a0b9aeadbb45e9" - dependencies: - async "~1.5.0" - bignumber.js "~2.1.4" - bip39 "~2.2.0" - ethereumjs-account "~2.0.4" - ethereumjs-block "~1.2.2" - ethereumjs-tx "1.1.2" - ethereumjs-util "~4.5.0" - ethereumjs-vm "~2.0.1" - ethereumjs-wallet "~0.6.0" - fake-merkle-patricia-tree "~1.0.1" - heap "~0.2.6" - merkle-patricia-tree "~2.1.2" - seedrandom "~2.4.2" - shelljs "~0.6.0" - solc "0.4.6" - web3 "~0.16.0" - web3-provider-engine "~8.1.0" - yargs "~3.29.0" - -ethereumjs-tx@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.1.2.tgz#c151477c6205d1860600e29108c3eacae97e29fa" - dependencies: - ethereum-common "^0.0.17" - ethereumjs-util "^4.5.0" + version "3.9.2" + resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-3.9.2.tgz#bb0f2d3c3aa39350872ad38e40c83e9d787331c9" -ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.1.2, ethereumjs-tx@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.2.5.tgz#ed36d7ffeb97bc889c61eef1ab76f47a613d8286" +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.1.2, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.1.tgz#d6909abcfb37da6404fc18124d351eda20047dac" dependencies: ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@^4.0.0, ethereumjs-util@^4.0.1, ethereumjs-util@^4.4.0, ethereumjs-util@^4.5.0, ethereumjs-util@~4.5.0: +ethereumjs-util@^4.0.0, ethereumjs-util@^4.0.1, ethereumjs-util@^4.4.0, ethereumjs-util@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz#3e9428b317eebda3d7260d854fddda954b1f1bc6" dependencies: @@ -1137,9 +1281,11 @@ ethereumjs-util@^4.0.0, ethereumjs-util@^4.0.1, ethereumjs-util@^4.4.0, ethereum secp256k1 "^3.0.1" ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.1.1.tgz#122fb38dea747dc62b3aebfc365d1bd48be4b73e" + version "5.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.1.2.tgz#25ba0215cbb4c2f0b108a6f96af2a2e62e45921f" dependencies: + babel-preset-es2015 "^6.24.0" + babelify "^7.3.0" bn.js "^4.8.0" create-hash "^1.1.2" ethjs-util "^0.1.3" @@ -1147,9 +1293,9 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1: rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-vm@^2.0.2, ethereumjs-vm@~2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.0.2.tgz#84e2372a5715a80a62f7f2a312f8c64537e8a842" +ethereumjs-vm@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.1.0.tgz#0faa3f5b6b6ecbd4c74f499c1260c27f712c7319" dependencies: async "^2.1.2" async-eventemitter "^0.2.2" @@ -1161,7 +1307,7 @@ ethereumjs-vm@^2.0.2, ethereumjs-vm@~2.0.1: functional-red-black-tree "^1.0.1" merkle-patricia-tree "^2.1.2" -ethereumjs-wallet@^0.6.0, ethereumjs-wallet@~0.6.0: +ethereumjs-wallet@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz#82763b1697ee7a796be7155da9dfb49b2f98cfdb" dependencies: @@ -1202,24 +1348,56 @@ evp_bytestokey@^1.0.0: dependencies: create-hash "^1.1.1" +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + expand-template@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.0.3.tgz#6c303323177a62b1b22c070279f7861287b69b1a" extend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -fake-merkle-patricia-tree@^1.0.1, fake-merkle-patricia-tree@~1.0.1: +fake-merkle-patricia-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" dependencies: checkpoint-store "^1.1.0" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1233,6 +1411,16 @@ for-each@^0.3.2, for-each@~0.3.2: dependencies: is-function "~1.0.0" +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -1259,10 +1447,38 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.0.2, function-bind@^1.1.0, function-bind@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" @@ -1271,7 +1487,7 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -gauge@~2.7.1: +gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" dependencies: @@ -1289,8 +1505,8 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: assert-plus "^1.0.0" @@ -1298,7 +1514,27 @@ github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" -glob@7.1.1, glob@~7.1.1: +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@3.2.11: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1309,13 +1545,14 @@ glob@7.1.1, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" +glob@^7.0.0, glob@^7.0.5, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -1327,10 +1564,10 @@ global@~4.3.0: process "~0.5.1" globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1373,12 +1610,19 @@ has@^1.0.1, has@~1.0.1: dependencies: function-bind "^1.0.2" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" dependencies: inherits "^2.0.1" +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -1395,10 +1639,6 @@ hdkey@^0.7.0: coinstring "^2.0.0" secp256k1 "^3.0.1" -heap@~0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -1411,9 +1651,16 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" http-signature@~1.1.0: version "1.1.1" @@ -1424,8 +1671,8 @@ http-signature@~1.1.0: sshpk "^1.7.0" iconv-lite@~0.4.13: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + version "0.4.18" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" ieee754@^1.1.4: version "1.1.8" @@ -1442,7 +1689,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1468,6 +1715,16 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -1482,6 +1739,30 @@ is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -1492,10 +1773,36 @@ is-function@^1.0.1, is-function@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + is-regex@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -1522,10 +1829,16 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + isomorphic-fetch@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -1537,11 +1850,12 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" +jade@0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" dependencies: - jsbn "~0.1.0" + commander "0.6.1" + mkdirp "0.3.0" js-sha3@0.5.5: version "0.5.5" @@ -1552,13 +1866,17 @@ js-sha3@^0.3.1: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243" js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -1581,6 +1899,10 @@ json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -1601,13 +1923,14 @@ jsprim@^1.2.2: verror "1.3.6" keccak@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.2.0.tgz#b53618fc7961b642f6e73f1546eec3329f7effe0" + version "1.3.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.3.0.tgz#3681bd99ad3d0354ddb29b9040c1b6560cce08ac" dependencies: bindings "^1.2.1" inherits "^2.0.3" nan "^2.2.1" prebuild-install "^2.0.0" + safe-buffer "^5.1.0" keccakjs@^0.2.0: version "0.2.1" @@ -1616,6 +1939,18 @@ keccakjs@^0.2.0: browserify-sha3 "^0.0.1" sha3 "^1.1.0" +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -1628,7 +1963,7 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -left-pad@^1.1.3: +left-pad@^1.1.1, left-pad@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" @@ -1659,8 +1994,8 @@ level-ws@0.0.0: xtend "~2.1.1" levelup@^1.2.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.5.tgz#fa80a972b74011f2537c8b65678bd8b5188e4e66" + version "1.3.8" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.8.tgz#fb442c488efbea1043f7eb9929a792a74fbd1da6" dependencies: deferred-leveldown "~1.2.1" level-codec "~6.1.0" @@ -1735,7 +2070,7 @@ lodash@=3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.14.0, lodash@^4.2.0: +lodash@^4.14.0, lodash@^4.14.2, lodash@^4.2.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1745,6 +2080,10 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + ltgt@~2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" @@ -1763,7 +2102,7 @@ memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@~2.1.2: +merkle-patricia-tree@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.1.2.tgz#724483d54b75631a48fedda55e114051706a7291" dependencies: @@ -1776,6 +2115,24 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@~2.1.2: rlp "^2.0.0" semaphore ">=1.0.1" +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" @@ -1800,11 +2157,18 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: - brace-expansion "^1.0.0" + brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" @@ -1814,12 +2178,31 @@ minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.1, mkdirp@^0.5.1: +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +mocha@^2.4.5: + version "2.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" + dependencies: + commander "2.3.0" + debug "2.2.0" + diff "1.4.0" + escape-string-regexp "1.0.2" + glob "3.2.11" + growl "1.9.2" + jade "0.26.3" + mkdirp "0.5.1" + supports-color "1.2.0" + to-iso-string "0.0.2" + mocha@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" @@ -1844,17 +2227,17 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" -nan@^2.0.5, nan@^2.0.8, nan@^2.2.1: +nan@^2.0.5, nan@^2.0.8, nan@^2.2.1, nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" node-abi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.0.0.tgz#443bfd151b599231028ae425e592e76cd31cb537" + version "2.0.3" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.0.3.tgz#0ca67e5e667b8e1343549ca17153a815d0bbfdaa" node-fetch@^1.0.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + version "1.7.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.1.tgz#899cb3d0a3c92f952c47f1b876f4c8aeabd400d5" dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -1880,26 +2263,53 @@ node-plantuml@^0.5.0: node-nailgun-server "^0.1.3" plantuml-encoder "^1.2.4" +node-pre-gyp@^0.6.36: + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -npmlog@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npmlog@^4.0.1, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" - gauge "~2.7.1" + gauge "~2.7.3" set-blocking "~2.0.0" number-is-nan@^1.0.0: @@ -1917,11 +2327,11 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^4.1.0: +object-assign@^4.0.0, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-inspect@~1.2.1: +object-inspect@~1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.2.2.tgz#c82115e4fcc888aea14d64c22e4f17f6a70d5e5a" @@ -1933,7 +2343,14 @@ object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -1943,7 +2360,7 @@ original-require@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" -os-homedir@^1.0.1: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1953,10 +2370,38 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + pako@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.3.tgz#5f515b0c6722e1982920ae8005eacb0b7ca73ccf" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-headers@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" @@ -1980,6 +2425,10 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -1988,11 +2437,19 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -pbkdf2@^3.0.0, pbkdf2@^3.0.3: - version "3.0.9" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" +pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.0.12" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" dependencies: - create-hmac "^1.1.2" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pegjs@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" performance-now@^0.2.0: version "0.2.0" @@ -2020,8 +2477,8 @@ plantuml-encoder@^1.2.4: utf8-bytes "0.0.1" prebuild-install@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.1.2.tgz#d9ae0ca85330e03962d93292f95a8b44c2ebf505" + version "2.2.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.2.0.tgz#55934756a32bac8747390ca44ff663cee8b99b69" dependencies: expand-template "^1.0.2" github-from-package "0.0.0" @@ -2035,9 +2492,13 @@ prebuild-install@^2.0.0: rc "^1.1.6" simple-get "^1.4.2" tar-fs "^1.13.0" - tunnel-agent "^0.4.3" + tunnel-agent "^0.6.0" xtend "4.0.1" +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -2073,11 +2534,20 @@ qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" -rc@^1.1.6: +rc@^1.1.6, rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" dependencies: @@ -2110,25 +2580,34 @@ readable-stream@^1.0.33, readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: - buffer-shims "~1.0.0" core-util-is "~1.0.0" - inherits "~2.0.1" + inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~1.0.6" - string_decoder "~1.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" util-deprecate "~1.0.1" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" regenerator-runtime@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" regenerator-transform@0.9.11: version "0.9.11" @@ -2138,6 +2617,13 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -2156,7 +2642,25 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -request@^2.67.0: +remove-trailing-separator@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.67.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -2195,9 +2699,11 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -resolve@~1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" resumer@~0.0.0: version "0.0.0" @@ -2205,23 +2711,26 @@ resumer@~0.0.0: dependencies: through "~2.3.4" -rimraf@^2.2.8: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: - glob "^6.0.1" + glob "^7.0.5" -ripemd160@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" rlp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0" -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" scrypt-async@^1.2.0, scrypt-async@^1.3.0: version "1.3.1" @@ -2247,8 +2756,8 @@ scryptsy@^1.2.1: pbkdf2 "^3.0.3" secp256k1@^3.0.1, secp256k1@^3.2.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.2.5.tgz#0dde5b27e5021665f6dffca7b2c3e010c6c13c93" + version "3.3.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.3.0.tgz#50ec9b201ba401403dd13ccbf21d31eeb3ff43cf" dependencies: bindings "^1.2.1" bip66 "^1.1.3" @@ -2258,10 +2767,7 @@ secp256k1@^3.0.1, secp256k1@^3.2.0: elliptic "^6.2.3" nan "^2.2.1" prebuild-install "^2.0.0" - -seedrandom@~2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" + safe-buffer "^5.1.0" semaphore@>=1.0.1, semaphore@^1.0.3: version "1.0.5" @@ -2279,7 +2785,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -sha.js@^2.3.6: +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" dependencies: @@ -2291,9 +2801,9 @@ sha3@^1.1.0: dependencies: nan "^2.0.5" -shelljs@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" signal-exit@^3.0.0: version "3.0.2" @@ -2307,13 +2817,25 @@ simple-get@^1.4.2: unzip-response "^1.0.0" xtend "^4.0.0" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" dependencies: hoek "2.x.x" -solc@0.4.11: +sol-digger@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/sol-digger/-/sol-digger-0.0.2.tgz#406c4a9d31e269e7f88eb1c2ea101318e5e09025" + +sol-explore@^1.6.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/sol-explore/-/sol-explore-1.6.2.tgz#43ae8c419fd3ac056a05f8a9d1fb1022cd41ecc2" + +solc@0.4.11, solc@^0.4.2: version "0.4.11" resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.11.tgz#2522eb43e7c0419bac2060b96e20a2593bfb5e8b" dependencies: @@ -2323,24 +2845,45 @@ solc@0.4.11: semver "^5.3.0" yargs "^4.7.1" -solc@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.6.tgz#afa929a1ceafc0252cfbb4217c8e2b1dab139db7" +solidity-sha3@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/solidity-sha3/-/solidity-sha3-0.4.1.tgz#17577e93f6cfd58489c4ec7f2da3047530329ec1" dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - yargs "^4.7.1" + babel-cli "*" + babel-preset-es2015 "*" + babel-register "*" + left-pad "^1.1.1" + web3 "^0.16.0" -solc@^0.4.13, solc@^0.4.2: - version "0.4.13" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.13.tgz#aa5cbdcce3e6ae3c190d20f5fdf8bc880702ec75" +solium@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/solium/-/solium-0.5.3.tgz#5736723dde08fe0e96a151d5bca7538d21f1f624" dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" + chokidar "^1.6.0" + colors "^1.1.2" + commander "^2.9.0" + lodash "^4.14.2" + sol-digger "0.0.2" + sol-explore "^1.6.1" + solparse "^1.2.0" + +solparse@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/solparse/-/solparse-1.2.0.tgz#678304a86b0bb997eb172d00c0a35a9872b9d2ac" + dependencies: + mocha "^2.4.5" + pegjs "^0.10.0" + yargs "^4.6.0" + +source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" spdx-correct@~1.0.0: version "1.0.2" @@ -2357,8 +2900,8 @@ spdx-license-ids@^1.0.2: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -2367,11 +2910,10 @@ sshpk@^1.7.0: optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" jsbn "~0.1.0" tweetnacl "~0.14.0" -string-width@^1.0.1: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -2391,11 +2933,11 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: - buffer-shims "~1.0.0" + safe-buffer "~5.1.0" stringstream@~0.0.4: version "0.0.5" @@ -2423,6 +2965,10 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + supports-color@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" @@ -2434,48 +2980,73 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" tape@^4.4.0: - version "4.6.3" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.6.3.tgz#637e77581e9ab2ce17577e9bd4ce4f575806d8b6" + version "4.7.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.7.0.tgz#f3ebb214fef3d6907e5a57dbaafe3bd8a7cbed88" dependencies: deep-equal "~1.0.1" defined "~1.0.0" for-each "~0.3.2" function-bind "~1.1.0" - glob "~7.1.1" + glob "~7.1.2" has "~1.0.1" inherits "~2.0.3" minimist "~1.2.0" - object-inspect "~1.2.1" - resolve "~1.1.7" + object-inspect "~1.2.2" + resolve "~1.3.3" resumer "~0.0.0" string.prototype.trim "~1.1.2" through "~2.3.8" tar-fs@^1.13.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.15.2.tgz#761f5b32932c7b39461a60d537faea0d8084830c" + version "1.15.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.15.3.tgz#eccf935e941493d8151028e636e51ce4c3ca7f20" dependencies: chownr "^1.0.1" mkdirp "^0.5.1" pump "^1.0.0" tar-stream "^1.1.2" +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + tar-stream@^1.1.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" + version "1.5.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" dependencies: bl "^1.0.0" end-of-stream "^1.0.0" readable-stream "^2.0.0" xtend "^4.0.0" +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-iso-string@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" tough-cookie@~2.3.0: version "2.3.2" @@ -2483,6 +3054,10 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" @@ -2525,10 +3100,6 @@ truffle@^3.4.3: original-require "^1.0.1" solc "0.4.11" -tunnel-agent@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -2547,6 +3118,10 @@ tweetnacl@0.14.3, tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + unorm@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" @@ -2555,6 +3130,10 @@ unzip-response@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + utf8-bytes@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/utf8-bytes/-/utf8-bytes-0.0.1.tgz#116b025448c9b500081cdfbf1f4d6c6c37d8837d" @@ -2572,8 +3151,14 @@ uuid@^2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" validate-npm-package-license@^3.0.1: version "3.0.1" @@ -2607,35 +3192,7 @@ web3-provider-engine@^8.4.0: xhr "^2.2.0" xtend "^4.0.1" -web3-provider-engine@~8.1.0: - version "8.1.19" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-8.1.19.tgz#3ccae95adecef55632e2a73bf3bee64b7e62fcf7" - dependencies: - async "^2.1.2" - clone "^2.0.0" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.0.2" - isomorphic-fetch "^2.2.0" - request "^2.67.0" - semaphore "^1.0.3" - solc "^0.4.2" - tape "^4.4.0" - web3 "^0.16.0" - xhr "^2.2.0" - xtend "^4.0.1" - -web3@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/web3/-/web3-0.15.3.tgz#f997ccda419fc528c0d6c5d8d5382212bfa74628" - dependencies: - bignumber.js "git+https://github.com/debris/bignumber.js#master" - crypto-js "^3.1.4" - utf8 "^2.1.1" - xmlhttprequest "*" - -web3@^0.16.0, web3@~0.16.0: +web3@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/web3/-/web3-0.16.0.tgz#a4554175cd462943035b1f1d39432f741c6b6019" dependencies: @@ -2673,14 +3230,10 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" dependencies: - string-width "^1.0.1" - -window-size@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + string-width "^1.0.2" window-size@^0.2.0: version "0.2.0" @@ -2724,7 +3277,7 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" -y18n@^3.2.0, y18n@^3.2.1: +y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -2735,7 +3288,7 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs@^4.7.1: +yargs@^4.6.0, yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" dependencies: @@ -2753,14 +3306,3 @@ yargs@^4.7.1: window-size "^0.2.0" y18n "^3.2.1" yargs-parser "^2.4.1" - -yargs@~3.29.0: - version "3.29.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" - dependencies: - camelcase "^1.2.1" - cliui "^3.0.3" - decamelize "^1.0.0" - os-locale "^1.4.0" - window-size "^0.1.2" - y18n "^3.2.0" From 6010aca57ee3396fa547f2cf899a4bd65646e8b7 Mon Sep 17 00:00:00 2001 From: naterush Date: Tue, 11 Jul 2017 12:22:30 -0400 Subject: [PATCH 52/53] udpate comments --- contracts/TxRelay.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/TxRelay.sol b/contracts/TxRelay.sol index 5a61eaf..67d91c3 100644 --- a/contracts/TxRelay.sol +++ b/contracts/TxRelay.sol @@ -13,9 +13,9 @@ contract TxRelay { /* * @dev Relays meta transactions * @param sigV, sigR, sigS ECDSA signature on some data to be forwarded + * @param destination Location the meta-tx should be forwarded to * @param data The bytes necessary to call the function in the destination contract. Note, the first encoded argument in data must be address of the signer - * @param claimedSender Address of the user who is having tx forwarded */ function relayMetaTx(uint8 sigV, bytes32 sigR, bytes32 sigS, address destination, bytes data) { From 0f15d2ccfee16e6b892501299b6510dc21a2de8e Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 19 Jul 2017 10:54:15 +0200 Subject: [PATCH 53/53] Added isOwner and isRecovery functions to IdentityManager --- contracts/IdentityManager.sol | 8 ++++++++ test/identityManager.js | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/contracts/IdentityManager.sol b/contracts/IdentityManager.sol index bcfaf47..5651042 100644 --- a/contracts/IdentityManager.sol +++ b/contracts/IdentityManager.sol @@ -208,4 +208,12 @@ contract IdentityManager { t := eq(a, and(mask, calldataload(4))) } } + + function isOwner(address identity, address owner) constant returns (bool) { + return owners[identity][owner] != 0; + } + + function isRecovery(address identity, address recoveryKey) constant returns (bool) { + return recoveryKeys[identity] == recoveryKey; + } } diff --git a/test/identityManager.js b/test/identityManager.js index 4be2c1d..4b2c83e 100644 --- a/test/identityManager.js +++ b/test/identityManager.js @@ -149,6 +149,8 @@ contract('IdentityManager', (accounts) => { }) it('owner can add other owner', async function() { + let isOwner = await identityManager.isOwner(proxy.address, user5, {from: user1}) + assert.isFalse(isOwner, 'user5 should not be owner yet') let tx = await identityManager.addOwner(user1, proxy.address, user5, {from: user1}) let log = tx.logs[0] assert.equal(log.event, 'OwnerAdded', 'should trigger correct event') @@ -161,6 +163,8 @@ contract('IdentityManager', (accounts) => { assert.equal(log.args.instigator, user1, 'Instigator key is set in event') + isOwner = await identityManager.isOwner(proxy.address, user5, {from: user1}) + assert.isTrue(isOwner, 'user5 should be owner now') }) it('owner is rateLimited on some functions', async function() { @@ -328,6 +332,8 @@ contract('IdentityManager', (accounts) => { }) it('can change recoveryKey', async function() { + let isRecovery = await identityManager.isRecovery(proxy.address, recoveryKey2, {from: user1}) + assert.isFalse(isRecovery, 'recoveryKey2 should not be recovery yet') let tx = await identityManager.changeRecovery(user2, proxy.address, recoveryKey2, {from: user2}) const log = tx.logs[0] assert.equal(log.args.recoveryKey, @@ -336,6 +342,8 @@ contract('IdentityManager', (accounts) => { assert.equal(log.args.instigator, user2, 'Instigator key is set in event') + isRecovery = await identityManager.isRecovery(proxy.address, recoveryKey2, {from: user1}) + assert.isTrue(isRecovery, 'recoveryKey2 should be recovery now') }) }) })