diff --git a/.gitignore b/.gitignore index 680b161..9ef20f9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ node_modules/ .mypy_cache __pycache__ + +.idea +*.iml diff --git a/build/ILiquidPledging.sol.js b/build/ILiquidPledging.sol.js deleted file mode 100644 index eef8c7a..0000000 --- a/build/ILiquidPledging.sol.js +++ /dev/null @@ -1,6 +0,0 @@ -/* This is an autogenerated file. DO NOT EDIT MANUALLY */ - -exports.ILiquidPledgingAbi = [{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newCanceler","type":"address"}],"name":"updateProjectCanceler","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"}],"name":"addDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDonor","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDonor","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"note","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"notesAmounts","type":"uint256[]"},{"name":"concept","type":"string"}],"name":"mWithdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfNotes","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"note","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"concept","type":"string"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idNote","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getNoteDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"notesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idManager","type":"uint64"}],"name":"getNoteManager","outputs":[{"name":"managerType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"reviewer","type":"address"},{"name":"canceled","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"commitTime","type":"uint64"}],"name":"addDonor","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDonor","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfNoteManagers","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idNote","type":"uint64"}],"name":"getNote","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"proposedProject","type":"uint64"},{"name":"commmitTime","type":"uint64"},{"name":"oldNote","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"notesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"canceler","type":"address"},{"name":"commitTime","type":"uint64"}],"name":"addProject","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"notesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"int64"}],"name":"cancelProject","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idMember","type":"uint64"}],"name":"DonorAdded","type":"event"}] -exports.ILiquidPledgingByteCode = "0x" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" -exports._sha256 = "0xd8d7025a36f767f7f6d2a238200fde7ddd5aa8e35884215aa8ea7b63a1aeaa5e" diff --git a/build/ILiquidPledgingPlugin.sol.js b/build/ILiquidPledgingPlugin.sol.js index 9e4565a..6459aa9 100644 --- a/build/ILiquidPledgingPlugin.sol.js +++ b/build/ILiquidPledgingPlugin.sol.js @@ -1,6 +1,6 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"type":"function"}] +exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] exports.ILiquidPledgingPluginByteCode = "0x" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" -exports._sha256 = "0x459746b8fd9702f2cc9d65c3f59f37610e76e6ec5739d5bd5ba1c694dba94edd" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" +exports._sha256 = "0xdca1f6e8e45033d2b165904df14f39c39500c42395eabcc79e156346438f3259" diff --git a/build/ILiquidPledgingPlugin_all.sol b/build/ILiquidPledgingPlugin_all.sol index 119cec2..3b7e74c 100644 --- a/build/ILiquidPledgingPlugin_all.sol +++ b/build/ILiquidPledgingPlugin_all.sol @@ -11,13 +11,13 @@ contract ILiquidPledgingPlugin { /// 1 -> Plugin for the first delegate transferring pledge to another party /// 2 -> Plugin for the second delegate transferring pledge to another party /// ... - /// 255 -> Plugin for the intendedCampaign transferring pledge to another party + /// 255 -> Plugin for the intendedProject transferring pledge to another party /// /// 256 -> Plugin for the owner receiving pledge to another party /// 257 -> Plugin for the first delegate receiving pledge to another party /// 258 -> Plugin for the second delegate receiving pledge to another party /// ... - /// 511 -> Plugin for the intendedCampaign receiving pledge to another party + /// 511 -> Plugin for the intendedProject receiving pledge to another party function beforeTransfer( uint64 pledgeManager, uint64 pledgeFrom, diff --git a/build/ILiquidPledging_all.sol b/build/ILiquidPledging_all.sol deleted file mode 100644 index 5576c8c..0000000 --- a/build/ILiquidPledging_all.sol +++ /dev/null @@ -1,76 +0,0 @@ - -//File: ./contracts/ILiquidPledging.sol -pragma solidity ^0.4.11; - -contract ILiquidPledging { - -// TODO: make this enum its own contract... or at least make it so that an owner -// can add a new NoteManagerType - enum NoteManagerType { Donor, Delegate, Project} - enum PaymentState {NotPaid, Paying, Paid} - - function numberOfNotes() constant returns (uint); - - function getNote(uint64 idNote) constant returns( - uint amount, - uint64 owner, - uint64 nDelegates, - uint64 proposedProject, - uint64 commmitTime, - uint64 oldNote, - PaymentState paymentState - ); - - function getNoteDelegate(uint64 idNote, uint idxDelegate) constant returns( - uint64 idDelegate, - address addr, - string name - ); - - - function numberOfNoteManagers() constant returns(uint); - - function getNoteManager(uint64 idManager) constant returns ( - NoteManagerType managerType, - address addr, - string name, - uint64 commitTime, - address reviewer, - bool canceled); - - event DonorAdded(uint64 indexed idMember); - - function addDonor(string name, uint64 commitTime); - function updateDonor( - uint64 idDonor, - address newAddr, - string newName, - uint64 newCommitTime); - - function addDelegate(string name); - function updateDelegate(uint64 idDelegate, address newAddr, string newName); - - function addProject(string name, address canceler, uint64 commitTime) ; - function updateProject(uint64 idProject, address newAddr, string newName, uint64 newCommitTime); - function updateProjectCanceler(uint64 idProject, address newCanceler); - - function donate(uint64 idDonor, uint64 idReceiver) payable; - - /// @param idSender idDonor or idDelegate that executes the action - /// @param idReceiver idDonor or idCampaign that wants to be transfered. - /// @param note piece That wants to be transfered. - /// @param amount quantity of the state that wants to be transfered. - function transfer(uint64 idSender, uint64 note, uint amount, uint64 idReceiver); - function mTransfer(uint64 idSender, uint[] notesAmounts, uint64 idReceiver); - - function withdraw(uint64 note, uint amount, string concept); - function mWithdraw(uint[] notesAmounts, string concept); - - function confirmPayment(uint64 idNote, uint amount); - function mConfirmPayment(uint[] notesAmounts); - - function cancelPayment(uint64 idNote, uint amount); - function mCancelPayment(uint[] notesAmounts); - - function cancelProject(int64 idCampaign); -} diff --git a/build/LiquidPledging.sol.js b/build/LiquidPledging.sol.js index 31fb514..91156df 100644 --- a/build/LiquidPledging.sol.js +++ b/build/LiquidPledging.sol.js @@ -1,12 +1,12 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"type":"function"}] +exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] exports.ILiquidPledgingPluginByteCode = "0x" -exports.LiquidPledgingAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"}],"name":"cancelCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CancelCampaign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingByteCode = "0x606060405234156200001057600080fd5b60405160208062004f68833981016040528080519150505b805b60016200003881806200006e565b50600162000048600082620000a3565b5060028054600160a060020a031916600160a060020a0383161790555b505b5062000259565b8154818355818115116200009d576005028160050283600052602060002091820191016200009d9190620000d8565b5b505050565b8154818355818115116200009d576004028160040283600052602060002091820191016200009d91906200014c565b5b505050565b6200014991905b8082111562000145578054600160a860020a03191681556000620001076001830182620001be565b62000117600283016000620001be565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000df565b5090565b90565b6200014991905b808211156200014557600080825560018201805467ffffffffffffffff191690556200018360028301826200020a565b506003810180547fffffffffffffff0000000000000000000000000000000000000000000000000016905560040162000153565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001e6575062000206565b601f01602090049060005260206000209081019062000206919062000235565b5b50565b50805460008255600301600490049060005260206000209081019062000206919062000235565b5b50565b6200014991905b808211156200014557600081556001016200023c565b5090565b90565b614cff80620002696000396000f300606060405236156101385763ffffffff60e060020a60003504166314e7b1dc811461013d5780632287b3aa146101f75780632a8ec8cc146102cf5780632ee88808146102f45780633f657a4614610318578063433879831461039657806347c5ef43146103ba57806350f8a803146103eb57806352dc7dcc146104265780635503d9ba146104ee57806357adafb6146105135780635c1de885146105645780637f61fa93146106215780638fe1f2ce146106e95780639398f5a21461071c578063a7e474d51461076d578063af9f45631461078e578063bce0906d146107b2578063bde60ac91461081d578063cc19ecf714610839578063d639cd73146108f6578063db7c231414610960578063e9c211e214610a1d578063eba8ba0614610a41578063ef3766e414610b99578063fbfa77cf14610bea575b600080fd5b341561014857600080fd5b61015f6001604060020a0360043516602435610c19565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101ba5780820151818401525b6020016101a1565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020257600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150610d409050565b6040516001604060020a03909116815260200160405180910390f35b34156102da57600080fd5b6102e261118f565b60405190815260200160405180910390f35b34156102ff57600080fd5b6103166001604060020a036004351660243561119a565b005b341561032357600080fd5b6103376001604060020a03600435166112e0565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561037c57fe5b60ff16815260200197505050505050505060405180910390f35b34156103a157600080fd5b6103166001604060020a036004351660243561134d565b005b34156103c557600080fd5b6103166001604060020a0360043581169060243581169060443590606435166116f2565b005b34156103f657600080fd5b6102b36001604060020a0360043516611d93565b6040516001604060020a03909116815260200160405180910390f35b341561043157600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611f5f915050565b6040516001604060020a03909116815260200160405180910390f35b34156104f957600080fd5b6102e2612150565b60405190815260200160405180910390f35b341561051e57600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061215b95505050505050565b005b341561056f57600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a031692506121ce915050565b005b341561062c57600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a031692506122bb915050565b6040516001604060020a03909116815260200160405180910390f35b34156106f457600080fd5b6107086001604060020a03600435166124ab565b604051901515815260200160405180910390f35b341561072757600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061255d95505050505050565b005b341561077857600080fd5b6103166001604060020a03600435166125d0565b005b341561079957600080fd5b6103166001604060020a036004351660243561282d565b005b34156107bd57600080fd5b6102b36004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650612a7b95505050505050565b6040516001604060020a03909116815260200160405180910390f35b6103166001604060020a0360043581169060243516612ac8565b005b341561084457600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612e03915050565b005b341561090157600080fd5b610316600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a03169250612ef0915050565b005b341561096b57600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612f67915050565b005b3415610a2857600080fd5b6103166001604060020a0360043516602435613054565b005b3415610a4c57600080fd5b610a606001604060020a036004351661317e565b60405180896002811115610a7057fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b83811015610af25780820151818401525b602001610ad9565b50505050905090810190601f168015610b1f5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610b565780820151818401525b602001610b3d565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610ba457600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061334495505050505050565b005b3415610bf557600080fd5b610bfd6133b7565b604051600160a060020a03909116815260200160405180910390f35b600080610c246148de565b600080610c30876133c6565b91508160020160018703815481101515610c4657fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a03169450610c7b8561340f565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b505050505092505b50509250925092565b6000806001604060020a03851615610f9857610d5b8561340f565b905060025b815460ff166002811115610d7057fe5b14610d7a57600080fd5b805433600160a060020a039081166101009092041614610d9957600080fd5b6014610f8e826101006040519081016040528154909190829060ff166002811115610dc057fe5b6002811115610dcb57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261345a565b10610f9857600080fd5b5b60018054925082808201610fad83826148f0565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff1916600183600281111561102f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611075929160200190614922565b50606082015181600201908051611090929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600254600090819033600160a060020a039081169116146111ba57600080fd5b6111c3846133c6565b915060015b600383015460c060020a900460ff1660028111156111e257fe5b146111ec57600080fd5b836001604060020a03166111ff8561369c565b6001604060020a03161461121257600080fd5b60018201546002830180546112cb926001604060020a031691906020808202016040519081016040528092919081815260200182805480156112a557602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116112625790505b505050506003860154600091508190608060020a90046001604060020a03166002613766565b90506112d8848285613a58565b5b5b50505050565b6000806000806000806000806112f5896133c6565b8054600182015460028301546003840154929b506001604060020a039182169a5098508082169750604060020a820481169650608060020a820416945060c060020a900460ff16925090505b50919395979092949650565b600080600061135b85611d93565b9450611366856133c6565b925060005b600384015460c060020a900460ff16600281111561138557fe5b1461138f57600080fd5b60018301546113a6906001604060020a031661340f565b915061159b826101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b6001830154600284018054611654926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561162e57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116115eb5790505b505050506003870154600091508190608060020a90046001604060020a03166001613766565b9050611661858286613a58565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b15156116d657600080fd5b6102c65a03f115156116e757600080fd5b5050505b5050505050565b600080600080600061170388611d93565b975061170e886133c6565b94506117198661340f565b93506117248961340f565b9250611919836101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60005b600386015460c060020a900460ff16600281111561193657fe5b1461194057600080fd5b60018501546001604060020a038a8116911614156119dd5760005b845460ff16600281111561196b57fe5b14156119815761197c888888613b6a565b6119d5565b60025b845460ff16600281111561199457fe5b14156119aa5761197c888888613bb0565b6119d5565b60015b845460ff1660028111156119bd57fe5b14156119d35761197c888888613e0f565b6119d5565bfe5b5b5b5b611d87565b611b0e8560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611aa757602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611a645790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611afa57fe5b6002811115611b0557fe5b9052508a613f43565b6001604060020a03908116925082146119d35760005b845460ff166002811115611b3457fe5b1415611b6a5760018501546001604060020a03878116911614611b5357fe5b6119d588888760020180549050613faa565b611d87565b60015b845460ff166002811115611b7d57fe5b1415611d4457611cb48560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c4d57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611c0a5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611ca057fe5b6002811115611cab57fe5b90525087613f43565b6001604060020a039081169150811415611cef57611cdf888860018589600201805490500303613faa565b61197c888888613e0f565b6119d5565b81811115611d1e57611cdf888860018589600201805490500303613faa565b61197c888888613e0f565b6119d5565b8181116119d5576119d5888860018489600201805490500303613faa565b5b5b5b611d87565b60025b845460ff166002811115611d5757fe5b14156119d357611d74888860018589600201805490500303613faa565b6119d58888886140b0565b611d87565b5bfe5b5b505050505050505050565b600080600080611da2856133c6565b925060005b600384015460c060020a900460ff166002811115611dc157fe5b14611dce57849350611f57565b600383015460006001604060020a03909116118015611e0757506003830154604060020a90046001604060020a0316611e05614412565b115b15611f25576001830154600284018054611ec4926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611e9f57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611e5c5790505b505050506003870154600091508190608060020a90046001604060020a031681613766565b6003840154909250611f05906001604060020a03166000604051805910611ee85750595b908082528060200260200182016040525b50600080866000613766565b9050611f1685828560000154613a58565b809450611f22856133c6565b92505b611f2e8561369c565b90506001604060020a0380821690861614611f5257611f5285828560000154613a58565b5b8093505b505050919050565b600180549081808201611f7283826148f0565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115611ff357fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612039929160200190614922565b50606082015181600201908051612054929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b600080805b83518310156112d8576001604060020a0384848151811061217d57fe5b90602001906020020151169150604060020a84848151811061219b57fe5b906020019060200201518115156121ae57fe5b0490506121bb828261134d565b5b600190920191612160565b5b50505050565b60006121d98661340f565b905060025b815460ff1660028111156121ee57fe5b146121f857600080fd5b805433600160a060020a03908116610100909204161461221757600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161224a929160200190614922565b5060028101838051612260929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016122ce83826148f0565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561234f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612395929160200190614922565b506060820151816002019080516123b0929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b6000806124b78361340f565b905060005b815460ff1660028111156124cc57fe5b14156124db5760009150612557565b60025b815460ff1660028111156124ee57fe5b146124f557fe5b6003810154608060020a900460ff16156125125760019150612557565b6003810154604060020a90046001604060020a031615156125365760009150612557565b600381015461255490604060020a90046001604060020a03166124ab565b91505b50919050565b600080805b83518310156112d8576001604060020a0384848151811061257f57fe5b90602001906020020151169150604060020a84848151811061259d57fe5b906020019060200201518115156125b057fe5b0490506125bd828261119a565b5b600190920191612562565b5b50505050565b60006125db8261340f565b90506127d0816101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f82a76f4c7fad127fa2b94c70b686a7111dda14d8de32572bc17d3ac22acc726f60405160405180910390a25b5050565b60008061283984611d93565b9350612844846133c6565b600181015490925061285e906001604060020a031661340f565b9050612a53816101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60038201546112d8908590608060020a90046001604060020a031685613a58565b5b50505050565b600080805b8351821015612ac0576001604060020a03848381518110612a9d57fe5b90602001906020020151169050612ab381611d93565b505b600190910190612a80565b5b5050919050565b60008080806001604060020a0386161515612b0e57612b0b6020604051908101604052806000815250602060405190810160405260008082526203f480906122bb565b95505b612b178661340f565b9350612d0c846101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60005b845460ff166002811115612d1f57fe5b14612d2957600080fd5b34925060008311612d3957600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515612d6c57600080fd5b612d9c866000604051805910612d7f5750595b908082528060200260200182016040525b50600080600080613766565b9150612da7826133c6565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a36122b3868385886116f2565b5b505050505050565b6000612e0e8661340f565b905060015b815460ff166002811115612e2357fe5b14612e2d57600080fd5b805433600160a060020a039081166101009092041614612e4c57600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612e7f929160200190614922565b5060028101838051612e95929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b600080805b84518310156122b3576001604060020a03858481518110612f1257fe5b90602001906020020151169150604060020a858481518110612f3057fe5b90602001906020020151811515612f4357fe5b049050612f52868383876116f2565b5b600190920191612ef5565b5b505050505050565b6000612f728661340f565b905060005b815460ff166002811115612f8757fe5b14612f9157600080fd5b805433600160a060020a039081166101009092041614612fb057600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612fe3929160200190614922565b5060028101838051612ff9929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600254600090819033600160a060020a0390811691161461307457600080fd5b61307d846133c6565b915060015b600383015460c060020a900460ff16600281111561309c57fe5b146130a657600080fd5b600182015460028301805461315e926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561313957602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116130f65790505b505050506003860154600091508190608060020a90046001604060020a031681613766565b90506112cb81611d93565b90506112d8848285613a58565b5b5b50505050565b6000806131896148de565b6131916148de565b60008060008060006131a28a61340f565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156132585780601f1061322d57610100808354040283529160200191613258565b820191906000526020600020905b81548152906001019060200180831161323b57829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132f75780601f106132cc576101008083540402835291602001916132f7565b820191906000526020600020905b8154815290600101906020018083116132da57829003601f168201915b50505050600383015460048401549298506001604060020a038082169850604060020a8204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600080805b83518310156112d8576001604060020a0384848151811061336657fe5b90602001906020020151169150604060020a84848151811061338457fe5b9060200190602002015181151561339757fe5b0490506133a48282613054565b5b600190920191613349565b5b50505050565b600254600160a060020a031681565b600080546001604060020a038316106133de57600080fd5b600080546001604060020a0384169081106133f557fe5b906000526020600020906004020160005b5090505b919050565b6001546000906001604060020a0383161061342957600080fd5b600180546001604060020a03841690811061344057fe5b906000526020600020906005020160005b5090505b919050565b60008060025b8351600281111561346d57fe5b1461347457fe5b8260a001516001604060020a031615156134915760019150612557565b61349e8360a0015161340f565b9050612554816101006040519081016040528154909190829060ff166002811115610dc057fe5b6002811115610dcb57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261345a565b91505b50919050565b600080806001604060020a03841615156136b95760009250612ac0565b6136c2846133c6565b60018101549092506136dc906001604060020a031661340f565b905060005b815460ff1660028111156136f157fe5b14156136ff57839250612ac0565b60025b815460ff16600281111561371257fe5b1461371957fe5b6001820154613730906001604060020a03166124ab565b151561373e57839250612ac0565b600382015461375c90608060020a90046001604060020a031661369c565b92505b5050919050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b838110156137b45780820151818401525b60200161379b565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a02815260080182600281111561382157fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a03909116915081111561388a57809250613a4c565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a0383161790558154909190600181016138c88382614a20565b916000526020600020906004020160005b60e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a0316815260200188600281111561393a57fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a0392909216919091179055604082015181600201908051613985929160200190614a52565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115613a4057fe5b02179055505050508092505b50509695505050505050565b6000806000613a6a6001878787614417565b9250846001604060020a0316866001604060020a03161415613a8b576122b3565b821515613a97576122b3565b613aa0866133c6565b9150613aab856133c6565b825490915083901015613abd57600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a3613b186000878786614417565b505b505050505050565b8060200151600160a060020a031633600160a060020a03161480613b5b57508060e00151600160a060020a031633600160a060020a0316145b1515613b6657600080fd5b5b50565b60006112cb826000604051805910612d7f5750595b908082528060200260200182016040525b50600080600080613766565b90506112d8848285613a58565b5b50505050565b6000806000613bbe866133c6565b92506014613cf28460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b10613cfc57600080fd5b613d05846124ab565b15613d0f57600080fd5b6001830154600284018054613dc7926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611e9f57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611e5c5790505b505050506003870154600091508190608060020a90046001604060020a031681613766565b9150613df9846000604051805910611ee85750595b908082528060200260200182016040525b50600080866000613766565b90506122b3868287613a58565b5b505050505050565b6000613e196148de565b600080613e25876133c6565b600281015490945060149010613e3a57600080fd5b6002840154600101604051805910613e4f5750595b908082528060200260200182016040525b509250600091505b6002840154821015613edd5760028401805483908110613e8457fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a0316838381518110613eba57fe5b6001604060020a039092166020928302909101909101525b600190910190613e68565b60028401548590849081518110613ef057fe5b6001604060020a039283166020918202909201015260018501546003860154613f2c929182169186916000918291608060020a90041681613766565b9050613b18878288613a58565b5b50505050505050565b6000805b836040015151811015613f9857826001604060020a031684604001518281518110613f6e57fe5b906020019060200201516001604060020a03161415613f8f57809150613fa3565b5b600101613f47565b6001604060020a0391505b5092915050565b6000613fb46148de565b600080613fc0876133c6565b6002810154909450859003604051805910613fd85750595b908082528060200260200182016040525b509250600091505b6002840154859003821015614069576002840180548390811061401057fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a031683838151811061404657fe5b6001604060020a039092166020928302909101909101525b600190910190613ff1565b60018401546003850154613f2c916001604060020a039081169186916000918291608060020a9091041681613766565b9050613b18878288613a58565b5b50505050505050565b6000806140bc856133c6565b915060146141f08360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b106141fa57600080fd5b614203836124ab565b1561420d57600080fd5b60018201546002830180546143fd926001604060020a031691906020808202016040519081016040528092919081815260200182805480156142a057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161425d5790505b5050505050856143d68660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561437057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161432d5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156143c357fe5b60028111156143ce57fe5b9052506145aa565b6143de614412565b6003880154910190608060020a90046001604060020a03166000613766565b90506116eb858286613a58565b5b5050505050565b425b90565b80614425858580868561463d565b9050614434858486868561463d565b90505b949350505050565b6000808260a001516001604060020a0316151561445f5760009150612557565b61446c8360a001516133c6565b905061459e8160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b60010191505b50919050565b60008060006145bc846020015161340f565b60038101546001604060020a031693509150600090505b836040015151811015612ac057614602846040015182815181106145f357fe5b9060200190602002015161340f565b60038101549092506001604060020a03168390111561462c5760038201546001604060020a031692505b5b6001016145d3565b5b5050919050565b600080600080866001604060020a0316886001604060020a03161461466457610100614667565b60005b61ffff169250849350614679886133c6565b6001810154909250614699908a906001604060020a03168989878961475e565b9350600090505b60028201546001604060020a03821610156147165761470b8983600201836001604060020a03168154811015156146d357fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a031689898588016001018961475e565b93505b6001016146a0565b600382015460006001604060020a03909116111561475157600382015461474e908a906001604060020a0316898960ff88018961475e565b93505b5b50505095945050505050565b8060008061476b8861340f565b6004810154909150600160a060020a03161580159061478a5750600083115b15613a4c578815614845576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b151561481457600080fd5b6102c65a03f1151561482557600080fd5b50505060405180519250508282111561483d57600080fd5b819250613a4c565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b15156148bb57600080fd5b6102c65a03f115156148cc57600080fd5b5050505b5b5b50509695505050505050565b60206040519081016040526000815290565b81548183558181151161491c5760050281600502836000526020600020918201910161491c9190614b1c565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061496357805160ff1916838001178555614990565b82800160010185558215614990579182015b82811115614990578251825591602001919060010190614975565b5b5061499d929150614bae565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061496357805160ff1916838001178555614990565b82800160010185558215614990579182015b82811115614990578251825591602001919060010190614975565b5b5061499d929150614bae565b5090565b81548183558181151161491c5760040281600402836000526020600020918201910161491c9190614bcf565b5b505050565b82805482825590600052602060002090600301600490048101928215614afa5791602002820160005b83821115614ac557835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302614a7b565b8015614af85782816101000a8154906001604060020a030219169055600801602081600701049283019260010302614ac5565b505b5061499d929150614c36565b5090565b60206040519081016040526000815290565b61119791905b8082111561499d57805474ffffffffffffffffffffffffffffffffffffffffff191681556000614b556001830182614c62565b614b63600283016000614c62565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501614b22565b5090565b90565b61119791905b8082111561499d5760008155600101614bb4565b5090565b90565b61119791905b8082111561499d57600080825560018201805467ffffffffffffffff19169055614c026002830182614caa565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401614bd5565b5090565b90565b61119791905b8082111561499d57805467ffffffffffffffff19168155600101614c3c565b5090565b90565b50805460018160011615610100020316600290046000825580601f10614c885750613b66565b601f016020900490600052602060002090810190613b669190614bae565b5b50565b508054600082556003016004900490600052602060002090810190613b669190614bae565b5b505600a165627a7a723058204352945ded3efdfb5c2e014518ba6c77a5b8800cfb0f0764720589df97ac66e90029" -exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001fd3833981016040528080519150505b60016200003681806200006a565b506001620000466000826200009f565b5060028054600160a060020a031916600160a060020a0383161790555b5062000255565b8154818355818115116200009957600502816005028360005260206000209182019101620000999190620000d4565b5b505050565b815481835581811511620000995760040281600402836000526020600020918201910162000099919062000148565b5b505050565b6200014591905b8082111562000141578054600160a860020a03191681556000620001036001830182620001ba565b62000113600283016000620001ba565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000db565b5090565b90565b6200014591905b808211156200014157600080825560018201805467ffffffffffffffff191690556200017f600283018262000206565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001e2575062000202565b601f01602090049060005260206000209081019062000202919062000231565b5b50565b50805460008255600301600490049060005260206000209081019062000202919062000231565b5b50565b6200014591905b8082111562000141576000815560010162000238565b5090565b90565b611d6e80620002656000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632287b3aa146101835780632a8ec8cc1461025d5780633f657a461461028257806352dc7dcc146103025780635503d9ba146103cc5780635c1de885146103f15780637f61fa93146104b05780638fe1f2ce1461057a578063cc19ecf7146105ae578063db7c23141461066d578063eba8ba061461072c578063fbfa77cf14610886575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff600435166024356108b5565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101465780820151818401525b60200161012d565b50505050905090810190601f1680156101735780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018e57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff6020820135811696506040820135169450606001351691506109dd9050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561026857600080fd5b610270610e38565b60405190815260200160405180910390f35b341561028d57600080fd5b6102a267ffffffffffffffff60043516610e43565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102e857fe5b60ff16815260200197505050505050505060405180910390f35b341561030d57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610ecb915050565b60405167ffffffffffffffff909116815260200160405180910390f35b34156103d757600080fd5b6102706110c1565b60405190815260200160405180910390f35b34156103fc57600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506110cc915050565b005b34156104bb57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a031692506111ba915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561058557600080fd5b61059a67ffffffffffffffff600435166113af565b604051901515815260200160405180910390f35b34156105b957600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061146d915050565b005b341561067857600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061155b915050565b005b341561073757600080fd5b61074c67ffffffffffffffff60043516611649565b6040518089600281111561075c57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156107df5780820151818401525b6020016107c6565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156108435780820151818401525b60200161082a565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561089157600080fd5b610899611815565b604051600160a060020a03909116815260200160405180910390f35b6000806108c0611b05565b6000806108cc87611824565b915081600201600187038154811015156108e257fe5b90600052602060002090600491828204019190066008025b9054906101000a900467ffffffffffffffff1694506109188561186f565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b505050505092505b50509250925092565b60008067ffffffffffffffff851615610c3c576109f98561186f565b905060025b815460ff166002811115610a0e57fe5b14610a1857600080fd5b805433600160a060020a039081166101009092041614610a3757600080fd5b6014610c32826101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b10610c3c57600080fd5b5b60018054925082808201610c518382611b17565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610cd457fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610d1a929160200190611b49565b50606082015181600201908051610d35929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600080600080600080600080610e5889611824565b8054600182015460028301546003840154929b5067ffffffffffffffff9182169a509850808216975068010000000000000000820481169650608060020a82041694507801000000000000000000000000000000000000000000000000900460ff16925090505b50919395979092949650565b600180549081808201610ede8382611b17565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610f6057fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610fa6929160200190611b49565b50606082015181600201908051610fc1929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b60006110d78661186f565b905060025b815460ff1660028111156110ec57fe5b146110f657600080fd5b805433600160a060020a03908116610100909204161461111557600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051611148929160200190611b49565b506002810183805161115e929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016111cd8382611b17565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561124f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611295929160200190611b49565b506060820151816002019080516112b0929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b6000806113bb8361186f565b905060005b815460ff1660028111156113d057fe5b14156113df5760009150611467565b60025b815460ff1660028111156113f257fe5b146113f957fe5b6003810154608060020a900460ff16156114165760019150611467565b600381015468010000000000000000900467ffffffffffffffff1615156114405760009150611467565b60038101546114649068010000000000000000900467ffffffffffffffff166113af565b91505b50919050565b60006114788661186f565b905060015b815460ff16600281111561148d57fe5b1461149757600080fd5b805433600160a060020a0390811661010090920416146114b657600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516114e9929160200190611b49565b50600281018380516114ff929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b60006115668661186f565b905060005b815460ff16600281111561157b57fe5b1461158557600080fd5b805433600160a060020a0390811661010090920416146115a457600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516115d7929160200190611b49565b50600281018380516115ed929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600080611654611b05565b61165c611b05565b600080600080600061166d8a61186f565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b505050506003830154600484015492985067ffffffffffffffff8082169850680100000000000000008204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600254600160a060020a031681565b6000805467ffffffffffffffff83161061183d57600080fd5b6000805467ffffffffffffffff841690811061185557fe5b906000526020600020906004020160005b5090505b919050565b60015460009067ffffffffffffffff83161061188a57600080fd5b6001805467ffffffffffffffff84169081106118a257fe5b906000526020600020906005020160005b5090505b919050565b60008060025b835160028111156118cf57fe5b146118d657fe5b8260a0015167ffffffffffffffff1615156118f45760019150611467565b6119018360a0015161186f565b9050611464816101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b91505b50919050565b60206040519081016040526000815290565b815481835581811511611b4357600502816005028360005260206000209182019101611b439190611c47565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b610e4091905b80821115611bc457805474ffffffffffffffffffffffffffffffffffffffffff191681556000611c806001830182611cfa565b611c8e600283016000611cfa565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611c4d565b5090565b90565b610e4091905b80821115611bc45760008155600101611cdf565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611d205750611d3e565b601f016020900490600052602060002090810190611d3e9190611cd9565b5b505600a165627a7a72305820a01c5204ba4e65d9f0db835a63af0a6a28158a36f22f43c75beb4ba1b21b4d2b0029" -exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"}] +exports.LiquidPledgingAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"}],"name":"cancelProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"CancelProject","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingByteCode = "0x606060405234156200001057600080fd5b6040516020806200431883398101604052808051915081905060016200003781806200006f565b50600162000047600082620000a3565b5060028054600160a060020a031916600160a060020a0392909216919091179055506200023b565b8154818355818115116200009e576005028160050283600052602060002091820191016200009e9190620000d2565b505050565b8154818355818115116200009e576004028160040283600052602060002091820191016200009e919062000146565b6200014391905b808211156200013f578054600160a860020a03191681556000620001016001830182620001b1565b62000111600283016000620001b1565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000d9565b5090565b90565b6200014391905b808211156200013f57600080825560018201805467ffffffffffffffff191690556200017d6002830182620001fc565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014d565b50805460018160011615610100020316600290046000825580601f10620001d95750620001f9565b601f016020900490600052602060002090810190620001f991906200021e565b50565b508054600082556003016004900490600052602060002090810190620001f991905b6200014391905b808211156200013f576000815560010162000225565b6140cd806200024b6000396000f300606060405236156101385763ffffffff60e060020a60003504166314e7b1dc811461013d5780632101a6ad146101f65780632a8ec8cc146102295780632ee888081461024e5780633f657a461461027257806343387983146102f057806347c5ef431461031257806350f8a8031461034157806352dc7dcc1461037c5780635503d9ba1461042857806357adafb61461043b57806372116e921461048a578063796d5654146105465780637f61fa93146105655780639398f5a214610611578063af9f456314610660578063bce0906d14610682578063bde60ac9146106d1578063cc19ecf7146106eb578063d639cd73146107a6578063db7c23141461080e578063e9c211e2146108c9578063eba8ba06146108eb578063ef3766e414610a41578063f6b24b1c14610a90578063fbfa77cf14610b4b575b600080fd5b341561014857600080fd5b61015f6001604060020a0360043516602435610b7a565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101b95780820151838201526020016101a1565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020157600080fd5b6102156001604060020a0360043516610c9f565b604051901515815260200160405180910390f35b341561023457600080fd5b61023c610d4f565b60405190815260200160405180910390f35b341561025957600080fd5b6102706001604060020a0360043516602435610d5a565b005b341561027d57600080fd5b6102916001604060020a0360043516610e9d565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102d657fe5b60ff16815260200197505050505050505060405180910390f35b34156102fb57600080fd5b6102706001604060020a0360043516602435610f02565b341561031d57600080fd5b6102706001604060020a0360043581169060243581169060443590606435166112a5565b341561034c57600080fd5b6103606001604060020a0360043516611739565b6040516001604060020a03909116815260200160405180910390f35b341561038757600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611902915050565b341561043357600080fd5b61023c611af0565b341561044657600080fd5b6102706004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611afa95505050505050565b341561049557600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150611b659050565b341561055157600080fd5b6102706001604060020a0360043516611faf565b341561057057600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a0316925061203d915050565b341561061c57600080fd5b610270600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061222a95505050505050565b341561066b57600080fd5b6102706001604060020a0360043516602435612295565b341561068d57600080fd5b610360600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061230e95505050505050565b6102706001604060020a0360043581169060243516612359565b34156106f657600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a031692506124c3915050565b34156107b157600080fd5b610270600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a031692506125ae915050565b341561081957600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a0316925061261b915050565b34156108d457600080fd5b6102706001604060020a0360043516602435612706565b34156108f657600080fd5b61090a6001604060020a036004351661281a565b6040518089600281111561091a57fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b8381101561099b578082015183820152602001610983565b50505050905090810190601f1680156109c85780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156109fe5780820151838201526020016109e6565b50505050905090810190601f168015610a2b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610a4c57600080fd5b61027060046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506129df95505050505050565b3415610a9b57600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612a4a915050565b3415610b5657600080fd5b610b5e612b35565b604051600160a060020a03909116815260200160405180910390f35b600080610b85613d6d565b600080610b9187612b44565b91508160020160018703815481101515610ba757fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a03169450610bdb85612b88565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050925050509250925092565b600080610cab83612b88565b90506000815460ff166002811115610cbf57fe5b1415610cce5760009150610d49565b6002815460ff166002811115610ce057fe5b14610ce757fe5b6003810154608060020a900460ff1615610d045760019150610d49565b6003810154604060020a90046001604060020a03161515610d285760009150610d49565b6003810154610d4690604060020a90046001604060020a0316610c9f565b91505b50919050565b600054600019015b90565b600254600090819033600160a060020a03908116911614610d7a57600080fd5b610d8384612b44565b91506001600383015460c060020a900460ff166002811115610da157fe5b14610dab57600080fd5b836001604060020a0316610dbe85612bce565b6001604060020a031614610dd157600080fd5b6001820154600283018054610e8a926001604060020a03169190602080820201604051908101604052809291908181526020018280548015610e6457602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411610e215790505b505050506003860154600091508190608060020a90046001604060020a03166002612c94565b9050610e97848285612f84565b50505050565b600080600080600080600080610eb289612b44565b805460018201546002830154600390930154919c6001604060020a039182169c50929a508082169950604060020a820481169850608060020a820416965060c060020a900460ff16945092505050565b6000806000610f1085611739565b9450610f1b85612b44565b92506000600384015460c060020a900460ff166002811115610f3957fe5b14610f4357600080fd5b6001830154610f5a906001604060020a0316612b88565b915061114f826101006040519081016040528154909190829060ff166002811115610f8157fe5b6002811115610f8c57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110585780601f1061102d57610100808354040283529160200191611058565b820191906000526020600020905b81548152906001019060200180831161103b57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261304d565b6001830154600284018054611208926001604060020a031691906020808202016040519081016040528092919081815260200182805480156111e257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161119f5790505b505050506003870154600091508190608060020a90046001604060020a03166001612c94565b9050611215858286612f84565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b151561128a57600080fd5b6102c65a03f1151561129b57600080fd5b5050505050505050565b60008060008060006112b688611739565b97506112c188612b44565b94506112cc86612b88565b93506112d789612b88565b92506112fe836101006040519081016040528154909190829060ff166002811115610f8157fe5b6000600386015460c060020a900460ff16600281111561131a57fe5b1461132457600080fd5b60018501546001604060020a038a8116911614156113b1576000845460ff16600281111561134e57fe5b14156113645761135f888888613094565b6113ac565b6002845460ff16600281111561137657fe5b14156113875761135f8888886130c4565b6001845460ff16600281111561139957fe5b14156113aa5761135f8888886132ed565bfe5b61172e565b6114e28560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561147b57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116114385790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156114ce57fe5b60028111156114d957fe5b9052508a613414565b6001604060020a03908116925082146113aa576000845460ff16600281111561150757fe5b14156115385760018501546001604060020a0387811691161461152657fe5b6113ac8888876002018054905061347a565b6001845460ff16600281111561154a57fe5b14156116f4576116818560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561161a57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116115d75790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561166d57fe5b600281111561167857fe5b90525087613414565b6001604060020a0390811691508114156116b7576116ac88886001858960020180549050030361347a565b61135f8888886132ed565b818111156116d6576116ac88886001858960020180549050030361347a565b8181116113ac576113ac88886001848960020180549050030361347a565b6002845460ff16600281111561170657fe5b14156113aa5761172388886001858960020180549050030361347a565b6113ac888888613566565b505050505050505050565b60008060008061174885612b44565b92506000600384015460c060020a900460ff16600281111561176657fe5b14611773578493506118fa565b600383015460006001604060020a039091161180156117ac57506003830154604060020a90046001604060020a03166117aa613889565b115b156118c9576001830154600284018054611869926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561184457602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116118015790505b505050506003870154600091508190608060020a90046001604060020a031681612c94565b60038401549092506118a9906001604060020a0316600060405180591061188d5750595b9080825280602002602001820160405250600080866000612c94565b90506118ba85828560000154612f84565b8094506118c685612b44565b92505b6118d285612bce565b90506001604060020a03808216908616146118f6576118f685828560000154612f84565b8093505b505050919050565b6001805490818082016119158382613d7f565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561199457fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516119da929160200190613db0565b506060820151816002019080516119f5929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b600080805b8351831015610e97576001604060020a03848481518110611b1c57fe5b90602001906020020151169150604060020a848481518110611b3a57fe5b90602001906020020151811515611b4d57fe5b049050611b5a8282610f02565b600190920191611aff565b6000806001604060020a03851615611dbc57611b8085612b88565b90506002815460ff166002811115611b9457fe5b14611b9e57600080fd5b805433600160a060020a039081166101009092041614611bbd57600080fd5b6014611db2826101006040519081016040528154909190829060ff166002811115611be457fe5b6002811115611bef57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cbb5780601f10611c9057610100808354040283529160200191611cbb565b820191906000526020600020905b815481529060010190602001808311611c9e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d5d5780601f10611d3257610100808354040283529160200191611d5d565b820191906000526020600020905b815481529060010190602001808311611d4057829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261388d565b10611dbc57600080fd5b60018054925082808201611dd08382613d7f565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115611e5057fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611e96929160200190613db0565b50606082015181600201908051611eb1929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b6000611fba82612b88565b9050611fe1816101006040519081016040528154909190829060ff166002811115610f8157fe5b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f2d65c225503bd4cd245a36c8030073ddd0fb02c23ce540fcd901e74e5006687c60405160405180910390a25050565b6001805490818082016120508382613d7f565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156120cf57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612115929160200190613db0565b50606082015181600201908051612130929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600080805b8351831015610e97576001604060020a0384848151811061224c57fe5b90602001906020020151169150604060020a84848151811061226a57fe5b9060200190602002015181151561227d57fe5b04905061228a8282610d5a565b60019092019161222f565b6000806122a184611739565b93506122ac84612b44565b60018101549092506122c6906001604060020a0316612b88565b90506122ed816101006040519081016040528154909190829060ff166002811115610f8157fe5b6003820154610e97908590608060020a90046001604060020a031685612f84565b600080805b8351821015612352576001604060020a0384838151811061233057fe5b9060200190602002015116905061234681611739565b50600190910190612313565b5050919050565b60008080806001604060020a038616151561239f5761239c6020604051908101604052806000815250602060405190810160405260008082526203f4809061203d565b95505b6123a886612b88565b93506123cf846101006040519081016040528154909190829060ff166002811115610f8157fe5b6000845460ff1660028111156123e157fe5b146123eb57600080fd5b349250600083116123fb57600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f19350505050151561242e57600080fd5b61245d8660006040518059106124415750595b9080825280602002602001820160405250600080600080612c94565b915061246882612b44565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a36124bb868385886112a5565b505050505050565b60006124ce86612b88565b90506001815460ff1660028111156124e257fe5b146124ec57600080fd5b805433600160a060020a03908116610100909204161461250b57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161253e929160200190613db0565b5060028101838051612554929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600080805b84518310156124bb576001604060020a038584815181106125d057fe5b90602001906020020151169150604060020a8584815181106125ee57fe5b9060200190602002015181151561260157fe5b049050612610868383876112a5565b6001909201916125b3565b600061262686612b88565b90506000815460ff16600281111561263a57fe5b1461264457600080fd5b805433600160a060020a03908116610100909204161461266357600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612696929160200190613db0565b50600281018380516126ac929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b600254600090819033600160a060020a0390811691161461272657600080fd5b61272f84612b44565b91506001600383015460c060020a900460ff16600281111561274d57fe5b1461275757600080fd5b600182015460028301805461280f926001604060020a031691906020808202016040519081016040528092919081815260200182805480156127ea57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116127a75790505b505050506003860154600091508190608060020a90046001604060020a031681612c94565b9050610e8a81611739565b600080612825613d6d565b61282d613d6d565b600080600080600061283e8a612b88565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156128f45780601f106128c9576101008083540402835291602001916128f4565b820191906000526020600020905b8154815290600101906020018083116128d757829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129935780601f1061296857610100808354040283529160200191612993565b820191906000526020600020905b81548152906001019060200180831161297657829003601f168201915b5050505060038301546004909301549a9c999b50979990986001604060020a038084169950604060020a8404169750608060020a90920460ff169550600160a060020a03169350915050565b600080805b8351831015610e97576001604060020a03848481518110612a0157fe5b90602001906020020151169150604060020a848481518110612a1f57fe5b90602001906020020151811515612a3257fe5b049050612a3f8282612706565b6001909201916129e4565b6000612a5586612b88565b90506002815460ff166002811115612a6957fe5b14612a7357600080fd5b805433600160a060020a039081166101009092041614612a9257600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612ac5929160200190613db0565b5060028101838051612adb929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b600080546001604060020a03831610612b5c57600080fd5b600080546001604060020a038416908110612b7357fe5b90600052602060002090600402019050919050565b6001546000906001604060020a03831610612ba257600080fd5b600180546001604060020a038416908110612bb957fe5b90600052602060002090600502019050919050565b600080806001604060020a0384161515612beb5760009250612352565b612bf484612b44565b6001810154909250612c0e906001604060020a0316612b88565b90506000815460ff166002811115612c2257fe5b1415612c3057839250612352565b6002815460ff166002811115612c4257fe5b14612c4957fe5b6001820154612c60906001604060020a0316610c9f565b1515612c6e57839250612352565b6003820154612c8c90608060020a90046001604060020a0316612bce565b949350505050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b83811015612ce1578082015183820152602001612cc9565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a028152600801826002811115612d4e57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a039091169150811115612db757809250612f78565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a038316179055815490919060018101612df58382613e2e565b9160005260206000209060040201600060e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a03168152602001886002811115612e6657fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a0392909216919091179055604082015181600201908051612eb1929160200190613e5a565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115612f6c57fe5b02179055505050508092505b50509695505050505050565b6000806000612f9660018787876138f7565b9250846001604060020a0316866001604060020a03161415612fb7576124bb565b821515612fc3576124bb565b612fcc86612b44565b9150612fd785612b44565b825490915083901015612fe957600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a361304460008787866138f7565b50505050505050565b8060200151600160a060020a031633600160a060020a0316148061308657508060e00151600160a060020a031633600160a060020a0316145b151561309157600080fd5b50565b6000610e8a8260006040518059106124415750599080825280602002602001820160405250600080600080612c94565b60008060006130d286612b44565b925060146132068460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161315d5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b60028111156131fe57fe5b90525061391d565b1061321057600080fd5b61321984610c9f565b1561322357600080fd5b60018301546002840180546132b0926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561184457600091825260209182902080546001604060020a031684529082028301929091600891018084116118015750505050600388015460009250829150608060020a90046001604060020a031681612c94565b91506132e084600060405180591061188d5750599080825280602002602001820160405250600080866000612c94565b90506124bb868287612f84565b60006132f7613d6d565b60008061330387612b44565b60028101549094506014901061331857600080fd5b600284015460010160405180591061332d5750595b90808252806020026020018201604052509250600091505b60028401548210156133b8576002840180548390811061336157fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a031683838151811061339657fe5b6001604060020a03909216602092830290910190910152600190910190613345565b600284015485908490815181106133cb57fe5b6001604060020a039283166020918202909201015260018501546003860154613407929182169186916000918291608060020a90041681612c94565b9050613044878288612f84565b6000805b83604001515181101561346857826001604060020a03168460400151828151811061343f57fe5b906020019060200201516001604060020a0316141561346057809150613473565b600101613418565b6001604060020a0391505b5092915050565b6000613484613d6d565b60008061349087612b44565b60028101549094508590036040518059106134a85750595b90808252806020026020018201604052509250600091505b600284015485900382101561353657600284018054839081106134df57fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a031683838151811061351457fe5b6001604060020a039092166020928302909101909101526001909101906134c0565b60018401546003850154613407916001604060020a039081169186916000918291608060020a9091041681612c94565b60008061357285612b44565b915060146136688360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057600091825260209182902080546001604060020a0316845290820283019290916008910180841161315d5750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b1061367257600080fd5b61367b83610c9f565b1561368557600080fd5b6001820154600283018054613875926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561371857602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116136d55790505b50505050508561384e8660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156137e857602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116137a55790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561383b57fe5b600281111561384657fe5b905250613a48565b613856613889565b6003880154910190608060020a90046001604060020a03166000612c94565b9050613882858286612f84565b5050505050565b4290565b60008060028351600281111561389f57fe5b146138a657fe5b8260a001516001604060020a031615156138c35760019150610d49565b6138d08360a00151612b88565b9050610d46816101006040519081016040528154909190829060ff166002811115611be457fe5b806139058585808685613ad2565b90506139148584868685613ad2565b95945050505050565b6000808260a001516001604060020a0316151561393d5760009150610d49565b61394a8360a00151612b44565b9050613a3e8160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057600091825260209182902080546001604060020a0316845290820283019290916008910180841161315d5750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b6001019392505050565b6000806000613a5a8460200151612b88565b60038101546001604060020a031693509150600090505b83604001515181101561235257613aa084604001518281518110613a9157fe5b90602001906020020151612b88565b60038101549092506001604060020a031683901115613aca5760038201546001604060020a031692505b600101613a71565b600080600080866001604060020a0316886001604060020a031614613af957610100613afc565b60005b61ffff169250849350613b0e88612b44565b6001810154909250613b2e908a906001604060020a031689898789613bf0565b9350600090505b60028201546001604060020a0382161015613ba957613b9f8983600201836001604060020a0316815481101515613b6857fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a0316898985880160010189613bf0565b9350600101613b35565b600382015460006001604060020a039091161115613be4576003820154613be1908a906001604060020a0316898960ff880189613bf0565b93505b50505095945050505050565b80600080613bfd88612b88565b6004810154909150600160a060020a031615801590613c1c5750600083115b15612f78578815613cd7576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b1515613ca657600080fd5b6102c65a03f11515613cb757600080fd5b505050604051805192505082821115613ccf57600080fd5b819250612f78565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b1515613d4d57600080fd5b6102c65a03f11515613d5e57600080fd5b50505050509695505050505050565b60206040519081016040526000815290565b815481835581811511613dab57600502816005028360005260206000209182019101613dab9190613f0e565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613df157805160ff1916838001178555613e1e565b82800160010185558215613e1e579182015b82811115613e1e578251825591602001919060010190613e03565b50613e2a929150613f99565b5090565b815481835581811511613dab57600402816004028360005260206000209182019101613dab9190613fb3565b82805482825590600052602060002090600301600490048101928215613f025791602002820160005b83821115613ecd57835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302613e83565b8015613f005782816101000a8154906001604060020a030219169055600801602081600701049283019260010302613ecd565b505b50613e2a929150614013565b610d5791905b80821115613e2a57805474ffffffffffffffffffffffffffffffffffffffffff191681556000613f476001830182614038565b613f55600283016000614038565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501613f14565b610d5791905b80821115613e2a5760008155600101613f9f565b610d5791905b80821115613e2a57600080825560018201805467ffffffffffffffff19169055613fe6600283018261407c565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401613fb9565b610d5791905b80821115613e2a57805467ffffffffffffffff19168155600101614019565b50805460018160011615610100020316600290046000825580601f1061405e5750613091565b601f0160209004906000526020600020908101906130919190613f99565b5080546000825560030160049004906000526020600020908101906130919190613f995600a165627a7a72305820bec48535525533970ba53f4c6f07cbda18c611354eca995dfef2791d29009e6e0029" +exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001ccd833981016040528080519150600190506200003681806200006d565b50600162000046600082620000a1565b5060028054600160a060020a031916600160a060020a039290921691909117905562000239565b8154818355818115116200009c576005028160050283600052602060002091820191016200009c9190620000d0565b505050565b8154818355818115116200009c576004028160040283600052602060002091820191016200009c919062000144565b6200014191905b808211156200013d578054600160a860020a03191681556000620000ff6001830182620001af565b6200010f600283016000620001af565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000d7565b5090565b90565b6200014191905b808211156200013d57600080825560018201805467ffffffffffffffff191690556200017b6002830182620001fa565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014b565b50805460018160011615610100020316600290046000825580601f10620001d75750620001f7565b601f016020900490600052602060002090810190620001f791906200021c565b50565b508054600082556003016004900490600052602060002090810190620001f791905b6200014191905b808211156200013d576000815560010162000223565b611a8480620002496000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632101a6ad146101825780632a8ec8cc146101b65780633f657a46146101db57806352dc7dcc1461025b5780635503d9ba1461032557806372116e92146103385780637f61fa93146103f5578063cc19ecf7146104a2578063db7c231414610561578063eba8ba061461061e578063f6b24b1c14610776578063fbfa77cf14610833575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff60043516602435610862565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b8381101561014557808201518382015260200161012d565b50505050905090810190601f1680156101725780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018d57600080fd5b6101a267ffffffffffffffff60043516610988565b604051901515815260200160405180910390f35b34156101c157600080fd5b6101c9610a44565b60405190815260200160405180910390f35b34156101e657600080fd5b6101fb67ffffffffffffffff60043516610a4f565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561024157fe5b60ff16815260200197505050505050505060405180910390f35b341561026657600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610acf915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561033057600080fd5b6101c9610cc2565b341561034357600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff602082013581169650604082013516945060600135169150610ccc9050565b341561040057600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250611122915050565b34156104ad57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611314915050565b005b341561056c57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611400915050565b341561062957600080fd5b61063e67ffffffffffffffff600435166114ec565b6040518089600281111561064e57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156106d05780820151838201526020016106b8565b50505050905090810190601f1680156106fd5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b8381101561073357808201518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561078157600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506116b7915050565b341561083e57600080fd5b6108466117a3565b604051600160a060020a03909116815260200160405180910390f35b60008061086d6118ab565b600080610879876117b2565b9150816002016001870381548110151561088f57fe5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1694506108c4856117f8565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b5050505050925050509250925092565b600080610994836117f8565b90506000815460ff1660028111156109a857fe5b14156109b75760009150610a3e565b6002815460ff1660028111156109c957fe5b146109d057fe5b6003810154608060020a900460ff16156109ed5760019150610a3e565b600381015468010000000000000000900467ffffffffffffffff161515610a175760009150610a3e565b6003810154610a3b9068010000000000000000900467ffffffffffffffff16610988565b91505b50919050565b600054600019015b90565b600080600080600080600080610a64896117b2565b805460018201546002830154600390930154919c67ffffffffffffffff9182169c50929a50808216995068010000000000000000820481169850608060020a82041696507801000000000000000000000000000000000000000000000000900460ff16945092505050565b600180549081808201610ae283826118bd565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610b6257fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610ba89291602001906118ee565b50606082015181600201908051610bc39291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b60008067ffffffffffffffff851615610f2a57610ce8856117f8565b90506002815460ff166002811115610cfc57fe5b14610d0657600080fd5b805433600160a060020a039081166101009092041614610d2557600080fd5b6014610f20826101006040519081016040528154909190829060ff166002811115610d4c57fe5b6002811115610d5757fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ec55780601f10610e9a57610100808354040283529160200191610ec5565b820191906000526020600020905b815481529060010190602001808311610ea857829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152611840565b10610f2a57600080fd5b60018054925082808201610f3e83826118bd565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610fbf57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516110059291602001906118ee565b506060820151816002019080516110209291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b60018054908180820161113583826118bd565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156111b557fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516111fb9291602001906118ee565b506060820151816002019080516112169291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600061131f866117f8565b90506001815460ff16600281111561133357fe5b1461133d57600080fd5b805433600160a060020a03908116610100909204161461135c57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161138f9291602001906118ee565b50600281018380516113a59291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600061140b866117f8565b90506000815460ff16600281111561141f57fe5b1461142957600080fd5b805433600160a060020a03908116610100909204161461144857600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161147b9291602001906118ee565b50600281018380516114919291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b6000806114f76118ab565b6114ff6118ab565b60008060008060006115108a6117f8565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156115c65780601f1061159b576101008083540402835291602001916115c6565b820191906000526020600020905b8154815290600101906020018083116115a957829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116655780601f1061163a57610100808354040283529160200191611665565b820191906000526020600020905b81548152906001019060200180831161164857829003601f168201915b5050505060038301546004909301549a9c999b509799909867ffffffffffffffff8084169950680100000000000000008404169750608060020a90920460ff169550600160a060020a03169350915050565b60006116c2866117f8565b90506002815460ff1660028111156116d657fe5b146116e057600080fd5b805433600160a060020a0390811661010090920416146116ff57600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516117329291602001906118ee565b50600281018380516117489291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b6000805467ffffffffffffffff8316106117cb57600080fd5b6000805467ffffffffffffffff84169081106117e357fe5b90600052602060002090600402019050919050565b60015460009067ffffffffffffffff83161061181357600080fd5b6001805467ffffffffffffffff841690811061182b57fe5b90600052602060002090600502019050919050565b60008060028351600281111561185257fe5b1461185957fe5b8260a0015167ffffffffffffffff1615156118775760019150610a3e565b6118848360a001516117f8565b9050610a3b816101006040519081016040528154909190829060ff166002811115610d4c57fe5b60206040519081016040526000815290565b8154818355818115116118e9576005028160050283600052602060002091820191016118e9919061196c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061192f57805160ff191683800117855561195c565b8280016001018555821561195c579182015b8281111561195c578251825591602001919060010190611941565b506119689291506119f7565b5090565b610a4c91905b8082111561196857805474ffffffffffffffffffffffffffffffffffffffffff1916815560006119a56001830182611a11565b6119b3600283016000611a11565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611972565b610a4c91905b8082111561196857600081556001016119fd565b50805460018160011615610100020316600290046000825580601f10611a375750611a55565b601f016020900490600052602060002090810190611a5591906119f7565b505600a165627a7a723058204ccf2be49411bfe224a6642b6216a2d3fa0d2453c182fe0aae6663468683394f0029" +exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}] exports.VaultByteCode = "0x" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" -exports._sha256 = "0x61552de9936a3e5895d0f085f7e7f5795fc7795d7c337c59ee05e6413ecb4ec2" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" +exports._sha256 = "0xd885a6e34cba3b350c61533518dfe4468e05e3e38a04f96e3d371a1f660bddd4" diff --git a/build/LiquidPledgingBase.sol.js b/build/LiquidPledgingBase.sol.js index 1703637..63e15e2 100644 --- a/build/LiquidPledgingBase.sol.js +++ b/build/LiquidPledgingBase.sol.js @@ -1,10 +1,10 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"type":"function"}] +exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] exports.ILiquidPledgingPluginByteCode = "0x" -exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001fd3833981016040528080519150505b60016200003681806200006a565b506001620000466000826200009f565b5060028054600160a060020a031916600160a060020a0383161790555b5062000255565b8154818355818115116200009957600502816005028360005260206000209182019101620000999190620000d4565b5b505050565b815481835581811511620000995760040281600402836000526020600020918201910162000099919062000148565b5b505050565b6200014591905b8082111562000141578054600160a860020a03191681556000620001036001830182620001ba565b62000113600283016000620001ba565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000db565b5090565b90565b6200014591905b808211156200014157600080825560018201805467ffffffffffffffff191690556200017f600283018262000206565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001e2575062000202565b601f01602090049060005260206000209081019062000202919062000231565b5b50565b50805460008255600301600490049060005260206000209081019062000202919062000231565b5b50565b6200014591905b8082111562000141576000815560010162000238565b5090565b90565b611d6e80620002656000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632287b3aa146101835780632a8ec8cc1461025d5780633f657a461461028257806352dc7dcc146103025780635503d9ba146103cc5780635c1de885146103f15780637f61fa93146104b05780638fe1f2ce1461057a578063cc19ecf7146105ae578063db7c23141461066d578063eba8ba061461072c578063fbfa77cf14610886575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff600435166024356108b5565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101465780820151818401525b60200161012d565b50505050905090810190601f1680156101735780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018e57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff6020820135811696506040820135169450606001351691506109dd9050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561026857600080fd5b610270610e38565b60405190815260200160405180910390f35b341561028d57600080fd5b6102a267ffffffffffffffff60043516610e43565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102e857fe5b60ff16815260200197505050505050505060405180910390f35b341561030d57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610ecb915050565b60405167ffffffffffffffff909116815260200160405180910390f35b34156103d757600080fd5b6102706110c1565b60405190815260200160405180910390f35b34156103fc57600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506110cc915050565b005b34156104bb57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a031692506111ba915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561058557600080fd5b61059a67ffffffffffffffff600435166113af565b604051901515815260200160405180910390f35b34156105b957600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061146d915050565b005b341561067857600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061155b915050565b005b341561073757600080fd5b61074c67ffffffffffffffff60043516611649565b6040518089600281111561075c57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156107df5780820151818401525b6020016107c6565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156108435780820151818401525b60200161082a565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561089157600080fd5b610899611815565b604051600160a060020a03909116815260200160405180910390f35b6000806108c0611b05565b6000806108cc87611824565b915081600201600187038154811015156108e257fe5b90600052602060002090600491828204019190066008025b9054906101000a900467ffffffffffffffff1694506109188561186f565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b505050505092505b50509250925092565b60008067ffffffffffffffff851615610c3c576109f98561186f565b905060025b815460ff166002811115610a0e57fe5b14610a1857600080fd5b805433600160a060020a039081166101009092041614610a3757600080fd5b6014610c32826101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b10610c3c57600080fd5b5b60018054925082808201610c518382611b17565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610cd457fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610d1a929160200190611b49565b50606082015181600201908051610d35929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600080600080600080600080610e5889611824565b8054600182015460028301546003840154929b5067ffffffffffffffff9182169a509850808216975068010000000000000000820481169650608060020a82041694507801000000000000000000000000000000000000000000000000900460ff16925090505b50919395979092949650565b600180549081808201610ede8382611b17565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610f6057fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610fa6929160200190611b49565b50606082015181600201908051610fc1929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b60006110d78661186f565b905060025b815460ff1660028111156110ec57fe5b146110f657600080fd5b805433600160a060020a03908116610100909204161461111557600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051611148929160200190611b49565b506002810183805161115e929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016111cd8382611b17565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561124f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611295929160200190611b49565b506060820151816002019080516112b0929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b6000806113bb8361186f565b905060005b815460ff1660028111156113d057fe5b14156113df5760009150611467565b60025b815460ff1660028111156113f257fe5b146113f957fe5b6003810154608060020a900460ff16156114165760019150611467565b600381015468010000000000000000900467ffffffffffffffff1615156114405760009150611467565b60038101546114649068010000000000000000900467ffffffffffffffff166113af565b91505b50919050565b60006114788661186f565b905060015b815460ff16600281111561148d57fe5b1461149757600080fd5b805433600160a060020a0390811661010090920416146114b657600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516114e9929160200190611b49565b50600281018380516114ff929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b60006115668661186f565b905060005b815460ff16600281111561157b57fe5b1461158557600080fd5b805433600160a060020a0390811661010090920416146115a457600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516115d7929160200190611b49565b50600281018380516115ed929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600080611654611b05565b61165c611b05565b600080600080600061166d8a61186f565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b505050506003830154600484015492985067ffffffffffffffff8082169850680100000000000000008204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600254600160a060020a031681565b6000805467ffffffffffffffff83161061183d57600080fd5b6000805467ffffffffffffffff841690811061185557fe5b906000526020600020906004020160005b5090505b919050565b60015460009067ffffffffffffffff83161061188a57600080fd5b6001805467ffffffffffffffff84169081106118a257fe5b906000526020600020906005020160005b5090505b919050565b60008060025b835160028111156118cf57fe5b146118d657fe5b8260a0015167ffffffffffffffff1615156118f45760019150611467565b6119018360a0015161186f565b9050611464816101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b91505b50919050565b60206040519081016040526000815290565b815481835581811511611b4357600502816005028360005260206000209182019101611b439190611c47565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b610e4091905b80821115611bc457805474ffffffffffffffffffffffffffffffffffffffffff191681556000611c806001830182611cfa565b611c8e600283016000611cfa565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611c4d565b5090565b90565b610e4091905b80821115611bc45760008155600101611cdf565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611d205750611d3e565b601f016020900490600052602060002090810190611d3e9190611cd9565b5b505600a165627a7a72305820e32b25dc56f5daf634fa11fa564c5739622cf3b2cae701a742347e01170a4a600029" -exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"}] +exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001ccd833981016040528080519150600190506200003681806200006d565b50600162000046600082620000a1565b5060028054600160a060020a031916600160a060020a039290921691909117905562000239565b8154818355818115116200009c576005028160050283600052602060002091820191016200009c9190620000d0565b505050565b8154818355818115116200009c576004028160040283600052602060002091820191016200009c919062000144565b6200014191905b808211156200013d578054600160a860020a03191681556000620000ff6001830182620001af565b6200010f600283016000620001af565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000d7565b5090565b90565b6200014191905b808211156200013d57600080825560018201805467ffffffffffffffff191690556200017b6002830182620001fa565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014b565b50805460018160011615610100020316600290046000825580601f10620001d75750620001f7565b601f016020900490600052602060002090810190620001f791906200021c565b50565b508054600082556003016004900490600052602060002090810190620001f791905b6200014191905b808211156200013d576000815560010162000223565b611a8480620002496000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632101a6ad146101825780632a8ec8cc146101b65780633f657a46146101db57806352dc7dcc1461025b5780635503d9ba1461032557806372116e92146103385780637f61fa93146103f5578063cc19ecf7146104a2578063db7c231414610561578063eba8ba061461061e578063f6b24b1c14610776578063fbfa77cf14610833575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff60043516602435610862565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b8381101561014557808201518382015260200161012d565b50505050905090810190601f1680156101725780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018d57600080fd5b6101a267ffffffffffffffff60043516610988565b604051901515815260200160405180910390f35b34156101c157600080fd5b6101c9610a44565b60405190815260200160405180910390f35b34156101e657600080fd5b6101fb67ffffffffffffffff60043516610a4f565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561024157fe5b60ff16815260200197505050505050505060405180910390f35b341561026657600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610acf915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561033057600080fd5b6101c9610cc2565b341561034357600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff602082013581169650604082013516945060600135169150610ccc9050565b341561040057600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250611122915050565b34156104ad57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611314915050565b005b341561056c57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611400915050565b341561062957600080fd5b61063e67ffffffffffffffff600435166114ec565b6040518089600281111561064e57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156106d05780820151838201526020016106b8565b50505050905090810190601f1680156106fd5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b8381101561073357808201518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561078157600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506116b7915050565b341561083e57600080fd5b6108466117a3565b604051600160a060020a03909116815260200160405180910390f35b60008061086d6118ab565b600080610879876117b2565b9150816002016001870381548110151561088f57fe5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1694506108c4856117f8565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b5050505050925050509250925092565b600080610994836117f8565b90506000815460ff1660028111156109a857fe5b14156109b75760009150610a3e565b6002815460ff1660028111156109c957fe5b146109d057fe5b6003810154608060020a900460ff16156109ed5760019150610a3e565b600381015468010000000000000000900467ffffffffffffffff161515610a175760009150610a3e565b6003810154610a3b9068010000000000000000900467ffffffffffffffff16610988565b91505b50919050565b600054600019015b90565b600080600080600080600080610a64896117b2565b805460018201546002830154600390930154919c67ffffffffffffffff9182169c50929a50808216995068010000000000000000820481169850608060020a82041696507801000000000000000000000000000000000000000000000000900460ff16945092505050565b600180549081808201610ae283826118bd565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610b6257fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610ba89291602001906118ee565b50606082015181600201908051610bc39291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b60008067ffffffffffffffff851615610f2a57610ce8856117f8565b90506002815460ff166002811115610cfc57fe5b14610d0657600080fd5b805433600160a060020a039081166101009092041614610d2557600080fd5b6014610f20826101006040519081016040528154909190829060ff166002811115610d4c57fe5b6002811115610d5757fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ec55780601f10610e9a57610100808354040283529160200191610ec5565b820191906000526020600020905b815481529060010190602001808311610ea857829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152611840565b10610f2a57600080fd5b60018054925082808201610f3e83826118bd565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610fbf57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516110059291602001906118ee565b506060820151816002019080516110209291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b60018054908180820161113583826118bd565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156111b557fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516111fb9291602001906118ee565b506060820151816002019080516112169291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600061131f866117f8565b90506001815460ff16600281111561133357fe5b1461133d57600080fd5b805433600160a060020a03908116610100909204161461135c57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161138f9291602001906118ee565b50600281018380516113a59291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600061140b866117f8565b90506000815460ff16600281111561141f57fe5b1461142957600080fd5b805433600160a060020a03908116610100909204161461144857600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161147b9291602001906118ee565b50600281018380516114919291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b6000806114f76118ab565b6114ff6118ab565b60008060008060006115108a6117f8565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156115c65780601f1061159b576101008083540402835291602001916115c6565b820191906000526020600020905b8154815290600101906020018083116115a957829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116655780601f1061163a57610100808354040283529160200191611665565b820191906000526020600020905b81548152906001019060200180831161164857829003601f168201915b5050505060038301546004909301549a9c999b509799909867ffffffffffffffff8084169950680100000000000000008404169750608060020a90920460ff169550600160a060020a03169350915050565b60006116c2866117f8565b90506002815460ff1660028111156116d657fe5b146116e057600080fd5b805433600160a060020a0390811661010090920416146116ff57600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516117329291602001906118ee565b50600281018380516117489291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b6000805467ffffffffffffffff8316106117cb57600080fd5b6000805467ffffffffffffffff84169081106117e357fe5b90600052602060002090600402019050919050565b60015460009067ffffffffffffffff83161061181357600080fd5b6001805467ffffffffffffffff841690811061182b57fe5b90600052602060002090600502019050919050565b60008060028351600281111561185257fe5b1461185957fe5b8260a0015167ffffffffffffffff1615156118775760019150610a3e565b6118848360a001516117f8565b9050610a3b816101006040519081016040528154909190829060ff166002811115610d4c57fe5b60206040519081016040526000815290565b8154818355818115116118e9576005028160050283600052602060002091820191016118e9919061196c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061192f57805160ff191683800117855561195c565b8280016001018555821561195c579182015b8281111561195c578251825591602001919060010190611941565b506119689291506119f7565b5090565b610a4c91905b8082111561196857805474ffffffffffffffffffffffffffffffffffffffffff1916815560006119a56001830182611a11565b6119b3600283016000611a11565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611972565b610a4c91905b8082111561196857600081556001016119fd565b50805460018160011615610100020316600290046000825580601f10611a375750611a55565b601f016020900490600052602060002090810190611a5591906119f7565b505600a165627a7a72305820ac6ccf50f8fadec0b26bc1b9dd568b2f66e7e329f7ca0cb02e620b95252c47290029" +exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}] exports.VaultByteCode = "0x" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" -exports._sha256 = "0xc2acfd01675f8398f78e6d82566c8f3e1ccbf126b2b1eb4678be8ffc534f3d7e" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" +exports._sha256 = "0x2fc54776ce620e647df85aa7d5eb74388c0b7ff7a7df4fe2b001efa7a0129adc" diff --git a/build/LiquidPledgingBase_all.sol b/build/LiquidPledgingBase_all.sol index 916829d..d3abd2d 100644 --- a/build/LiquidPledgingBase_all.sol +++ b/build/LiquidPledgingBase_all.sol @@ -11,13 +11,13 @@ contract ILiquidPledgingPlugin { /// 1 -> Plugin for the first delegate transferring pledge to another party /// 2 -> Plugin for the second delegate transferring pledge to another party /// ... - /// 255 -> Plugin for the intendedCampaign transferring pledge to another party + /// 255 -> Plugin for the intendedProject transferring pledge to another party /// /// 256 -> Plugin for the owner receiving pledge to another party /// 257 -> Plugin for the first delegate receiving pledge to another party /// 258 -> Plugin for the second delegate receiving pledge to another party /// ... - /// 511 -> Plugin for the intendedCampaign receiving pledge to another party + /// 511 -> Plugin for the intendedProject receiving pledge to another party function beforeTransfer( uint64 pledgeManager, uint64 pledgeFrom, @@ -48,22 +48,22 @@ contract Vault { contract LiquidPledgingBase { // Limits inserted to prevent large loops that could prevent canceling uint constant MAX_DELEGATES = 20; - uint constant MAX_SUBCAMPAIGN_LEVEL = 20; - uint constant MAX_INTERCAMPAIGN_LEVEL = 20; + uint constant MAX_SUBPROJECT_LEVEL = 20; + uint constant MAX_INTERPROJECT_LEVEL = 20; - enum PledgeAdminType { Giver, Delegate, Campaign } + enum PledgeAdminType { Giver, Delegate, Project } enum PaymentState { Pledged, Paying, Paid } // TODO name change Pledged /// @dev This struct defines the details of each the PledgeAdmin, these /// PledgeAdmins can own pledges and act as delegates struct PledgeAdmin { // TODO name change PledgeAdmin - PledgeAdminType adminType; // Giver, Delegate or Campaign + PledgeAdminType adminType; // Giver, Delegate or Project address addr; // account or contract address for admin string name; string url; uint64 commitTime; // In seconds, used for Givers' & Delegates' vetos - uint64 parentCampaign; // Only for campaigns - bool canceled; //Always false except for canceled campaigns + uint64 parentProject; // Only for projects + bool canceled; //Always false except for canceled projects ILiquidPledgingPlugin plugin; // if the plugin is 0x0 then nothing happens if its a contract address than that smart contract is called via the milestone contract } @@ -71,8 +71,8 @@ contract LiquidPledgingBase { uint amount; uint64 owner; // PledgeAdmin uint64[] delegationChain; // list of index numbers - uint64 intendedCampaign; // TODO change the name only used for when delegates are precommiting to a campaign - uint64 commitTime; // When the intendedCampaign will become the owner + uint64 intendedProject; // TODO change the name only used for when delegates are precommiting to a project + uint64 commitTime; // When the intendedProject will become the owner uint64 oldPledge; // this points to the Pledge[] index that the Pledge was derived from PaymentState paymentState; } @@ -192,52 +192,52 @@ contract LiquidPledgingBase { event DelegateUpdated(uint64 indexed idDelegate); - /// @notice Creates a new Campaign - function addCampaign(string name, string url, address campaignAdmin, uint64 parentCampaign, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idCampaign) { - if (parentCampaign != 0) { - PledgeAdmin storage pa = findAdmin(parentCampaign); - require(pa.adminType == PledgeAdminType.Campaign); + /// @notice Creates a new Project + function addProject(string name, string url, address projectAdmin, uint64 parentProject, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idProject) { + if (parentProject != 0) { + PledgeAdmin storage pa = findAdmin(parentProject); + require(pa.adminType == PledgeAdminType.Project); require(pa.addr == msg.sender); - require(getCampaignLevel(pa) < MAX_SUBCAMPAIGN_LEVEL); + require(getProjectLevel(pa) < MAX_SUBPROJECT_LEVEL); } - idCampaign = uint64(admins.length); + idProject = uint64(admins.length); admins.push(PledgeAdmin( - PledgeAdminType.Campaign, - campaignAdmin, + PledgeAdminType.Project, + projectAdmin, name, url, commitTime, - parentCampaign, + parentProject, false, plugin)); - CampaignAdded(idCampaign); + ProjectAdded(idProject); } - event CampaignAdded(uint64 indexed idCampaign); + event ProjectAdded(uint64 indexed idProject); - ///@notice Changes the address, name or commitTime associated with a specific Campaign - function updateCampaign( - uint64 idCampaign, + ///@notice Changes the address, name or commitTime associated with a specific Project + function updateProject( + uint64 idProject, address newAddr, string newName, string newUrl, uint64 newCommitTime) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - require(campaign.adminType == PledgeAdminType.Campaign); - require(campaign.addr == msg.sender); - campaign.addr = newAddr; - campaign.name = newName; - campaign.url = newUrl; - campaign.commitTime = newCommitTime; - CampaignUpdated(idCampaign); + PledgeAdmin storage project = findAdmin(idProject); + require(project.adminType == PledgeAdminType.Project); + require(project.addr == msg.sender); + project.addr = newAddr; + project.name = newName; + project.url = newUrl; + project.commitTime = newCommitTime; + ProjectUpdated(idProject); } - event CampaignUpdated(uint64 indexed idAdmin); + event ProjectUpdated(uint64 indexed idAdmin); ////////// @@ -253,7 +253,7 @@ contract LiquidPledgingBase { uint amount, uint64 owner, uint64 nDelegates, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paymentState @@ -262,7 +262,7 @@ contract LiquidPledgingBase { amount = n.amount; owner = n.owner; nDelegates = uint64(n.delegationChain.length); - intendedCampaign = n.intendedCampaign; + intendedProject = n.intendedProject; commitTime = n.commitTime; oldPledge = n.oldPledge; paymentState = n.paymentState; @@ -291,7 +291,7 @@ contract LiquidPledgingBase { string name, string url, uint64 commitTime, - uint64 parentCampaign, + uint64 parentProject, bool canceled, address plugin) { @@ -301,7 +301,7 @@ contract LiquidPledgingBase { name = m.name; url = m.url; commitTime = m.commitTime; - parentCampaign = m.parentCampaign; + parentProject = m.parentProject; canceled = m.canceled; plugin = address(m.plugin); } @@ -317,18 +317,18 @@ contract LiquidPledgingBase { function findOrCreatePledge( uint64 owner, uint64[] delegationChain, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paid ) internal returns (uint64) { - bytes32 hPledge = sha3(owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid); + bytes32 hPledge = sha3(owner, delegationChain, intendedProject, commitTime, oldPledge, paid); uint64 idx = hPledge2idx[hPledge]; if (idx > 0) return idx; idx = uint64(pledges.length); hPledge2idx[hPledge] = idx; - pledges.push(Pledge(0, owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid)); + pledges.push(Pledge(0, owner, delegationChain, intendedProject, commitTime, oldPledge, paid)); return idx; } @@ -355,7 +355,7 @@ contract LiquidPledgingBase { } // helper function that returns the pledge level solely to check that transfers - // between Campaigns not violate MAX_INTERCAMPAIGN_LEVEL + // between Projects not violate MAX_INTERPROJECT_LEVEL function getPledgeLevel(Pledge n) internal returns(uint) { if (n.oldPledge == 0) return 0; //changed Pledge storage oldN = findPledge(n.oldPledge); @@ -374,25 +374,25 @@ contract LiquidPledgingBase { } } - // helper function that returns the campaign level solely to check that there - // are not too many Campaigns that violate MAX_SUBCAMPAIGNS_LEVEL - function getCampaignLevel(PledgeAdmin m) internal returns(uint) { - assert(m.adminType == PledgeAdminType.Campaign); - if (m.parentCampaign == 0) return(1); - PledgeAdmin storage parentNM = findAdmin(m.parentCampaign); - return getCampaignLevel(parentNM); + // helper function that returns the project level solely to check that there + // are not too many Projects that violate MAX_SUBCAMPAIGNS_LEVEL + function getProjectLevel(PledgeAdmin m) internal returns(uint) { + assert(m.adminType == PledgeAdminType.Project); + if (m.parentProject == 0) return(1); + PledgeAdmin storage parentNM = findAdmin(m.parentProject); + return getProjectLevel(parentNM); } - function isCampaignCanceled(uint64 campaignId) constant returns (bool) { - PledgeAdmin storage m = findAdmin(campaignId); + function isProjectCanceled(uint64 projectId) constant returns (bool) { + PledgeAdmin storage m = findAdmin(projectId); if (m.adminType == PledgeAdminType.Giver) return false; - assert(m.adminType == PledgeAdminType.Campaign); + assert(m.adminType == PledgeAdminType.Project); if (m.canceled) return true; - if (m.parentCampaign == 0) return false; - return isCampaignCanceled(m.parentCampaign); + if (m.parentProject == 0) return false; + return isProjectCanceled(m.parentProject); } - // @notice A helper function for canceling campaigns + // @notice A helper function for canceling projects // @param idPledge the pledge that may or may not be canceled function getOldestPledgeNotCanceled(uint64 idPledge) internal constant returns(uint64) { //todo rename if (idPledge == 0) return 0; @@ -400,9 +400,9 @@ contract LiquidPledgingBase { PledgeAdmin storage admin = findAdmin(n.owner); if (admin.adminType == PledgeAdminType.Giver) return idPledge; - assert(admin.adminType == PledgeAdminType.Campaign); + assert(admin.adminType == PledgeAdminType.Project); - if (!isCampaignCanceled(n.owner)) return idPledge; + if (!isProjectCanceled(n.owner)) return idPledge; return getOldestPledgeNotCanceled(n.oldPledge); } diff --git a/build/LiquidPledgingMock.sol.js b/build/LiquidPledgingMock.sol.js index 255638b..a554790 100644 --- a/build/LiquidPledgingMock.sol.js +++ b/build/LiquidPledgingMock.sol.js @@ -1,14 +1,14 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"type":"function"}] +exports.ILiquidPledgingPluginAbi = [{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"afterTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgeManager","type":"uint64"},{"name":"pledgeFrom","type":"uint64"},{"name":"pledgeTo","type":"uint64"},{"name":"context","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"beforeTransfer","outputs":[{"name":"maxAllowed","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}] exports.ILiquidPledgingPluginByteCode = "0x" -exports.LiquidPledgingAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"}],"name":"cancelCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CancelCampaign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingByteCode = "0x606060405234156200001057600080fd5b60405160208062004f68833981016040528080519150505b805b60016200003881806200006e565b50600162000048600082620000a3565b5060028054600160a060020a031916600160a060020a0383161790555b505b5062000259565b8154818355818115116200009d576005028160050283600052602060002091820191016200009d9190620000d8565b5b505050565b8154818355818115116200009d576004028160040283600052602060002091820191016200009d91906200014c565b5b505050565b6200014991905b8082111562000145578054600160a860020a03191681556000620001076001830182620001be565b62000117600283016000620001be565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000df565b5090565b90565b6200014991905b808211156200014557600080825560018201805467ffffffffffffffff191690556200018360028301826200020a565b506003810180547fffffffffffffff0000000000000000000000000000000000000000000000000016905560040162000153565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001e6575062000206565b601f01602090049060005260206000209081019062000206919062000235565b5b50565b50805460008255600301600490049060005260206000209081019062000206919062000235565b5b50565b6200014991905b808211156200014557600081556001016200023c565b5090565b90565b614cff80620002696000396000f300606060405236156101385763ffffffff60e060020a60003504166314e7b1dc811461013d5780632287b3aa146101f75780632a8ec8cc146102cf5780632ee88808146102f45780633f657a4614610318578063433879831461039657806347c5ef43146103ba57806350f8a803146103eb57806352dc7dcc146104265780635503d9ba146104ee57806357adafb6146105135780635c1de885146105645780637f61fa93146106215780638fe1f2ce146106e95780639398f5a21461071c578063a7e474d51461076d578063af9f45631461078e578063bce0906d146107b2578063bde60ac91461081d578063cc19ecf714610839578063d639cd73146108f6578063db7c231414610960578063e9c211e214610a1d578063eba8ba0614610a41578063ef3766e414610b99578063fbfa77cf14610bea575b600080fd5b341561014857600080fd5b61015f6001604060020a0360043516602435610c19565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101ba5780820151818401525b6020016101a1565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020257600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150610d409050565b6040516001604060020a03909116815260200160405180910390f35b34156102da57600080fd5b6102e261118f565b60405190815260200160405180910390f35b34156102ff57600080fd5b6103166001604060020a036004351660243561119a565b005b341561032357600080fd5b6103376001604060020a03600435166112e0565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561037c57fe5b60ff16815260200197505050505050505060405180910390f35b34156103a157600080fd5b6103166001604060020a036004351660243561134d565b005b34156103c557600080fd5b6103166001604060020a0360043581169060243581169060443590606435166116f2565b005b34156103f657600080fd5b6102b36001604060020a0360043516611d93565b6040516001604060020a03909116815260200160405180910390f35b341561043157600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611f5f915050565b6040516001604060020a03909116815260200160405180910390f35b34156104f957600080fd5b6102e2612150565b60405190815260200160405180910390f35b341561051e57600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061215b95505050505050565b005b341561056f57600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a031692506121ce915050565b005b341561062c57600080fd5b6102b360046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a031692506122bb915050565b6040516001604060020a03909116815260200160405180910390f35b34156106f457600080fd5b6107086001604060020a03600435166124ab565b604051901515815260200160405180910390f35b341561072757600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061255d95505050505050565b005b341561077857600080fd5b6103166001604060020a03600435166125d0565b005b341561079957600080fd5b6103166001604060020a036004351660243561282d565b005b34156107bd57600080fd5b6102b36004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650612a7b95505050505050565b6040516001604060020a03909116815260200160405180910390f35b6103166001604060020a0360043581169060243516612ac8565b005b341561084457600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612e03915050565b005b341561090157600080fd5b610316600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a03169250612ef0915050565b005b341561096b57600080fd5b610316600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612f67915050565b005b3415610a2857600080fd5b6103166001604060020a0360043516602435613054565b005b3415610a4c57600080fd5b610a606001604060020a036004351661317e565b60405180896002811115610a7057fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b83811015610af25780820151818401525b602001610ad9565b50505050905090810190601f168015610b1f5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610b565780820151818401525b602001610b3d565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610ba457600080fd5b610316600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061334495505050505050565b005b3415610bf557600080fd5b610bfd6133b7565b604051600160a060020a03909116815260200160405180910390f35b600080610c246148de565b600080610c30876133c6565b91508160020160018703815481101515610c4657fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a03169450610c7b8561340f565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b505050505092505b50509250925092565b6000806001604060020a03851615610f9857610d5b8561340f565b905060025b815460ff166002811115610d7057fe5b14610d7a57600080fd5b805433600160a060020a039081166101009092041614610d9957600080fd5b6014610f8e826101006040519081016040528154909190829060ff166002811115610dc057fe5b6002811115610dcb57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261345a565b10610f9857600080fd5b5b60018054925082808201610fad83826148f0565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff1916600183600281111561102f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611075929160200190614922565b50606082015181600201908051611090929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600254600090819033600160a060020a039081169116146111ba57600080fd5b6111c3846133c6565b915060015b600383015460c060020a900460ff1660028111156111e257fe5b146111ec57600080fd5b836001604060020a03166111ff8561369c565b6001604060020a03161461121257600080fd5b60018201546002830180546112cb926001604060020a031691906020808202016040519081016040528092919081815260200182805480156112a557602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116112625790505b505050506003860154600091508190608060020a90046001604060020a03166002613766565b90506112d8848285613a58565b5b5b50505050565b6000806000806000806000806112f5896133c6565b8054600182015460028301546003840154929b506001604060020a039182169a5098508082169750604060020a820481169650608060020a820416945060c060020a900460ff16925090505b50919395979092949650565b600080600061135b85611d93565b9450611366856133c6565b925060005b600384015460c060020a900460ff16600281111561138557fe5b1461138f57600080fd5b60018301546113a6906001604060020a031661340f565b915061159b826101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b6001830154600284018054611654926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561162e57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116115eb5790505b505050506003870154600091508190608060020a90046001604060020a03166001613766565b9050611661858286613a58565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b15156116d657600080fd5b6102c65a03f115156116e757600080fd5b5050505b5050505050565b600080600080600061170388611d93565b975061170e886133c6565b94506117198661340f565b93506117248961340f565b9250611919836101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60005b600386015460c060020a900460ff16600281111561193657fe5b1461194057600080fd5b60018501546001604060020a038a8116911614156119dd5760005b845460ff16600281111561196b57fe5b14156119815761197c888888613b6a565b6119d5565b60025b845460ff16600281111561199457fe5b14156119aa5761197c888888613bb0565b6119d5565b60015b845460ff1660028111156119bd57fe5b14156119d35761197c888888613e0f565b6119d5565bfe5b5b5b5b611d87565b611b0e8560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611aa757602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611a645790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611afa57fe5b6002811115611b0557fe5b9052508a613f43565b6001604060020a03908116925082146119d35760005b845460ff166002811115611b3457fe5b1415611b6a5760018501546001604060020a03878116911614611b5357fe5b6119d588888760020180549050613faa565b611d87565b60015b845460ff166002811115611b7d57fe5b1415611d4457611cb48560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c4d57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611c0a5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611ca057fe5b6002811115611cab57fe5b90525087613f43565b6001604060020a039081169150811415611cef57611cdf888860018589600201805490500303613faa565b61197c888888613e0f565b6119d5565b81811115611d1e57611cdf888860018589600201805490500303613faa565b61197c888888613e0f565b6119d5565b8181116119d5576119d5888860018489600201805490500303613faa565b5b5b5b611d87565b60025b845460ff166002811115611d5757fe5b14156119d357611d74888860018589600201805490500303613faa565b6119d58888886140b0565b611d87565b5bfe5b5b505050505050505050565b600080600080611da2856133c6565b925060005b600384015460c060020a900460ff166002811115611dc157fe5b14611dce57849350611f57565b600383015460006001604060020a03909116118015611e0757506003830154604060020a90046001604060020a0316611e05614412565b115b15611f25576001830154600284018054611ec4926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611e9f57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611e5c5790505b505050506003870154600091508190608060020a90046001604060020a031681613766565b6003840154909250611f05906001604060020a03166000604051805910611ee85750595b908082528060200260200182016040525b50600080866000613766565b9050611f1685828560000154613a58565b809450611f22856133c6565b92505b611f2e8561369c565b90506001604060020a0380821690861614611f5257611f5285828560000154613a58565b5b8093505b505050919050565b600180549081808201611f7283826148f0565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115611ff357fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612039929160200190614922565b50606082015181600201908051612054929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b600080805b83518310156112d8576001604060020a0384848151811061217d57fe5b90602001906020020151169150604060020a84848151811061219b57fe5b906020019060200201518115156121ae57fe5b0490506121bb828261134d565b5b600190920191612160565b5b50505050565b60006121d98661340f565b905060025b815460ff1660028111156121ee57fe5b146121f857600080fd5b805433600160a060020a03908116610100909204161461221757600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161224a929160200190614922565b5060028101838051612260929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016122ce83826148f0565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561234f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612395929160200190614922565b506060820151816002019080516123b0929160200190614922565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b6000806124b78361340f565b905060005b815460ff1660028111156124cc57fe5b14156124db5760009150612557565b60025b815460ff1660028111156124ee57fe5b146124f557fe5b6003810154608060020a900460ff16156125125760019150612557565b6003810154604060020a90046001604060020a031615156125365760009150612557565b600381015461255490604060020a90046001604060020a03166124ab565b91505b50919050565b600080805b83518310156112d8576001604060020a0384848151811061257f57fe5b90602001906020020151169150604060020a84848151811061259d57fe5b906020019060200201518115156125b057fe5b0490506125bd828261119a565b5b600190920191612562565b5b50505050565b60006125db8261340f565b90506127d0816101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f82a76f4c7fad127fa2b94c70b686a7111dda14d8de32572bc17d3ac22acc726f60405160405180910390a25b5050565b60008061283984611d93565b9350612844846133c6565b600181015490925061285e906001604060020a031661340f565b9050612a53816101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60038201546112d8908590608060020a90046001604060020a031685613a58565b5b50505050565b600080805b8351821015612ac0576001604060020a03848381518110612a9d57fe5b90602001906020020151169050612ab381611d93565b505b600190910190612a80565b5b5050919050565b60008080806001604060020a0386161515612b0e57612b0b6020604051908101604052806000815250602060405190810160405260008082526203f480906122bb565b95505b612b178661340f565b9350612d0c846101006040519081016040528154909190829060ff1660028111156113cd57fe5b60028111156113d857fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114a45780601f10611479576101008083540402835291602001916114a4565b820191906000526020600020905b81548152906001019060200180831161148757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115465780601f1061151b57610100808354040283529160200191611546565b820191906000526020600020905b81548152906001019060200180831161152957829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b22565b60005b845460ff166002811115612d1f57fe5b14612d2957600080fd5b34925060008311612d3957600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515612d6c57600080fd5b612d9c866000604051805910612d7f5750595b908082528060200260200182016040525b50600080600080613766565b9150612da7826133c6565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a36122b3868385886116f2565b5b505050505050565b6000612e0e8661340f565b905060015b815460ff166002811115612e2357fe5b14612e2d57600080fd5b805433600160a060020a039081166101009092041614612e4c57600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612e7f929160200190614922565b5060028101838051612e95929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b600080805b84518310156122b3576001604060020a03858481518110612f1257fe5b90602001906020020151169150604060020a858481518110612f3057fe5b90602001906020020151811515612f4357fe5b049050612f52868383876116f2565b5b600190920191612ef5565b5b505050505050565b6000612f728661340f565b905060005b815460ff166002811115612f8757fe5b14612f9157600080fd5b805433600160a060020a039081166101009092041614612fb057600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612fe3929160200190614922565b5060028101838051612ff9929160200190614922565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600254600090819033600160a060020a0390811691161461307457600080fd5b61307d846133c6565b915060015b600383015460c060020a900460ff16600281111561309c57fe5b146130a657600080fd5b600182015460028301805461315e926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561313957602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116130f65790505b505050506003860154600091508190608060020a90046001604060020a031681613766565b90506112cb81611d93565b90506112d8848285613a58565b5b5b50505050565b6000806131896148de565b6131916148de565b60008060008060006131a28a61340f565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156132585780601f1061322d57610100808354040283529160200191613258565b820191906000526020600020905b81548152906001019060200180831161323b57829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132f75780601f106132cc576101008083540402835291602001916132f7565b820191906000526020600020905b8154815290600101906020018083116132da57829003601f168201915b50505050600383015460048401549298506001604060020a038082169850604060020a8204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600080805b83518310156112d8576001604060020a0384848151811061336657fe5b90602001906020020151169150604060020a84848151811061338457fe5b9060200190602002015181151561339757fe5b0490506133a48282613054565b5b600190920191613349565b5b50505050565b600254600160a060020a031681565b600080546001604060020a038316106133de57600080fd5b600080546001604060020a0384169081106133f557fe5b906000526020600020906004020160005b5090505b919050565b6001546000906001604060020a0383161061342957600080fd5b600180546001604060020a03841690811061344057fe5b906000526020600020906005020160005b5090505b919050565b60008060025b8351600281111561346d57fe5b1461347457fe5b8260a001516001604060020a031615156134915760019150612557565b61349e8360a0015161340f565b9050612554816101006040519081016040528154909190829060ff166002811115610dc057fe5b6002811115610dcb57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e975780601f10610e6c57610100808354040283529160200191610e97565b820191906000526020600020905b815481529060010190602001808311610e7a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261345a565b91505b50919050565b600080806001604060020a03841615156136b95760009250612ac0565b6136c2846133c6565b60018101549092506136dc906001604060020a031661340f565b905060005b815460ff1660028111156136f157fe5b14156136ff57839250612ac0565b60025b815460ff16600281111561371257fe5b1461371957fe5b6001820154613730906001604060020a03166124ab565b151561373e57839250612ac0565b600382015461375c90608060020a90046001604060020a031661369c565b92505b5050919050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b838110156137b45780820151818401525b60200161379b565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a02815260080182600281111561382157fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a03909116915081111561388a57809250613a4c565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a0383161790558154909190600181016138c88382614a20565b916000526020600020906004020160005b60e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a0316815260200188600281111561393a57fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a0392909216919091179055604082015181600201908051613985929160200190614a52565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115613a4057fe5b02179055505050508092505b50509695505050505050565b6000806000613a6a6001878787614417565b9250846001604060020a0316866001604060020a03161415613a8b576122b3565b821515613a97576122b3565b613aa0866133c6565b9150613aab856133c6565b825490915083901015613abd57600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a3613b186000878786614417565b505b505050505050565b8060200151600160a060020a031633600160a060020a03161480613b5b57508060e00151600160a060020a031633600160a060020a0316145b1515613b6657600080fd5b5b50565b60006112cb826000604051805910612d7f5750595b908082528060200260200182016040525b50600080600080613766565b90506112d8848285613a58565b5b50505050565b6000806000613bbe866133c6565b92506014613cf28460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b10613cfc57600080fd5b613d05846124ab565b15613d0f57600080fd5b6001830154600284018054613dc7926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611e9f57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611e5c5790505b505050506003870154600091508190608060020a90046001604060020a031681613766565b9150613df9846000604051805910611ee85750595b908082528060200260200182016040525b50600080866000613766565b90506122b3868287613a58565b5b505050505050565b6000613e196148de565b600080613e25876133c6565b600281015490945060149010613e3a57600080fd5b6002840154600101604051805910613e4f5750595b908082528060200260200182016040525b509250600091505b6002840154821015613edd5760028401805483908110613e8457fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a0316838381518110613eba57fe5b6001604060020a039092166020928302909101909101525b600190910190613e68565b60028401548590849081518110613ef057fe5b6001604060020a039283166020918202909201015260018501546003860154613f2c929182169186916000918291608060020a90041681613766565b9050613b18878288613a58565b5b50505050505050565b6000805b836040015151811015613f9857826001604060020a031684604001518281518110613f6e57fe5b906020019060200201516001604060020a03161415613f8f57809150613fa3565b5b600101613f47565b6001604060020a0391505b5092915050565b6000613fb46148de565b600080613fc0876133c6565b6002810154909450859003604051805910613fd85750595b908082528060200260200182016040525b509250600091505b6002840154859003821015614069576002840180548390811061401057fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a031683838151811061404657fe5b6001604060020a039092166020928302909101909101525b600190910190613ff1565b60018401546003850154613f2c916001604060020a039081169186916000918291608060020a9091041681613766565b9050613b18878288613a58565b5b50505050505050565b6000806140bc856133c6565b915060146141f08360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b106141fa57600080fd5b614203836124ab565b1561420d57600080fd5b60018201546002830180546143fd926001604060020a031691906020808202016040519081016040528092919081815260200182805480156142a057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161425d5790505b5050505050856143d68660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561437057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161432d5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156143c357fe5b60028111156143ce57fe5b9052506145aa565b6143de614412565b6003880154910190608060020a90046001604060020a03166000613766565b90506116eb858286613a58565b5b5050505050565b425b90565b80614425858580868561463d565b9050614434858486868561463d565b90505b949350505050565b6000808260a001516001604060020a0316151561445f5760009150612557565b61446c8360a001516133c6565b905061459e8160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613c8c57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613c495790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613cdf57fe5b6002811115613cea57fe5b90525061443f565b60010191505b50919050565b60008060006145bc846020015161340f565b60038101546001604060020a031693509150600090505b836040015151811015612ac057614602846040015182815181106145f357fe5b9060200190602002015161340f565b60038101549092506001604060020a03168390111561462c5760038201546001604060020a031692505b5b6001016145d3565b5b5050919050565b600080600080866001604060020a0316886001604060020a03161461466457610100614667565b60005b61ffff169250849350614679886133c6565b6001810154909250614699908a906001604060020a03168989878961475e565b9350600090505b60028201546001604060020a03821610156147165761470b8983600201836001604060020a03168154811015156146d357fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a031689898588016001018961475e565b93505b6001016146a0565b600382015460006001604060020a03909116111561475157600382015461474e908a906001604060020a0316898960ff88018961475e565b93505b5b50505095945050505050565b8060008061476b8861340f565b6004810154909150600160a060020a03161580159061478a5750600083115b15613a4c578815614845576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b151561481457600080fd5b6102c65a03f1151561482557600080fd5b50505060405180519250508282111561483d57600080fd5b819250613a4c565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b15156148bb57600080fd5b6102c65a03f115156148cc57600080fd5b5050505b5b5b50509695505050505050565b60206040519081016040526000815290565b81548183558181151161491c5760050281600502836000526020600020918201910161491c9190614b1c565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061496357805160ff1916838001178555614990565b82800160010185558215614990579182015b82811115614990578251825591602001919060010190614975565b5b5061499d929150614bae565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061496357805160ff1916838001178555614990565b82800160010185558215614990579182015b82811115614990578251825591602001919060010190614975565b5b5061499d929150614bae565b5090565b81548183558181151161491c5760040281600402836000526020600020918201910161491c9190614bcf565b5b505050565b82805482825590600052602060002090600301600490048101928215614afa5791602002820160005b83821115614ac557835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302614a7b565b8015614af85782816101000a8154906001604060020a030219169055600801602081600701049283019260010302614ac5565b505b5061499d929150614c36565b5090565b60206040519081016040526000815290565b61119791905b8082111561499d57805474ffffffffffffffffffffffffffffffffffffffffff191681556000614b556001830182614c62565b614b63600283016000614c62565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501614b22565b5090565b90565b61119791905b8082111561499d5760008155600101614bb4565b5090565b90565b61119791905b8082111561499d57600080825560018201805467ffffffffffffffff19169055614c026002830182614caa565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401614bd5565b5090565b90565b61119791905b8082111561499d57805467ffffffffffffffff19168155600101614c3c565b5090565b90565b50805460018160011615610100020316600290046000825580601f10614c885750613b66565b601f016020900490600052602060002090810190613b669190614bae565b5b50565b508054600082556003016004900490600052602060002090810190613b669190614bae565b5b505600a165627a7a723058207b19c1eab22ca0c7d4295ab02df740b3374a8c7709cb77b45486fed3d2aef9480029" -exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001fd3833981016040528080519150505b60016200003681806200006a565b506001620000466000826200009f565b5060028054600160a060020a031916600160a060020a0383161790555b5062000255565b8154818355818115116200009957600502816005028360005260206000209182019101620000999190620000d4565b5b505050565b815481835581811511620000995760040281600402836000526020600020918201910162000099919062000148565b5b505050565b6200014591905b8082111562000141578054600160a860020a03191681556000620001036001830182620001ba565b62000113600283016000620001ba565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000db565b5090565b90565b6200014591905b808211156200014157600080825560018201805467ffffffffffffffff191690556200017f600283018262000206565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001e2575062000202565b601f01602090049060005260206000209081019062000202919062000231565b5b50565b50805460008255600301600490049060005260206000209081019062000202919062000231565b5b50565b6200014591905b8082111562000141576000815560010162000238565b5090565b90565b611d6e80620002656000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632287b3aa146101835780632a8ec8cc1461025d5780633f657a461461028257806352dc7dcc146103025780635503d9ba146103cc5780635c1de885146103f15780637f61fa93146104b05780638fe1f2ce1461057a578063cc19ecf7146105ae578063db7c23141461066d578063eba8ba061461072c578063fbfa77cf14610886575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff600435166024356108b5565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101465780820151818401525b60200161012d565b50505050905090810190601f1680156101735780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018e57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff6020820135811696506040820135169450606001351691506109dd9050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561026857600080fd5b610270610e38565b60405190815260200160405180910390f35b341561028d57600080fd5b6102a267ffffffffffffffff60043516610e43565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102e857fe5b60ff16815260200197505050505050505060405180910390f35b341561030d57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610ecb915050565b60405167ffffffffffffffff909116815260200160405180910390f35b34156103d757600080fd5b6102706110c1565b60405190815260200160405180910390f35b34156103fc57600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506110cc915050565b005b34156104bb57600080fd5b61024060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a031692506111ba915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561058557600080fd5b61059a67ffffffffffffffff600435166113af565b604051901515815260200160405180910390f35b34156105b957600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061146d915050565b005b341561067857600080fd5b6104ae6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff16925061155b915050565b005b341561073757600080fd5b61074c67ffffffffffffffff60043516611649565b6040518089600281111561075c57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156107df5780820151818401525b6020016107c6565b50505050905090810190601f16801561080c5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156108435780820151818401525b60200161082a565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561089157600080fd5b610899611815565b604051600160a060020a03909116815260200160405180910390f35b6000806108c0611b05565b6000806108cc87611824565b915081600201600187038154811015156108e257fe5b90600052602060002090600491828204019190066008025b9054906101000a900467ffffffffffffffff1694506109188561186f565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b505050505092505b50509250925092565b60008067ffffffffffffffff851615610c3c576109f98561186f565b905060025b815460ff166002811115610a0e57fe5b14610a1857600080fd5b805433600160a060020a039081166101009092041614610a3757600080fd5b6014610c32826101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b10610c3c57600080fd5b5b60018054925082808201610c518382611b17565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610cd457fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610d1a929160200190611b49565b50606082015181600201908051610d35929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600080600080600080600080610e5889611824565b8054600182015460028301546003840154929b5067ffffffffffffffff9182169a509850808216975068010000000000000000820481169650608060020a82041694507801000000000000000000000000000000000000000000000000900460ff16925090505b50919395979092949650565b600180549081808201610ede8382611b17565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610f6057fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610fa6929160200190611b49565b50606082015181600201908051610fc1929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b60006110d78661186f565b905060025b815460ff1660028111156110ec57fe5b146110f657600080fd5b805433600160a060020a03908116610100909204161461111557600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051611148929160200190611b49565b506002810183805161115e929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016111cd8382611b17565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561124f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611295929160200190611b49565b506060820151816002019080516112b0929160200190611b49565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b6000806113bb8361186f565b905060005b815460ff1660028111156113d057fe5b14156113df5760009150611467565b60025b815460ff1660028111156113f257fe5b146113f957fe5b6003810154608060020a900460ff16156114165760019150611467565b600381015468010000000000000000900467ffffffffffffffff1615156114405760009150611467565b60038101546114649068010000000000000000900467ffffffffffffffff166113af565b91505b50919050565b60006114788661186f565b905060015b815460ff16600281111561148d57fe5b1461149757600080fd5b805433600160a060020a0390811661010090920416146114b657600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516114e9929160200190611b49565b50600281018380516114ff929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b60006115668661186f565b905060005b815460ff16600281111561157b57fe5b1461158557600080fd5b805433600160a060020a0390811661010090920416146115a457600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516115d7929160200190611b49565b50600281018380516115ed929160200190611b49565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600080611654611b05565b61165c611b05565b600080600080600061166d8a61186f565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b505050506003830154600484015492985067ffffffffffffffff8082169850680100000000000000008204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600254600160a060020a031681565b6000805467ffffffffffffffff83161061183d57600080fd5b6000805467ffffffffffffffff841690811061185557fe5b906000526020600020906004020160005b5090505b919050565b60015460009067ffffffffffffffff83161061188a57600080fd5b6001805467ffffffffffffffff84169081106118a257fe5b906000526020600020906005020160005b5090505b919050565b60008060025b835160028111156118cf57fe5b146118d657fe5b8260a0015167ffffffffffffffff1615156118f45760019150611467565b6119018360a0015161186f565b9050611464816101006040519081016040528154909190829060ff166002811115610a5e57fe5b6002811115610a6957fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b355780601f10610b0a57610100808354040283529160200191610b35565b820191906000526020600020905b815481529060010190602001808311610b1857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526118bc565b91505b50919050565b60206040519081016040526000815290565b815481835581811511611b4357600502816005028360005260206000209182019101611b439190611c47565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b8a57805160ff1916838001178555611bb7565b82800160010185558215611bb7579182015b82811115611bb7578251825591602001919060010190611b9c565b5b50611bc4929150611cd9565b5090565b610e4091905b80821115611bc457805474ffffffffffffffffffffffffffffffffffffffffff191681556000611c806001830182611cfa565b611c8e600283016000611cfa565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611c4d565b5090565b90565b610e4091905b80821115611bc45760008155600101611cdf565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611d205750611d3e565b601f016020900490600052602060002090810190611d3e9190611cd9565b5b505600a165627a7a72305820cd162d95c109adc9f9a18d4902a98db8ec78a5719cc5cbb235de9d2b9fa516b30029" -exports.LiquidPledgingMockAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"campaignAdmin","type":"address"},{"name":"parentCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addCampaign","outputs":[{"name":"idCampaign","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedCampaign","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"campaignId","type":"uint64"}],"name":"isCampaignCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"mock_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idCampaign","type":"uint64"}],"name":"cancelCampaign","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_t","type":"uint256"}],"name":"setMockedTime","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentCampaign","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CancelCampaign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idCampaign","type":"uint64"}],"name":"CampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"CampaignUpdated","type":"event"}] -exports.LiquidPledgingMockByteCode = "0x606060405234156200001057600080fd5b60405160208062004fd4833981016040528080519150505b805b805b60016200003a818062000076565b5060016200004a600082620000ab565b5060028054600160a060020a031916600160a060020a0383161790555b505b50426004555b5062000261565b815481835581811511620000a557600502816005028360005260206000209182019101620000a59190620000e0565b5b505050565b815481835581811511620000a557600402816004028360005260206000209182019101620000a5919062000154565b5b505050565b6200015191905b808211156200014d578054600160a860020a031916815560006200010f6001830182620001c6565b6200011f600283016000620001c6565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000e7565b5090565b90565b6200015191905b808211156200014d57600080825560018201805467ffffffffffffffff191690556200018b600283018262000212565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200015b565b5090565b90565b50805460018160011615610100020316600290046000825580601f10620001ee57506200020e565b601f0160209004906000526020600020908101906200020e91906200023d565b5b50565b5080546000825560030160049004906000526020600020908101906200020e91906200023d565b5b50565b6200015191905b808211156200014d576000815560010162000244565b5090565b90565b614d6380620002716000396000f3006060604052361561014e5763ffffffff60e060020a60003504166314e7b1dc81146101535780632287b3aa1461020d5780632a8ec8cc146102e55780632ee888081461030a5780633f657a461461032e57806343387983146103ac57806347c5ef43146103d057806350f8a8031461040157806352dc7dcc1461043c5780635503d9ba1461050457806357adafb6146105295780635c1de8851461057a5780637f61fa93146106375780638fe1f2ce146106ff5780639398f5a2146107325780639da47a6b14610783578063a7e474d5146107a8578063ab8be231146107c9578063af9f4563146107e1578063bce0906d14610805578063bde60ac914610870578063cc19ecf71461088c578063d639cd7314610949578063db7c2314146109b3578063e9c211e214610a70578063eba8ba0614610a94578063ef3766e414610bec578063fbfa77cf14610c3d575b600080fd5b341561015e57600080fd5b6101756001604060020a0360043516602435610c6c565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101d05780820151818401525b6020016101b7565b50505050905090810190601f1680156101fd5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561021857600080fd5b6102c960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150610d939050565b6040516001604060020a03909116815260200160405180910390f35b34156102f057600080fd5b6102f86111e2565b60405190815260200160405180910390f35b341561031557600080fd5b61032c6001604060020a03600435166024356111ed565b005b341561033957600080fd5b61034d6001604060020a0360043516611333565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561039257fe5b60ff16815260200197505050505050505060405180910390f35b34156103b757600080fd5b61032c6001604060020a03600435166024356113a0565b005b34156103db57600080fd5b61032c6001604060020a036004358116906024358116906044359060643516611745565b005b341561040c57600080fd5b6102c96001604060020a0360043516611de6565b6040516001604060020a03909116815260200160405180910390f35b341561044757600080fd5b6102c960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611fb2915050565b6040516001604060020a03909116815260200160405180910390f35b341561050f57600080fd5b6102f86121a3565b60405190815260200160405180910390f35b341561053457600080fd5b61032c60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506121ae95505050505050565b005b341561058557600080fd5b61032c600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612221915050565b005b341561064257600080fd5b6102c960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a0316925061230e915050565b6040516001604060020a03909116815260200160405180910390f35b341561070a57600080fd5b61071e6001604060020a03600435166124fe565b604051901515815260200160405180910390f35b341561073d57600080fd5b61032c60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506125b095505050505050565b005b341561078e57600080fd5b6102f8612623565b60405190815260200160405180910390f35b34156107b357600080fd5b61032c6001604060020a0360043516612629565b005b34156107d457600080fd5b61032c600435612886565b005b34156107ec57600080fd5b61032c6001604060020a036004351660243561288f565b005b341561081057600080fd5b6102c96004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650612add95505050505050565b6040516001604060020a03909116815260200160405180910390f35b61032c6001604060020a0360043581169060243516612b2a565b005b341561089757600080fd5b61032c600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612e65915050565b005b341561095457600080fd5b61032c600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a03169250612f52915050565b005b34156109be57600080fd5b61032c600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612fc9915050565b005b3415610a7b57600080fd5b61032c6001604060020a03600435166024356130b6565b005b3415610a9f57600080fd5b610ab36001604060020a03600435166131e0565b60405180896002811115610ac357fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b83811015610b455780820151818401525b602001610b2c565b50505050905090810190601f168015610b725780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610ba95780820151818401525b602001610b90565b50505050905090810190601f168015610bd65780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610bf757600080fd5b61032c60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506133a695505050505050565b005b3415610c4857600080fd5b610c50613419565b604051600160a060020a03909116815260200160405180910390f35b600080610c77614942565b600080610c8387613428565b91508160020160018703815481101515610c9957fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a03169450610cce85613471565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d825780601f10610d5757610100808354040283529160200191610d82565b820191906000526020600020905b815481529060010190602001808311610d6557829003601f168201915b505050505092505b50509250925092565b6000806001604060020a03851615610feb57610dae85613471565b905060025b815460ff166002811115610dc357fe5b14610dcd57600080fd5b805433600160a060020a039081166101009092041614610dec57600080fd5b6014610fe1826101006040519081016040528154909190829060ff166002811115610e1357fe5b6002811115610e1e57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eea5780601f10610ebf57610100808354040283529160200191610eea565b820191906000526020600020905b815481529060010190602001808311610ecd57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8c5780601f10610f6157610100808354040283529160200191610f8c565b820191906000526020600020905b815481529060010190602001808311610f6f57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526134bc565b10610feb57600080fd5b5b600180549250828082016110008382614954565b916000526020600020906005020160005b6101006040519081016040528060025b8152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff1916600183600281111561108257fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516110c8929160200190614986565b506060820151816002019080516110e3929160200190614986565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167f7ee8e9aa2daef505e5dcde0891e16be5f9808204d3b7ab755ed49060b020efa760405160405180910390a25b509695505050505050565b600054600019015b90565b600254600090819033600160a060020a0390811691161461120d57600080fd5b61121684613428565b915060015b600383015460c060020a900460ff16600281111561123557fe5b1461123f57600080fd5b836001604060020a0316611252856136fe565b6001604060020a03161461126557600080fd5b600182015460028301805461131e926001604060020a031691906020808202016040519081016040528092919081815260200182805480156112f857602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116112b55790505b505050506003860154600091508190608060020a90046001604060020a031660026137c8565b905061132b848285613aba565b5b5b50505050565b60008060008060008060008061134889613428565b8054600182015460028301546003840154929b506001604060020a039182169a5098508082169750604060020a820481169650608060020a820416945060c060020a900460ff16925090505b50919395979092949650565b60008060006113ae85611de6565b94506113b985613428565b925060005b600384015460c060020a900460ff1660028111156113d857fe5b146113e257600080fd5b60018301546113f9906001604060020a0316613471565b91506115ee826101006040519081016040528154909190829060ff16600281111561142057fe5b600281111561142b57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115995780601f1061156e57610100808354040283529160200191611599565b820191906000526020600020905b81548152906001019060200180831161157c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b84565b60018301546002840180546116a7926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561168157602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161163e5790505b505050506003870154600091508190608060020a90046001604060020a031660016137c8565b90506116b4858286613aba565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b151561172957600080fd5b6102c65a03f1151561173a57600080fd5b5050505b5050505050565b600080600080600061175688611de6565b975061176188613428565b945061176c86613471565b935061177789613471565b925061196c836101006040519081016040528154909190829060ff16600281111561142057fe5b600281111561142b57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115995780601f1061156e57610100808354040283529160200191611599565b820191906000526020600020905b81548152906001019060200180831161157c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b84565b60005b600386015460c060020a900460ff16600281111561198957fe5b1461199357600080fd5b60018501546001604060020a038a811691161415611a305760005b845460ff1660028111156119be57fe5b14156119d4576119cf888888613bcc565b611a28565b60025b845460ff1660028111156119e757fe5b14156119fd576119cf888888613c12565b611a28565b60015b845460ff166002811115611a1057fe5b1415611a26576119cf888888613e71565b611a28565bfe5b5b5b5b611dda565b611b618560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611afa57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611ab75790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611b4d57fe5b6002811115611b5857fe5b9052508a613fa5565b6001604060020a0390811692508214611a265760005b845460ff166002811115611b8757fe5b1415611bbd5760018501546001604060020a03878116911614611ba657fe5b611a288888876002018054905061400c565b611dda565b60015b845460ff166002811115611bd057fe5b1415611d9757611d078560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015611ca057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611c5d5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115611cf357fe5b6002811115611cfe57fe5b90525087613fa5565b6001604060020a039081169150811415611d4257611d3288886001858960020180549050030361400c565b6119cf888888613e71565b611a28565b81811115611d7157611d3288886001858960020180549050030361400c565b6119cf888888613e71565b611a28565b818111611a2857611a2888886001848960020180549050030361400c565b5b5b5b611dda565b60025b845460ff166002811115611daa57fe5b1415611a2657611dc788886001858960020180549050030361400c565b611a28888888614112565b611dda565b5bfe5b5b505050505050505050565b600080600080611df585613428565b925060005b600384015460c060020a900460ff166002811115611e1457fe5b14611e2157849350611faa565b600383015460006001604060020a03909116118015611e5a57506003830154604060020a90046001604060020a0316611e58614474565b115b15611f78576001830154600284018054611f17926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611ef257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611eaf5790505b505050506003870154600091508190608060020a90046001604060020a0316816137c8565b6003840154909250611f58906001604060020a03166000604051805910611f3b5750595b908082528060200260200182016040525b506000808660006137c8565b9050611f6985828560000154613aba565b809450611f7585613428565b92505b611f81856136fe565b90506001604060020a0380821690861614611fa557611fa585828560000154613aba565b5b8093505b505050919050565b600180549081808201611fc58382614954565b916000526020600020906005020160005b6101006040519081016040528060015b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561204657fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a031990911617815560408201518160010190805161208c929160200190614986565b506060820151816002019080516120a7929160200190614986565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a25b949350505050565b600154600019015b90565b600080805b835183101561132b576001604060020a038484815181106121d057fe5b90602001906020020151169150604060020a8484815181106121ee57fe5b9060200190602002015181151561220157fe5b04905061220e82826113a0565b5b6001909201916121b3565b5b50505050565b600061222c86613471565b905060025b815460ff16600281111561224157fe5b1461224b57600080fd5b805433600160a060020a03908116610100909204161461226a57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161229d929160200190614986565b50600281018380516122b3929160200190614986565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f801323e9b4133d25ff2d22427923c338b40554015d63b1b035fdf93225f3112f60405160405180910390a25b505050505050565b6001805490818082016123218382614954565b916000526020600020906005020160005b6101006040519081016040528060005b8152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156123a257fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516123e8929160200190614986565b50606082015181600201908051612403929160200190614986565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a25b949350505050565b60008061250a83613471565b905060005b815460ff16600281111561251f57fe5b141561252e57600091506125aa565b60025b815460ff16600281111561254157fe5b1461254857fe5b6003810154608060020a900460ff161561256557600191506125aa565b6003810154604060020a90046001604060020a0316151561258957600091506125aa565b60038101546125a790604060020a90046001604060020a03166124fe565b91505b50919050565b600080805b835183101561132b576001604060020a038484815181106125d257fe5b90602001906020020151169150604060020a8484815181106125f057fe5b9060200190602002015181151561260357fe5b04905061261082826111ed565b5b6001909201916125b5565b5b50505050565b60045481565b600061263482613471565b9050612829816101006040519081016040528154909190829060ff16600281111561142057fe5b600281111561142b57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115995780601f1061156e57610100808354040283529160200191611599565b820191906000526020600020905b81548152906001019060200180831161157c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b84565b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f82a76f4c7fad127fa2b94c70b686a7111dda14d8de32572bc17d3ac22acc726f60405160405180910390a25b5050565b60048190555b50565b60008061289b84611de6565b93506128a684613428565b60018101549092506128c0906001604060020a0316613471565b9050612ab5816101006040519081016040528154909190829060ff16600281111561142057fe5b600281111561142b57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115995780601f1061156e57610100808354040283529160200191611599565b820191906000526020600020905b81548152906001019060200180831161157c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b84565b600382015461132b908590608060020a90046001604060020a031685613aba565b5b50505050565b600080805b8351821015612b22576001604060020a03848381518110612aff57fe5b90602001906020020151169050612b1581611de6565b505b600190910190612ae2565b5b5050919050565b60008080806001604060020a0386161515612b7057612b6d6020604051908101604052806000815250602060405190810160405260008082526203f4809061230e565b95505b612b7986613471565b9350612d6e846101006040519081016040528154909190829060ff16600281111561142057fe5b600281111561142b57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115995780601f1061156e57610100808354040283529160200191611599565b820191906000526020600020905b81548152906001019060200180831161157c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613b84565b60005b845460ff166002811115612d8157fe5b14612d8b57600080fd5b34925060008311612d9b57600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f193505050501515612dce57600080fd5b612dfe866000604051805910612de15750595b908082528060200260200182016040525b506000806000806137c8565b9150612e0982613428565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a361230686838588611745565b5b505050505050565b6000612e7086613471565b905060015b815460ff166002811115612e8557fe5b14612e8f57600080fd5b805433600160a060020a039081166101009092041614612eae57600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612ee1929160200190614986565b5060028101838051612ef7929160200190614986565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a25b505050505050565b600080805b8451831015612306576001604060020a03858481518110612f7457fe5b90602001906020020151169150604060020a858481518110612f9257fe5b90602001906020020151811515612fa557fe5b049050612fb486838387611745565b5b600190920191612f57565b5b505050505050565b6000612fd486613471565b905060005b815460ff166002811115612fe957fe5b14612ff357600080fd5b805433600160a060020a03908116610100909204161461301257600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051613045929160200190614986565b506002810183805161305b929160200190614986565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a25b505050505050565b600254600090819033600160a060020a039081169116146130d657600080fd5b6130df84613428565b915060015b600383015460c060020a900460ff1660028111156130fe57fe5b1461310857600080fd5b60018201546002830180546131c0926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561319b57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116131585790505b505050506003860154600091508190608060020a90046001604060020a0316816137c8565b905061131e81611de6565b905061132b848285613aba565b5b5b50505050565b6000806131eb614942565b6131f3614942565b60008060008060006132048a613471565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156132ba5780601f1061328f576101008083540402835291602001916132ba565b820191906000526020600020905b81548152906001019060200180831161329d57829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133595780601f1061332e57610100808354040283529160200191613359565b820191906000526020600020905b81548152906001019060200180831161333c57829003601f168201915b50505050600383015460048401549298506001604060020a038082169850604060020a8204169650608060020a900460ff16945050600160a060020a031691505b50919395975091939597565b600080805b835183101561132b576001604060020a038484815181106133c857fe5b90602001906020020151169150604060020a8484815181106133e657fe5b906020019060200201518115156133f957fe5b04905061340682826130b6565b5b6001909201916133ab565b5b50505050565b600254600160a060020a031681565b600080546001604060020a0383161061344057600080fd5b600080546001604060020a03841690811061345757fe5b906000526020600020906004020160005b5090505b919050565b6001546000906001604060020a0383161061348b57600080fd5b600180546001604060020a0384169081106134a257fe5b906000526020600020906005020160005b5090505b919050565b60008060025b835160028111156134cf57fe5b146134d657fe5b8260a001516001604060020a031615156134f357600191506125aa565b6135008360a00151613471565b90506125a7816101006040519081016040528154909190829060ff166002811115610e1357fe5b6002811115610e1e57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eea5780601f10610ebf57610100808354040283529160200191610eea565b820191906000526020600020905b815481529060010190602001808311610ecd57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8c5780601f10610f6157610100808354040283529160200191610f8c565b820191906000526020600020905b815481529060010190602001808311610f6f57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526134bc565b91505b50919050565b600080806001604060020a038416151561371b5760009250612b22565b61372484613428565b600181015490925061373e906001604060020a0316613471565b905060005b815460ff16600281111561375357fe5b141561376157839250612b22565b60025b815460ff16600281111561377457fe5b1461377b57fe5b6001820154613792906001604060020a03166124fe565b15156137a057839250612b22565b60038201546137be90608060020a90046001604060020a03166136fe565b92505b5050919050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b838110156138165780820151818401525b6020016137fd565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a02815260080182600281111561388357fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a0390911691508111156138ec57809250613aae565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a03831617905581549091906001810161392a8382614a84565b916000526020600020906004020160005b60e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a0316815260200188600281111561399c57fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a03929092169190911790556040820151816002019080516139e7929160200190614ab6565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115613aa257fe5b02179055505050508092505b50509695505050505050565b6000806000613acc600187878761447b565b9250846001604060020a0316866001604060020a03161415613aed57612306565b821515613af957612306565b613b0286613428565b9150613b0d85613428565b825490915083901015613b1f57600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a3613b7a600087878661447b565b505b505050505050565b8060200151600160a060020a031633600160a060020a03161480613bbd57508060e00151600160a060020a031633600160a060020a0316145b151561288c57600080fd5b5b50565b600061131e826000604051805910612de15750595b908082528060200260200182016040525b506000806000806137c8565b905061132b848285613aba565b5b50505050565b6000806000613c2086613428565b92506014613d548460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613cee57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613cab5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613d4157fe5b6002811115613d4c57fe5b9052506144a3565b10613d5e57600080fd5b613d67846124fe565b15613d7157600080fd5b6001830154600284018054613e29926001604060020a03169190602080820201604051908101604052809291908181526020018280548015611ef257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411611eaf5790505b505050506003870154600091508190608060020a90046001604060020a0316816137c8565b9150613e5b846000604051805910611f3b5750595b908082528060200260200182016040525b506000808660006137c8565b9050612306868287613aba565b5b505050505050565b6000613e7b614942565b600080613e8787613428565b600281015490945060149010613e9c57600080fd5b6002840154600101604051805910613eb15750595b908082528060200260200182016040525b509250600091505b6002840154821015613f3f5760028401805483908110613ee657fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a0316838381518110613f1c57fe5b6001604060020a039092166020928302909101909101525b600190910190613eca565b60028401548590849081518110613f5257fe5b6001604060020a039283166020918202909201015260018501546003860154613f8e929182169186916000918291608060020a900416816137c8565b9050613b7a878288613aba565b5b50505050505050565b6000805b836040015151811015613ffa57826001604060020a031684604001518281518110613fd057fe5b906020019060200201516001604060020a03161415613ff157809150614005565b5b600101613fa9565b6001604060020a0391505b5092915050565b6000614016614942565b60008061402287613428565b600281015490945085900360405180591061403a5750595b908082528060200260200182016040525b509250600091505b60028401548590038210156140cb576002840180548390811061407257fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a03168383815181106140a857fe5b6001604060020a039092166020928302909101909101525b600190910190614053565b60018401546003850154613f8e916001604060020a039081169186916000918291608060020a90910416816137c8565b9050613b7a878288613aba565b5b50505050505050565b60008061411e85613428565b915060146142528360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613cee57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613cab5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613d4157fe5b6002811115613d4c57fe5b9052506144a3565b1061425c57600080fd5b614265836124fe565b1561426f57600080fd5b600182015460028301805461445f926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561430257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116142bf5790505b5050505050856144388660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156143d257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161438f5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561442557fe5b600281111561443057fe5b90525061460e565b614440614474565b6003880154910190608060020a90046001604060020a031660006137c8565b905061173e858286613aba565b5b5050505050565b6004545b90565b8061448985858086856146a1565b905061449885848686856146a1565b90505b949350505050565b6000808260a001516001604060020a031615156144c357600091506125aa565b6144d08360a00151613428565b90506146028160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a0316815260200160028201805480602002602001604051908101604052809291908181526020018280548015613cee57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411613cab5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff166002811115613d4157fe5b6002811115613d4c57fe5b9052506144a3565b60010191505b50919050565b60008060006146208460200151613471565b60038101546001604060020a031693509150600090505b836040015151811015612b22576146668460400151828151811061465757fe5b90602001906020020151613471565b60038101549092506001604060020a0316839011156146905760038201546001604060020a031692505b5b600101614637565b5b5050919050565b600080600080866001604060020a0316886001604060020a0316146146c8576101006146cb565b60005b61ffff1692508493506146dd88613428565b60018101549092506146fd908a906001604060020a0316898987896147c2565b9350600090505b60028201546001604060020a038216101561477a5761476f8983600201836001604060020a031681548110151561473757fe5b90600052602060002090600491828204019190066008025b9054906101000a90046001604060020a03168989858801600101896147c2565b93505b600101614704565b600382015460006001604060020a0390911611156147b55760038201546147b2908a906001604060020a0316898960ff8801896147c2565b93505b5b50505095945050505050565b806000806147cf88613471565b6004810154909150600160a060020a0316158015906147ee5750600083115b15613aae5788156148a9576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b151561487857600080fd5b6102c65a03f1151561488957600080fd5b5050506040518051925050828211156148a157600080fd5b819250613aae565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b151561491f57600080fd5b6102c65a03f1151561493057600080fd5b5050505b5b5b50509695505050505050565b60206040519081016040526000815290565b815481835581811511614980576005028160050283600052602060002091820191016149809190614b80565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106149c757805160ff19168380011785556149f4565b828001600101855582156149f4579182015b828111156149f45782518255916020019190600101906149d9565b5b50614a01929150614c12565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106149c757805160ff19168380011785556149f4565b828001600101855582156149f4579182015b828111156149f45782518255916020019190600101906149d9565b5b50614a01929150614c12565b5090565b815481835581811511614980576004028160040283600052602060002091820191016149809190614c33565b5b505050565b82805482825590600052602060002090600301600490048101928215614b5e5791602002820160005b83821115614b2957835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302614adf565b8015614b5c5782816101000a8154906001604060020a030219169055600801602081600701049283019260010302614b29565b505b50614a01929150614c9a565b5090565b60206040519081016040526000815290565b6111ea91905b80821115614a0157805474ffffffffffffffffffffffffffffffffffffffffff191681556000614bb96001830182614cc6565b614bc7600283016000614cc6565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501614b86565b5090565b90565b6111ea91905b80821115614a015760008155600101614c18565b5090565b90565b6111ea91905b80821115614a0157600080825560018201805467ffffffffffffffff19169055614c666002830182614d0e565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401614c39565b5090565b90565b6111ea91905b80821115614a0157805467ffffffffffffffff19168155600101614ca0565b5090565b90565b50805460018160011615610100020316600290046000825580601f10614cec575061288c565b601f01602090049060005260206000209081019061288c9190614c12565b5b50565b50805460008255600301600490049060005260206000209081019061288c9190614c12565b5b505600a165627a7a7230582098d2f2866fde901bd261ae1624f753825a8eb87944491901384043b86232f1ec0029" -exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"}] +exports.LiquidPledgingAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"}],"name":"cancelProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"CancelProject","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingByteCode = "0x606060405234156200001057600080fd5b6040516020806200431883398101604052808051915081905060016200003781806200006f565b50600162000047600082620000a3565b5060028054600160a060020a031916600160a060020a0392909216919091179055506200023b565b8154818355818115116200009e576005028160050283600052602060002091820191016200009e9190620000d2565b505050565b8154818355818115116200009e576004028160040283600052602060002091820191016200009e919062000146565b6200014391905b808211156200013f578054600160a860020a03191681556000620001016001830182620001b1565b62000111600283016000620001b1565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000d9565b5090565b90565b6200014391905b808211156200013f57600080825560018201805467ffffffffffffffff191690556200017d6002830182620001fc565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014d565b50805460018160011615610100020316600290046000825580601f10620001d95750620001f9565b601f016020900490600052602060002090810190620001f991906200021e565b50565b508054600082556003016004900490600052602060002090810190620001f991905b6200014391905b808211156200013f576000815560010162000225565b6140cd806200024b6000396000f300606060405236156101385763ffffffff60e060020a60003504166314e7b1dc811461013d5780632101a6ad146101f65780632a8ec8cc146102295780632ee888081461024e5780633f657a461461027257806343387983146102f057806347c5ef431461031257806350f8a8031461034157806352dc7dcc1461037c5780635503d9ba1461042857806357adafb61461043b57806372116e921461048a578063796d5654146105465780637f61fa93146105655780639398f5a214610611578063af9f456314610660578063bce0906d14610682578063bde60ac9146106d1578063cc19ecf7146106eb578063d639cd73146107a6578063db7c23141461080e578063e9c211e2146108c9578063eba8ba06146108eb578063ef3766e414610a41578063f6b24b1c14610a90578063fbfa77cf14610b4b575b600080fd5b341561014857600080fd5b61015f6001604060020a0360043516602435610b7a565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101b95780820151838201526020016101a1565b50505050905090810190601f1680156101e65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020157600080fd5b6102156001604060020a0360043516610c9f565b604051901515815260200160405180910390f35b341561023457600080fd5b61023c610d4f565b60405190815260200160405180910390f35b341561025957600080fd5b6102706001604060020a0360043516602435610d5a565b005b341561027d57600080fd5b6102916001604060020a0360043516610e9d565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102d657fe5b60ff16815260200197505050505050505060405180910390f35b34156102fb57600080fd5b6102706001604060020a0360043516602435610f02565b341561031d57600080fd5b6102706001604060020a0360043581169060243581169060443590606435166112a5565b341561034c57600080fd5b6103606001604060020a0360043516611739565b6040516001604060020a03909116815260200160405180910390f35b341561038757600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611902915050565b341561043357600080fd5b61023c611af0565b341561044657600080fd5b6102706004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611afa95505050505050565b341561049557600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150611b659050565b341561055157600080fd5b6102706001604060020a0360043516611faf565b341561057057600080fd5b61036060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a0316925061203d915050565b341561061c57600080fd5b610270600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061222a95505050505050565b341561066b57600080fd5b6102706001604060020a0360043516602435612295565b341561068d57600080fd5b610360600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061230e95505050505050565b6102706001604060020a0360043581169060243516612359565b34156106f657600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a031692506124c3915050565b34156107b157600080fd5b610270600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a031692506125ae915050565b341561081957600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a0316925061261b915050565b34156108d457600080fd5b6102706001604060020a0360043516602435612706565b34156108f657600080fd5b61090a6001604060020a036004351661281a565b6040518089600281111561091a57fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b8381101561099b578082015183820152602001610983565b50505050905090810190601f1680156109c85780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b838110156109fe5780820151838201526020016109e6565b50505050905090810190601f168015610a2b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610a4c57600080fd5b61027060046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506129df95505050505050565b3415610a9b57600080fd5b610270600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612a4a915050565b3415610b5657600080fd5b610b5e612b35565b604051600160a060020a03909116815260200160405180910390f35b600080610b85613d6d565b600080610b9187612b44565b91508160020160018703815481101515610ba757fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a03169450610bdb85612b88565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c8f5780601f10610c6457610100808354040283529160200191610c8f565b820191906000526020600020905b815481529060010190602001808311610c7257829003601f168201915b5050505050925050509250925092565b600080610cab83612b88565b90506000815460ff166002811115610cbf57fe5b1415610cce5760009150610d49565b6002815460ff166002811115610ce057fe5b14610ce757fe5b6003810154608060020a900460ff1615610d045760019150610d49565b6003810154604060020a90046001604060020a03161515610d285760009150610d49565b6003810154610d4690604060020a90046001604060020a0316610c9f565b91505b50919050565b600054600019015b90565b600254600090819033600160a060020a03908116911614610d7a57600080fd5b610d8384612b44565b91506001600383015460c060020a900460ff166002811115610da157fe5b14610dab57600080fd5b836001604060020a0316610dbe85612bce565b6001604060020a031614610dd157600080fd5b6001820154600283018054610e8a926001604060020a03169190602080820201604051908101604052809291908181526020018280548015610e6457602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411610e215790505b505050506003860154600091508190608060020a90046001604060020a03166002612c94565b9050610e97848285612f84565b50505050565b600080600080600080600080610eb289612b44565b805460018201546002830154600390930154919c6001604060020a039182169c50929a508082169950604060020a820481169850608060020a820416965060c060020a900460ff16945092505050565b6000806000610f1085611739565b9450610f1b85612b44565b92506000600384015460c060020a900460ff166002811115610f3957fe5b14610f4357600080fd5b6001830154610f5a906001604060020a0316612b88565b915061114f826101006040519081016040528154909190829060ff166002811115610f8157fe5b6002811115610f8c57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110585780601f1061102d57610100808354040283529160200191611058565b820191906000526020600020905b81548152906001019060200180831161103b57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261304d565b6001830154600284018054611208926001604060020a031691906020808202016040519081016040528092919081815260200182805480156111e257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161119f5790505b505050506003870154600091508190608060020a90046001604060020a03166001612c94565b9050611215858286612f84565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b151561128a57600080fd5b6102c65a03f1151561129b57600080fd5b5050505050505050565b60008060008060006112b688611739565b97506112c188612b44565b94506112cc86612b88565b93506112d789612b88565b92506112fe836101006040519081016040528154909190829060ff166002811115610f8157fe5b6000600386015460c060020a900460ff16600281111561131a57fe5b1461132457600080fd5b60018501546001604060020a038a8116911614156113b1576000845460ff16600281111561134e57fe5b14156113645761135f888888613094565b6113ac565b6002845460ff16600281111561137657fe5b14156113875761135f8888886130c4565b6001845460ff16600281111561139957fe5b14156113aa5761135f8888886132ed565bfe5b61172e565b6114e28560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561147b57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116114385790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156114ce57fe5b60028111156114d957fe5b9052508a613414565b6001604060020a03908116925082146113aa576000845460ff16600281111561150757fe5b14156115385760018501546001604060020a0387811691161461152657fe5b6113ac8888876002018054905061347a565b6001845460ff16600281111561154a57fe5b14156116f4576116818560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561161a57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116115d75790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561166d57fe5b600281111561167857fe5b90525087613414565b6001604060020a0390811691508114156116b7576116ac88886001858960020180549050030361347a565b61135f8888886132ed565b818111156116d6576116ac88886001858960020180549050030361347a565b8181116113ac576113ac88886001848960020180549050030361347a565b6002845460ff16600281111561170657fe5b14156113aa5761172388886001858960020180549050030361347a565b6113ac888888613566565b505050505050505050565b60008060008061174885612b44565b92506000600384015460c060020a900460ff16600281111561176657fe5b14611773578493506118fa565b600383015460006001604060020a039091161180156117ac57506003830154604060020a90046001604060020a03166117aa613889565b115b156118c9576001830154600284018054611869926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561184457602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116118015790505b505050506003870154600091508190608060020a90046001604060020a031681612c94565b60038401549092506118a9906001604060020a0316600060405180591061188d5750595b9080825280602002602001820160405250600080866000612c94565b90506118ba85828560000154612f84565b8094506118c685612b44565b92505b6118d285612bce565b90506001604060020a03808216908616146118f6576118f685828560000154612f84565b8093505b505050919050565b6001805490818082016119158382613d7f565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561199457fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516119da929160200190613db0565b506060820151816002019080516119f5929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b600080805b8351831015610e97576001604060020a03848481518110611b1c57fe5b90602001906020020151169150604060020a848481518110611b3a57fe5b90602001906020020151811515611b4d57fe5b049050611b5a8282610f02565b600190920191611aff565b6000806001604060020a03851615611dbc57611b8085612b88565b90506002815460ff166002811115611b9457fe5b14611b9e57600080fd5b805433600160a060020a039081166101009092041614611bbd57600080fd5b6014611db2826101006040519081016040528154909190829060ff166002811115611be457fe5b6002811115611bef57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cbb5780601f10611c9057610100808354040283529160200191611cbb565b820191906000526020600020905b815481529060010190602001808311611c9e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d5d5780601f10611d3257610100808354040283529160200191611d5d565b820191906000526020600020905b815481529060010190602001808311611d4057829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a031660809091015261388d565b10611dbc57600080fd5b60018054925082808201611dd08382613d7f565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115611e5057fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611e96929160200190613db0565b50606082015181600201908051611eb1929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b6000611fba82612b88565b9050611fe1816101006040519081016040528154909190829060ff166002811115610f8157fe5b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f2d65c225503bd4cd245a36c8030073ddd0fb02c23ce540fcd901e74e5006687c60405160405180910390a25050565b6001805490818082016120508382613d7f565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156120cf57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612115929160200190613db0565b50606082015181600201908051612130929160200190613db0565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600080805b8351831015610e97576001604060020a0384848151811061224c57fe5b90602001906020020151169150604060020a84848151811061226a57fe5b9060200190602002015181151561227d57fe5b04905061228a8282610d5a565b60019092019161222f565b6000806122a184611739565b93506122ac84612b44565b60018101549092506122c6906001604060020a0316612b88565b90506122ed816101006040519081016040528154909190829060ff166002811115610f8157fe5b6003820154610e97908590608060020a90046001604060020a031685612f84565b600080805b8351821015612352576001604060020a0384838151811061233057fe5b9060200190602002015116905061234681611739565b50600190910190612313565b5050919050565b60008080806001604060020a038616151561239f5761239c6020604051908101604052806000815250602060405190810160405260008082526203f4809061203d565b95505b6123a886612b88565b93506123cf846101006040519081016040528154909190829060ff166002811115610f8157fe5b6000845460ff1660028111156123e157fe5b146123eb57600080fd5b349250600083116123fb57600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f19350505050151561242e57600080fd5b61245d8660006040518059106124415750595b9080825280602002602001820160405250600080600080612c94565b915061246882612b44565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a36124bb868385886112a5565b505050505050565b60006124ce86612b88565b90506001815460ff1660028111156124e257fe5b146124ec57600080fd5b805433600160a060020a03908116610100909204161461250b57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161253e929160200190613db0565b5060028101838051612554929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600080805b84518310156124bb576001604060020a038584815181106125d057fe5b90602001906020020151169150604060020a8584815181106125ee57fe5b9060200190602002015181151561260157fe5b049050612610868383876112a5565b6001909201916125b3565b600061262686612b88565b90506000815460ff16600281111561263a57fe5b1461264457600080fd5b805433600160a060020a03908116610100909204161461266357600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612696929160200190613db0565b50600281018380516126ac929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b600254600090819033600160a060020a0390811691161461272657600080fd5b61272f84612b44565b91506001600383015460c060020a900460ff16600281111561274d57fe5b1461275757600080fd5b600182015460028301805461280f926001604060020a031691906020808202016040519081016040528092919081815260200182805480156127ea57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116127a75790505b505050506003860154600091508190608060020a90046001604060020a031681612c94565b9050610e8a81611739565b600080612825613d6d565b61282d613d6d565b600080600080600061283e8a612b88565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156128f45780601f106128c9576101008083540402835291602001916128f4565b820191906000526020600020905b8154815290600101906020018083116128d757829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129935780601f1061296857610100808354040283529160200191612993565b820191906000526020600020905b81548152906001019060200180831161297657829003601f168201915b5050505060038301546004909301549a9c999b50979990986001604060020a038084169950604060020a8404169750608060020a90920460ff169550600160a060020a03169350915050565b600080805b8351831015610e97576001604060020a03848481518110612a0157fe5b90602001906020020151169150604060020a848481518110612a1f57fe5b90602001906020020151811515612a3257fe5b049050612a3f8282612706565b6001909201916129e4565b6000612a5586612b88565b90506002815460ff166002811115612a6957fe5b14612a7357600080fd5b805433600160a060020a039081166101009092041614612a9257600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612ac5929160200190613db0565b5060028101838051612adb929160200190613db0565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b600080546001604060020a03831610612b5c57600080fd5b600080546001604060020a038416908110612b7357fe5b90600052602060002090600402019050919050565b6001546000906001604060020a03831610612ba257600080fd5b600180546001604060020a038416908110612bb957fe5b90600052602060002090600502019050919050565b600080806001604060020a0384161515612beb5760009250612352565b612bf484612b44565b6001810154909250612c0e906001604060020a0316612b88565b90506000815460ff166002811115612c2257fe5b1415612c3057839250612352565b6002815460ff166002811115612c4257fe5b14612c4957fe5b6001820154612c60906001604060020a0316610c9f565b1515612c6e57839250612352565b6003820154612c8c90608060020a90046001604060020a0316612bce565b949350505050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b83811015612ce1578082015183820152602001612cc9565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a028152600801826002811115612d4e57fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a039091169150811115612db757809250612f78565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a038316179055815490919060018101612df58382613e2e565b9160005260206000209060040201600060e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a03168152602001886002811115612e6657fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a0392909216919091179055604082015181600201908051612eb1929160200190613e5a565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115612f6c57fe5b02179055505050508092505b50509695505050505050565b6000806000612f9660018787876138f7565b9250846001604060020a0316866001604060020a03161415612fb7576124bb565b821515612fc3576124bb565b612fcc86612b44565b9150612fd785612b44565b825490915083901015612fe957600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a361304460008787866138f7565b50505050505050565b8060200151600160a060020a031633600160a060020a0316148061308657508060e00151600160a060020a031633600160a060020a0316145b151561309157600080fd5b50565b6000610e8a8260006040518059106124415750599080825280602002602001820160405250600080600080612c94565b60008060006130d286612b44565b925060146132068460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161315d5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b60028111156131fe57fe5b90525061391d565b1061321057600080fd5b61321984610c9f565b1561322357600080fd5b60018301546002840180546132b0926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561184457600091825260209182902080546001604060020a031684529082028301929091600891018084116118015750505050600388015460009250829150608060020a90046001604060020a031681612c94565b91506132e084600060405180591061188d5750599080825280602002602001820160405250600080866000612c94565b90506124bb868287612f84565b60006132f7613d6d565b60008061330387612b44565b60028101549094506014901061331857600080fd5b600284015460010160405180591061332d5750595b90808252806020026020018201604052509250600091505b60028401548210156133b8576002840180548390811061336157fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a031683838151811061339657fe5b6001604060020a03909216602092830290910190910152600190910190613345565b600284015485908490815181106133cb57fe5b6001604060020a039283166020918202909201015260018501546003860154613407929182169186916000918291608060020a90041681612c94565b9050613044878288612f84565b6000805b83604001515181101561346857826001604060020a03168460400151828151811061343f57fe5b906020019060200201516001604060020a0316141561346057809150613473565b600101613418565b6001604060020a0391505b5092915050565b6000613484613d6d565b60008061349087612b44565b60028101549094508590036040518059106134a85750595b90808252806020026020018201604052509250600091505b600284015485900382101561353657600284018054839081106134df57fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a031683838151811061351457fe5b6001604060020a039092166020928302909101909101526001909101906134c0565b60018401546003850154613407916001604060020a039081169186916000918291608060020a9091041681612c94565b60008061357285612b44565b915060146136688360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057600091825260209182902080546001604060020a0316845290820283019290916008910180841161315d5750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b1061367257600080fd5b61367b83610c9f565b1561368557600080fd5b6001820154600283018054613875926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561371857602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116136d55790505b50505050508561384e8660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156137e857602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116137a55790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561383b57fe5b600281111561384657fe5b905250613a48565b613856613889565b6003880154910190608060020a90046001604060020a03166000612c94565b9050613882858286612f84565b5050505050565b4290565b60008060028351600281111561389f57fe5b146138a657fe5b8260a001516001604060020a031615156138c35760019150610d49565b6138d08360a00151612b88565b9050610d46816101006040519081016040528154909190829060ff166002811115611be457fe5b806139058585808685613ad2565b90506139148584868685613ad2565b95945050505050565b6000808260a001516001604060020a0316151561393d5760009150610d49565b61394a8360a00151612b44565b9050613a3e8160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131a057600091825260209182902080546001604060020a0316845290820283019290916008910180841161315d5750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156131f357fe5b6001019392505050565b6000806000613a5a8460200151612b88565b60038101546001604060020a031693509150600090505b83604001515181101561235257613aa084604001518281518110613a9157fe5b90602001906020020151612b88565b60038101549092506001604060020a031683901115613aca5760038201546001604060020a031692505b600101613a71565b600080600080866001604060020a0316886001604060020a031614613af957610100613afc565b60005b61ffff169250849350613b0e88612b44565b6001810154909250613b2e908a906001604060020a031689898789613bf0565b9350600090505b60028201546001604060020a0382161015613ba957613b9f8983600201836001604060020a0316815481101515613b6857fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a0316898985880160010189613bf0565b9350600101613b35565b600382015460006001604060020a039091161115613be4576003820154613be1908a906001604060020a0316898960ff880189613bf0565b93505b50505095945050505050565b80600080613bfd88612b88565b6004810154909150600160a060020a031615801590613c1c5750600083115b15612f78578815613cd7576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b1515613ca657600080fd5b6102c65a03f11515613cb757600080fd5b505050604051805192505082821115613ccf57600080fd5b819250612f78565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b1515613d4d57600080fd5b6102c65a03f11515613d5e57600080fd5b50505050509695505050505050565b60206040519081016040526000815290565b815481835581811511613dab57600502816005028360005260206000209182019101613dab9190613f0e565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613df157805160ff1916838001178555613e1e565b82800160010185558215613e1e579182015b82811115613e1e578251825591602001919060010190613e03565b50613e2a929150613f99565b5090565b815481835581811511613dab57600402816004028360005260206000209182019101613dab9190613fb3565b82805482825590600052602060002090600301600490048101928215613f025791602002820160005b83821115613ecd57835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302613e83565b8015613f005782816101000a8154906001604060020a030219169055600801602081600701049283019260010302613ecd565b505b50613e2a929150614013565b610d5791905b80821115613e2a57805474ffffffffffffffffffffffffffffffffffffffffff191681556000613f476001830182614038565b613f55600283016000614038565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501613f14565b610d5791905b80821115613e2a5760008155600101613f9f565b610d5791905b80821115613e2a57600080825560018201805467ffffffffffffffff19169055613fe6600283018261407c565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401613fb9565b610d5791905b80821115613e2a57805467ffffffffffffffff19168155600101614019565b50805460018160011615610100020316600290046000825580601f1061405e5750613091565b601f0160209004906000526020600020908101906130919190613f99565b5080546000825560030160049004906000526020600020908101906130919190613f995600a165627a7a723058202647bfe2440451a715cfbeadc69a30715fe05d5a64906f0c5ffdef0f7abc54cd0029" +exports.LiquidPledgingBaseAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingBaseByteCode = "0x606060405234156200001057600080fd5b60405160208062001ccd833981016040528080519150600190506200003681806200006d565b50600162000046600082620000a1565b5060028054600160a060020a031916600160a060020a039290921691909117905562000239565b8154818355818115116200009c576005028160050283600052602060002091820191016200009c9190620000d0565b505050565b8154818355818115116200009c576004028160040283600052602060002091820191016200009c919062000144565b6200014191905b808211156200013d578054600160a860020a03191681556000620000ff6001830182620001af565b6200010f600283016000620001af565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000d7565b5090565b90565b6200014191905b808211156200013d57600080825560018201805467ffffffffffffffff191690556200017b6002830182620001fa565b506003810180547fffffffffffffff000000000000000000000000000000000000000000000000001690556004016200014b565b50805460018160011615610100020316600290046000825580601f10620001d75750620001f7565b601f016020900490600052602060002090810190620001f791906200021c565b50565b508054600082556003016004900490600052602060002090810190620001f791905b6200014191905b808211156200013d576000815560010162000223565b611a8480620002496000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166314e7b1dc81146100c75780632101a6ad146101825780632a8ec8cc146101b65780633f657a46146101db57806352dc7dcc1461025b5780635503d9ba1461032557806372116e92146103385780637f61fa93146103f5578063cc19ecf7146104a2578063db7c231414610561578063eba8ba061461061e578063f6b24b1c14610776578063fbfa77cf14610833575b600080fd5b34156100d257600080fd5b6100ea67ffffffffffffffff60043516602435610862565b60405167ffffffffffffffff84168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b8381101561014557808201518382015260200161012d565b50505050905090810190601f1680156101725780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561018d57600080fd5b6101a267ffffffffffffffff60043516610988565b604051901515815260200160405180910390f35b34156101c157600080fd5b6101c9610a44565b60405190815260200160405180910390f35b34156101e657600080fd5b6101fb67ffffffffffffffff60043516610a4f565b60405187815267ffffffffffffffff8088166020830152868116604083015285811660608301528481166080830152831660a082015260c0810182600281111561024157fe5b60ff16815260200197505050505050505060405180910390f35b341561026657600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250610acf915050565b60405167ffffffffffffffff909116815260200160405180910390f35b341561033057600080fd5b6101c9610cc2565b341561034357600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a03853581169567ffffffffffffffff602082013581169650604082013516945060600135169150610ccc9050565b341561040057600080fd5b61030860046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050833567ffffffffffffffff169360200135600160a060020a03169250611122915050565b34156104ad57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611314915050565b005b341561056c57600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff169250611400915050565b341561062957600080fd5b61063e67ffffffffffffffff600435166114ec565b6040518089600281111561064e57fe5b60ff168152600160a060020a03898116602083015267ffffffffffffffff8781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156106d05780820151838201526020016106b8565b50505050905090810190601f1680156106fd5780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b8381101561073357808201518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561078157600080fd5b61055f6004803567ffffffffffffffff169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505050923567ffffffffffffffff1692506116b7915050565b341561083e57600080fd5b6108466117a3565b604051600160a060020a03909116815260200160405180910390f35b60008061086d6118ab565b600080610879876117b2565b9150816002016001870381548110151561088f57fe5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1694506108c4856117f8565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b5050505050925050509250925092565b600080610994836117f8565b90506000815460ff1660028111156109a857fe5b14156109b75760009150610a3e565b6002815460ff1660028111156109c957fe5b146109d057fe5b6003810154608060020a900460ff16156109ed5760019150610a3e565b600381015468010000000000000000900467ffffffffffffffff161515610a175760009150610a3e565b6003810154610a3b9068010000000000000000900467ffffffffffffffff16610988565b91505b50919050565b600054600019015b90565b600080600080600080600080610a64896117b2565b805460018201546002830154600390930154919c67ffffffffffffffff9182169c50929a50808216995068010000000000000000820481169850608060020a82041696507801000000000000000000000000000000000000000000000000900460ff16945092505050565b600180549081808201610ae283826118bd565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff19166001836002811115610b6257fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051610ba89291602001906118ee565b50606082015181600201908051610bc39291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b60008067ffffffffffffffff851615610f2a57610ce8856117f8565b90506002815460ff166002811115610cfc57fe5b14610d0657600080fd5b805433600160a060020a039081166101009092041614610d2557600080fd5b6014610f20826101006040519081016040528154909190829060ff166002811115610d4c57fe5b6002811115610d5757fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e235780601f10610df857610100808354040283529160200191610e23565b820191906000526020600020905b815481529060010190602001808311610e0657829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ec55780601f10610e9a57610100808354040283529160200191610ec5565b820191906000526020600020905b815481529060010190602001808311610ea857829003601f168201915b5050509183525050600382015467ffffffffffffffff8082166020840152680100000000000000008204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152611840565b10610f2a57600080fd5b60018054925082808201610f3e83826118bd565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d905267ffffffffffffffff808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115610fbf57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516110059291602001906118ee565b506060820151816002019080516110209291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff82167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b60018054908180820161113583826118bd565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a905267ffffffffffffffff89166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156111b557fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a03199091161781556040820151816001019080516111fb9291602001906118ee565b506060820151816002019080516112169291602001906118ee565b50608082015160038201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560a08201518160030160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055505067ffffffffffffffff81167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600061131f866117f8565b90506001815460ff16600281111561133357fe5b1461133d57600080fd5b805433600160a060020a03908116610100909204161461135c57600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161138f9291602001906118ee565b50600281018380516113a59291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600061140b866117f8565b90506000815460ff16600281111561141f57fe5b1461142957600080fd5b805433600160a060020a03908116610100909204161461144857600080fd5b805461010060a860020a031916610100600160a060020a038716021781556001810184805161147b9291602001906118ee565b50600281018380516114919291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b6000806114f76118ab565b6114ff6118ab565b60008060008060006115108a6117f8565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f820181900481020160405190810160405280929190818152602001828054600181600116156101000203166002900480156115c65780601f1061159b576101008083540402835291602001916115c6565b820191906000526020600020905b8154815290600101906020018083116115a957829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116655780601f1061163a57610100808354040283529160200191611665565b820191906000526020600020905b81548152906001019060200180831161164857829003601f168201915b5050505060038301546004909301549a9c999b509799909867ffffffffffffffff8084169950680100000000000000008404169750608060020a90920460ff169550600160a060020a03169350915050565b60006116c2866117f8565b90506002815460ff1660028111156116d657fe5b146116e057600080fd5b805433600160a060020a0390811661010090920416146116ff57600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516117329291602001906118ee565b50600281018380516117489291602001906118ee565b5060038101805467ffffffffffffffff191667ffffffffffffffff8481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b6000805467ffffffffffffffff8316106117cb57600080fd5b6000805467ffffffffffffffff84169081106117e357fe5b90600052602060002090600402019050919050565b60015460009067ffffffffffffffff83161061181357600080fd5b6001805467ffffffffffffffff841690811061182b57fe5b90600052602060002090600502019050919050565b60008060028351600281111561185257fe5b1461185957fe5b8260a0015167ffffffffffffffff1615156118775760019150610a3e565b6118848360a001516117f8565b9050610a3b816101006040519081016040528154909190829060ff166002811115610d4c57fe5b60206040519081016040526000815290565b8154818355818115116118e9576005028160050283600052602060002091820191016118e9919061196c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061192f57805160ff191683800117855561195c565b8280016001018555821561195c579182015b8281111561195c578251825591602001919060010190611941565b506119689291506119f7565b5090565b610a4c91905b8082111561196857805474ffffffffffffffffffffffffffffffffffffffffff1916815560006119a56001830182611a11565b6119b3600283016000611a11565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501611972565b610a4c91905b8082111561196857600081556001016119fd565b50805460018160011615610100020316600290046000825580601f10611a375750611a55565b601f016020900490600052602060002090810190611a5591906119f7565b505600a165627a7a72305820d57aca0e20432d46f428ddf56af0b311d5822c53e01db96e5fb63f96fc5ec1890029" +exports.LiquidPledgingMockAbi = [{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"idxDelegate","type":"uint256"}],"name":"getPledgeDelegate","outputs":[{"name":"idDelegate","type":"uint64"},{"name":"addr","type":"address"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"projectId","type":"uint64"}],"name":"isProjectCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledges","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"getPledge","outputs":[{"name":"amount","type":"uint256"},{"name":"owner","type":"uint64"},{"name":"nDelegates","type":"uint64"},{"name":"intendedProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"oldPledge","type":"uint64"},{"name":"paymentState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"},{"name":"idReceiver","type":"uint64"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"}],"name":"normalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addDelegate","outputs":[{"name":"idDelegate","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberOfPledgeAdmins","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"projectAdmin","type":"address"},{"name":"parentProject","type":"uint64"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addProject","outputs":[{"name":"idProject","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"}],"name":"cancelProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"plugin","type":"address"}],"name":"addGiver","outputs":[{"name":"idGiver","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mConfirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mock_time","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_t","type":"uint256"}],"name":"setMockedTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPledge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pledges","type":"uint256[]"}],"name":"mNormalizePledge","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"idReceiver","type":"uint64"}],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"idDelegate","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idSender","type":"uint64"},{"name":"pledgesAmounts","type":"uint256[]"},{"name":"idReceiver","type":"uint64"}],"name":"mTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idGiver","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateGiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idPledge","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"idAdmin","type":"uint64"}],"name":"getPledgeAdmin","outputs":[{"name":"adminType","type":"uint8"},{"name":"addr","type":"address"},{"name":"name","type":"string"},{"name":"url","type":"string"},{"name":"commitTime","type":"uint64"},{"name":"parentProject","type":"uint64"},{"name":"canceled","type":"bool"},{"name":"plugin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pledgesAmounts","type":"uint256[]"}],"name":"mCancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idProject","type":"uint64"},{"name":"newAddr","type":"address"},{"name":"newName","type":"string"},{"name":"newUrl","type":"string"},{"name":"newCommitTime","type":"uint64"}],"name":"updateProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_vault","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"uint64"},{"indexed":true,"name":"to","type":"uint64"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"CancelProject","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idGiver","type":"uint64"}],"name":"GiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idDelegate","type":"uint64"}],"name":"DelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idProject","type":"uint64"}],"name":"ProjectAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idAdmin","type":"uint64"}],"name":"ProjectUpdated","type":"event"}] +exports.LiquidPledgingMockByteCode = "0x606060405234156200001057600080fd5b6040516020806200436a83398101604052808051915081905080600162000038818062000075565b50600162000048600082620000a9565b5060028054600160a060020a031916600160a060020a039290921691909117905550504260045562000241565b815481835581811511620000a457600502816005028360005260206000209182019101620000a49190620000d8565b505050565b815481835581811511620000a457600402816004028360005260206000209182019101620000a491906200014c565b6200014991905b8082111562000145578054600160a860020a03191681556000620001076001830182620001b7565b62000117600283016000620001b7565b506003810180546001608860020a0319169055600481018054600160a060020a0319169055600501620000df565b5090565b90565b6200014991905b808211156200014557600080825560018201805467ffffffffffffffff1916905562000183600283018262000202565b506003810180547fffffffffffffff0000000000000000000000000000000000000000000000000016905560040162000153565b50805460018160011615610100020316600290046000825580601f10620001df5750620001ff565b601f016020900490600052602060002090810190620001ff919062000224565b50565b508054600082556003016004900490600052602060002090810190620001ff91905b6200014991905b808211156200014557600081556001016200022b565b61411980620002516000396000f3006060604052361561014e5763ffffffff60e060020a60003504166314e7b1dc81146101535780632101a6ad1461020c5780632a8ec8cc1461023f5780632ee88808146102645780633f657a4614610288578063433879831461030657806347c5ef431461032857806350f8a8031461035757806352dc7dcc146103925780635503d9ba1461043e57806357adafb61461045157806372116e92146104a0578063796d56541461055c5780637f61fa931461057b5780639398f5a2146106275780639da47a6b14610676578063ab8be23114610689578063af9f45631461069f578063bce0906d146106c1578063bde60ac914610710578063cc19ecf71461072a578063d639cd73146107e5578063db7c23141461084d578063e9c211e214610908578063eba8ba061461092a578063ef3766e414610a80578063f6b24b1c14610acf578063fbfa77cf14610b8a575b600080fd5b341561015e57600080fd5b6101756001604060020a0360043516602435610bb9565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156101cf5780820151838201526020016101b7565b50505050905090810190601f1680156101fc5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561021757600080fd5b61022b6001604060020a0360043516610cde565b604051901515815260200160405180910390f35b341561024a57600080fd5b610252610d8e565b60405190815260200160405180910390f35b341561026f57600080fd5b6102866001604060020a0360043516602435610d99565b005b341561029357600080fd5b6102a76001604060020a0360043516610edc565b6040518781526001604060020a038088166020830152868116604083015285811660608301528481166080830152831660a082015260c081018260028111156102ec57fe5b60ff16815260200197505050505050505060405180910390f35b341561031157600080fd5b6102866001604060020a0360043516602435610f41565b341561033357600080fd5b6102866001604060020a0360043581169060243581169060443590606435166112e4565b341561036257600080fd5b6103766001604060020a0360043516611778565b6040516001604060020a03909116815260200160405180910390f35b341561039d57600080fd5b61037660046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611941915050565b341561044957600080fd5b610252611b2f565b341561045c57600080fd5b6102866004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611b3995505050505050565b34156104ab57600080fd5b61037660046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050600160a060020a0385358116956001604060020a03602082013581169650604082013516945060600135169150611ba49050565b341561056757600080fd5b6102866001604060020a0360043516611fee565b341561058657600080fd5b61037660046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a0316925061207c915050565b341561063257600080fd5b610286600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061226995505050505050565b341561068157600080fd5b6102526122d4565b341561069457600080fd5b6102866004356122da565b34156106aa57600080fd5b6102866001604060020a03600435166024356122df565b34156106cc57600080fd5b610376600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061235895505050505050565b6102866001604060020a03600435811690602435166123a3565b341561073557600080fd5b610286600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a0316925061250d915050565b34156107f057600080fd5b610286600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a031692506125f8915050565b341561085857600080fd5b610286600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612665915050565b341561091357600080fd5b6102866001604060020a0360043516602435612750565b341561093557600080fd5b6109496001604060020a0360043516612864565b6040518089600281111561095957fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b838110156109da5780820151838201526020016109c2565b50505050905090810190601f168015610a075780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610a3d578082015183820152602001610a25565b50505050905090810190601f168015610a6a5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610a8b57600080fd5b6102866004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650612a2995505050505050565b3415610ada57600080fd5b610286600480356001604060020a03169060248035600160a060020a0316919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505092356001604060020a03169250612a94915050565b3415610b9557600080fd5b610b9d612b7f565b604051600160a060020a03909116815260200160405180910390f35b600080610bc4613db9565b600080610bd087612b8e565b91508160020160018703815481101515610be657fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a03169450610c1a85612bd2565b90508060000160019054906101000a9004600160a060020a03169350806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cce5780601f10610ca357610100808354040283529160200191610cce565b820191906000526020600020905b815481529060010190602001808311610cb157829003601f168201915b5050505050925050509250925092565b600080610cea83612bd2565b90506000815460ff166002811115610cfe57fe5b1415610d0d5760009150610d88565b6002815460ff166002811115610d1f57fe5b14610d2657fe5b6003810154608060020a900460ff1615610d435760019150610d88565b6003810154604060020a90046001604060020a03161515610d675760009150610d88565b6003810154610d8590604060020a90046001604060020a0316610cde565b91505b50919050565b600054600019015b90565b600254600090819033600160a060020a03908116911614610db957600080fd5b610dc284612b8e565b91506001600383015460c060020a900460ff166002811115610de057fe5b14610dea57600080fd5b836001604060020a0316610dfd85612c18565b6001604060020a031614610e1057600080fd5b6001820154600283018054610ec9926001604060020a03169190602080820201604051908101604052809291908181526020018280548015610ea357602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411610e605790505b505050506003860154600091508190608060020a90046001604060020a03166002612cde565b9050610ed6848285612fce565b50505050565b600080600080600080600080610ef189612b8e565b805460018201546002830154600390930154919c6001604060020a039182169c50929a508082169950604060020a820481169850608060020a820416965060c060020a900460ff16945092505050565b6000806000610f4f85611778565b9450610f5a85612b8e565b92506000600384015460c060020a900460ff166002811115610f7857fe5b14610f8257600080fd5b6001830154610f99906001604060020a0316612bd2565b915061118e826101006040519081016040528154909190829060ff166002811115610fc057fe5b6002811115610fcb57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111395780601f1061110e57610100808354040283529160200191611139565b820191906000526020600020905b81548152906001019060200180831161111c57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a0316608090910152613097565b6001830154600284018054611247926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561122157602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116111de5790505b505050506003870154600091508190608060020a90046001604060020a03166001612cde565b9050611254858286612fce565b6002548254600160a060020a039182169163bb4f28df916001604060020a03851691610100909104168760405160e060020a63ffffffff86160281526004810193909352600160a060020a0390911660248301526044820152606401600060405180830381600087803b15156112c957600080fd5b6102c65a03f115156112da57600080fd5b5050505050505050565b60008060008060006112f588611778565b975061130088612b8e565b945061130b86612bd2565b935061131689612bd2565b925061133d836101006040519081016040528154909190829060ff166002811115610fc057fe5b6000600386015460c060020a900460ff16600281111561135957fe5b1461136357600080fd5b60018501546001604060020a038a8116911614156113f0576000845460ff16600281111561138d57fe5b14156113a35761139e8888886130de565b6113eb565b6002845460ff1660028111156113b557fe5b14156113c65761139e88888861310e565b6001845460ff1660028111156113d857fe5b14156113e95761139e888888613337565bfe5b61176d565b6115218560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156114ba57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116114775790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561150d57fe5b600281111561151857fe5b9052508a61345e565b6001604060020a03908116925082146113e9576000845460ff16600281111561154657fe5b14156115775760018501546001604060020a0387811691161461156557fe5b6113eb888887600201805490506134c4565b6001845460ff16600281111561158957fe5b1415611733576116c08560e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561165957602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116116165790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff1660028111156116ac57fe5b60028111156116b757fe5b9052508761345e565b6001604060020a0390811691508114156116f6576116eb8888600185896002018054905003036134c4565b61139e888888613337565b81811115611715576116eb8888600185896002018054905003036134c4565b8181116113eb576113eb8888600184896002018054905003036134c4565b6002845460ff16600281111561174557fe5b14156113e9576117628888600185896002018054905003036134c4565b6113eb8888886135b0565b505050505050505050565b60008060008061178785612b8e565b92506000600384015460c060020a900460ff1660028111156117a557fe5b146117b257849350611939565b600383015460006001604060020a039091161180156117eb57506003830154604060020a90046001604060020a03166117e96138d3565b115b156119085760018301546002840180546118a8926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561188357602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116118405790505b505050506003870154600091508190608060020a90046001604060020a031681612cde565b60038401549092506118e8906001604060020a031660006040518059106118cc5750595b9080825280602002602001820160405250600080866000612cde565b90506118f985828560000154612fce565b80945061190585612b8e565b92505b61191185612c18565b90506001604060020a03808216908616146119355761193585828560000154612fce565b8093505b505050919050565b6001805490818082016119548382613dcb565b916000526020600020906005020160006101006040519081016040528060018152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff191660018360028111156119d357fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611a19929160200190613dfc565b50606082015181600201908051611a34929160200190613dfc565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167f014882843f1e57bd41e0826ad1cd5e6180d4d4f76df8b12edc8b44575322d94e60405160405180910390a2949350505050565b6001546000190190565b600080805b8351831015610ed6576001604060020a03848481518110611b5b57fe5b90602001906020020151169150604060020a848481518110611b7957fe5b90602001906020020151811515611b8c57fe5b049050611b998282610f41565b600190920191611b3e565b6000806001604060020a03851615611dfb57611bbf85612bd2565b90506002815460ff166002811115611bd357fe5b14611bdd57600080fd5b805433600160a060020a039081166101009092041614611bfc57600080fd5b6014611df1826101006040519081016040528154909190829060ff166002811115611c2357fe5b6002811115611c2e57fe5b81526020016000820160019054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cfa5780601f10611ccf57610100808354040283529160200191611cfa565b820191906000526020600020905b815481529060010190602001808311611cdd57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b505050918352505060038201546001604060020a038082166020840152604060020a8204166040830152608060020a900460ff1615156060820152600490910154600160a060020a03166080909101526138d9565b10611dfb57600080fd5b60018054925082808201611e0f8382613dcb565b916000526020600020906005020160006101006040519081016040528060028152600160a060020a03808c166020830152604082018e9052606082018d90526001604060020a03808b1660808401528b1660a0830152600060c0830152881660e09091015291905081518154829060ff19166001836002811115611e8f57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051611ed5929160200190613dfc565b50606082015181600201908051611ef0929160200190613dfc565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0382167fd7db7003e8f35149eda3d3685c2ab151ee561ad34853fdb0f4d7ecb33fff889060405160405180910390a2509695505050505050565b6000611ff982612bd2565b9050612020816101006040519081016040528154909190829060ff166002811115610fc057fe5b60038101805470ff000000000000000000000000000000001916608060020a1790556001604060020a0382167f2d65c225503bd4cd245a36c8030073ddd0fb02c23ce540fcd901e74e5006687c60405160405180910390a25050565b60018054908180820161208f8382613dcb565b916000526020600020906005020160006101006040519081016040528060008152600160a060020a033381166020830152604082018b9052606082018a90526001604060020a0389166080830152600060a0830181905260c0830152871660e09091015291905081518154829060ff1916600183600281111561210e57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181600101908051612154929160200190613dfc565b5060608201518160020190805161216f929160200190613dfc565b50608082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560a08201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060c0820151600382018054911515608060020a0270ff000000000000000000000000000000001990921691909117905560e0820151600491909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550506001604060020a0381167efc763def3c85dbc7bab43e314ba21264ec158217c45cf1eaf94f5ae15bc2c560405160405180910390a2949350505050565b600080805b8351831015610ed6576001604060020a0384848151811061228b57fe5b90602001906020020151169150604060020a8484815181106122a957fe5b906020019060200201518115156122bc57fe5b0490506122c98282610d99565b60019092019161226e565b60045481565b600455565b6000806122eb84611778565b93506122f684612b8e565b6001810154909250612310906001604060020a0316612bd2565b9050612337816101006040519081016040528154909190829060ff166002811115610fc057fe5b6003820154610ed6908590608060020a90046001604060020a031685612fce565b600080805b835182101561239c576001604060020a0384838151811061237a57fe5b9060200190602002015116905061239081611778565b5060019091019061235d565b5050919050565b60008080806001604060020a03861615156123e9576123e66020604051908101604052806000815250602060405190810160405260008082526203f4809061207c565b95505b6123f286612bd2565b9350612419846101006040519081016040528154909190829060ff166002811115610fc057fe5b6000845460ff16600281111561242b57fe5b1461243557600080fd5b3492506000831161244557600080fd5b600254600160a060020a031683156108fc0284604051600060405180830381858888f19350505050151561247857600080fd5b6124a786600060405180591061248b5750595b9080825280602002602001820160405250600080600080612cde565b91506124b282612b8e565b80548401815590506001604060020a03821660007feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a3612505868385886112e4565b505050505050565b600061251886612bd2565b90506001815460ff16600281111561252c57fe5b1461253657600080fd5b805433600160a060020a03908116610100909204161461255557600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612588929160200190613dfc565b506002810183805161259e929160200190613dfc565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f01a3bd608e7be74358498f90bd2ff305f9fdb8e94d76167f40fef03aae56620360405160405180910390a2505050505050565b600080805b8451831015612505576001604060020a0385848151811061261a57fe5b90602001906020020151169150604060020a85848151811061263857fe5b9060200190602002015181151561264b57fe5b04905061265a868383876112e4565b6001909201916125fd565b600061267086612bd2565b90506000815460ff16600281111561268457fe5b1461268e57600080fd5b805433600160a060020a0390811661010090920416146126ad57600080fd5b805461010060a860020a031916610100600160a060020a03871602178155600181018480516126e0929160200190613dfc565b50600281018380516126f6929160200190613dfc565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167fe8da06f5d4d8fa2ef122c9fc3d5ae15379d95f5b9ebf92a5821b57705600320a60405160405180910390a2505050505050565b600254600090819033600160a060020a0390811691161461277057600080fd5b61277984612b8e565b91506001600383015460c060020a900460ff16600281111561279757fe5b146127a157600080fd5b6001820154600283018054612859926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561283457602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116127f15790505b505050506003860154600091508190608060020a90046001604060020a031681612cde565b9050610ec981611778565b60008061286f613db9565b612877613db9565b60008060008060006128888a612bd2565b80546001808301805460ff84169d5061010093849004600160a060020a03169c509394509260029181161590920260001901909116046020601f8201819004810201604051908101604052809291908181526020018280546001816001161561010002031660029004801561293e5780601f106129135761010080835404028352916020019161293e565b820191906000526020600020905b81548152906001019060200180831161292157829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129dd5780601f106129b2576101008083540402835291602001916129dd565b820191906000526020600020905b8154815290600101906020018083116129c057829003601f168201915b5050505060038301546004909301549a9c999b50979990986001604060020a038084169950604060020a8404169750608060020a90920460ff169550600160a060020a03169350915050565b600080805b8351831015610ed6576001604060020a03848481518110612a4b57fe5b90602001906020020151169150604060020a848481518110612a6957fe5b90602001906020020151811515612a7c57fe5b049050612a898282612750565b600190920191612a2e565b6000612a9f86612bd2565b90506002815460ff166002811115612ab357fe5b14612abd57600080fd5b805433600160a060020a039081166101009092041614612adc57600080fd5b805461010060a860020a031916610100600160a060020a0387160217815560018101848051612b0f929160200190613dfc565b5060028101838051612b25929160200190613dfc565b5060038101805467ffffffffffffffff19166001604060020a038481169190911790915586167f035196d5942819024277421e936a2e76840abb7bb5a320924ce0a9826daeba4460405160405180910390a2505050505050565b600254600160a060020a031681565b600080546001604060020a03831610612ba657600080fd5b600080546001604060020a038416908110612bbd57fe5b90600052602060002090600402019050919050565b6001546000906001604060020a03831610612bec57600080fd5b600180546001604060020a038416908110612c0357fe5b90600052602060002090600502019050919050565b600080806001604060020a0384161515612c35576000925061239c565b612c3e84612b8e565b6001810154909250612c58906001604060020a0316612bd2565b90506000815460ff166002811115612c6c57fe5b1415612c7a5783925061239c565b6002815460ff166002811115612c8c57fe5b14612c9357fe5b6001820154612caa906001604060020a0316610cde565b1515612cb85783925061239c565b6003820154612cd690608060020a90046001604060020a0316612c18565b949350505050565b600080600088888888888860405160c060020a6001604060020a03881602815260088101868051906020019060200280838360005b83811015612d2b578082015183820152602001612d13565b50505050905001856001604060020a03166001604060020a031660c060020a028152600801846001604060020a03166001604060020a031660c060020a028152600801836001604060020a03166001604060020a031660c060020a028152600801826002811115612d9857fe5b60ff167f010000000000000000000000000000000000000000000000000000000000000002815260010196505050505050506040519081900390206000818152600360205260408120549193506001604060020a039091169150811115612e0157809250612fc2565b5060008054828252600360205260408220805467ffffffffffffffff19166001604060020a038316179055815490919060018101612e3f8382613e7a565b9160005260206000209060040201600060e060405190810160405280600081526020018d6001604060020a031681526020018c81526020018b6001604060020a031681526020018a6001604060020a03168152602001896001604060020a03168152602001886002811115612eb057fe5b905291905081518155602082015160018201805467ffffffffffffffff19166001604060020a0392909216919091179055604082015181600201908051612efb929160200190613ea6565b50606082015160038201805467ffffffffffffffff19166001604060020a039290921691909117905560808201518160030160086101000a8154816001604060020a0302191690836001604060020a0316021790555060a08201518160030160106101000a8154816001604060020a0302191690836001604060020a0316021790555060c082015160038201805478ff000000000000000000000000000000000000000000000000191660c060020a836002811115612fb657fe5b02179055505050508092505b50509695505050505050565b6000806000612fe06001878787613943565b9250846001604060020a0316866001604060020a0316141561300157612505565b82151561300d57612505565b61301686612b8e565b915061302185612b8e565b82549091508390101561303357600080fd5b815483900382558054830181556001604060020a038086169087167feef5653f9c567b23a97bcfb111bfa6b076a95be73d85d161b4c57149c77b48018560405190815260200160405180910390a361308e6000878786613943565b50505050505050565b8060200151600160a060020a031633600160a060020a031614806130d057508060e00151600160a060020a031633600160a060020a0316145b15156130db57600080fd5b50565b6000610ec982600060405180591061248b5750599080825280602002602001820160405250600080600080612cde565b600080600061311c86612b8e565b925060146132508460e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131ea57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116131a75790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561323d57fe5b600281111561324857fe5b905250613969565b1061325a57600080fd5b61326384610cde565b1561326d57600080fd5b60018301546002840180546132fa926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561188357600091825260209182902080546001604060020a031684529082028301929091600891018084116118405750505050600388015460009250829150608060020a90046001604060020a031681612cde565b915061332a8460006040518059106118cc5750599080825280602002602001820160405250600080866000612cde565b9050612505868287612fce565b6000613341613db9565b60008061334d87612b8e565b60028101549094506014901061336257600080fd5b60028401546001016040518059106133775750595b90808252806020026020018201604052509250600091505b600284015482101561340257600284018054839081106133ab57fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a03168383815181106133e057fe5b6001604060020a0390921660209283029091019091015260019091019061338f565b6002840154859084908151811061341557fe5b6001604060020a039283166020918202909201015260018501546003860154613451929182169186916000918291608060020a90041681612cde565b905061308e878288612fce565b6000805b8360400151518110156134b257826001604060020a03168460400151828151811061348957fe5b906020019060200201516001604060020a031614156134aa578091506134bd565b600101613462565b6001604060020a0391505b5092915050565b60006134ce613db9565b6000806134da87612b8e565b60028101549094508590036040518059106134f25750595b90808252806020026020018201604052509250600091505b6002840154859003821015613580576002840180548390811061352957fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a031683838151811061355e57fe5b6001604060020a0390921660209283029091019091015260019091019061350a565b60018401546003850154613451916001604060020a039081169186916000918291608060020a9091041681612cde565b6000806135bc85612b8e565b915060146136b28360e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131ea57600091825260209182902080546001604060020a031684529082028301929091600891018084116131a75750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561323d57fe5b106136bc57600080fd5b6136c583610cde565b156136cf57600080fd5b60018201546002830180546138bf926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561376257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a03168152602001906008019060208260070104928301926001038202915080841161371f5790505b5050505050856138988660e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820180548060200260200160405190810160405280929190818152602001828054801561383257602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116137ef5790505b505050918352505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561388557fe5b600281111561389057fe5b905250613a94565b6138a06138d3565b6003880154910190608060020a90046001604060020a03166000612cde565b90506138cc858286612fce565b5050505050565b60045490565b6000806002835160028111156138eb57fe5b146138f257fe5b8260a001516001604060020a0316151561390f5760019150610d88565b61391c8360a00151612bd2565b9050610d85816101006040519081016040528154909190829060ff166002811115611c2357fe5b806139518585808685613b1e565b90506139608584868685613b1e565b95945050505050565b6000808260a001516001604060020a031615156139895760009150610d88565b6139968360a00151612b8e565b9050613a8a8160e06040519081016040529081600082015481526020016001820160009054906101000a90046001604060020a03166001604060020a03166001604060020a03168152602001600282018054806020026020016040519081016040528092919081815260200182805480156131ea57600091825260209182902080546001604060020a031684529082028301929091600891018084116131a75750505092845250505060038201546001604060020a038082166020840152604060020a820481166040840152608060020a820416606083015260809091019060c060020a900460ff16600281111561323d57fe5b6001019392505050565b6000806000613aa68460200151612bd2565b60038101546001604060020a031693509150600090505b83604001515181101561239c57613aec84604001518281518110613add57fe5b90602001906020020151612bd2565b60038101549092506001604060020a031683901115613b165760038201546001604060020a031692505b600101613abd565b600080600080866001604060020a0316886001604060020a031614613b4557610100613b48565b60005b61ffff169250849350613b5a88612b8e565b6001810154909250613b7a908a906001604060020a031689898789613c3c565b9350600090505b60028201546001604060020a0382161015613bf557613beb8983600201836001604060020a0316815481101515613bb457fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a0316898985880160010189613c3c565b9350600101613b81565b600382015460006001604060020a039091161115613c30576003820154613c2d908a906001604060020a0316898960ff880189613c3c565b93505b50505095945050505050565b80600080613c4988612bd2565b6004810154909150600160a060020a031615801590613c685750600083115b15612fc2578815613d23576004810154600160a060020a031663d4edf5e5898989898960006040516020015260405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401602060405180830381600087803b1515613cf257600080fd5b6102c65a03f11515613d0357600080fd5b505050604051805192505082821115613d1b57600080fd5b819250612fc2565b6004810154600160a060020a031663ad1483c3898989898960405160e060020a63ffffffff88160281526001604060020a039586166004820152938516602485015291841660448401529092166064820152608481019190915260a401600060405180830381600087803b1515613d9957600080fd5b6102c65a03f11515613daa57600080fd5b50505050509695505050505050565b60206040519081016040526000815290565b815481835581811511613df757600502816005028360005260206000209182019101613df79190613f5a565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613e3d57805160ff1916838001178555613e6a565b82800160010185558215613e6a579182015b82811115613e6a578251825591602001919060010190613e4f565b50613e76929150613fe5565b5090565b815481835581811511613df757600402816004028360005260206000209182019101613df79190613fff565b82805482825590600052602060002090600301600490048101928215613f4e5791602002820160005b83821115613f1957835183826101000a8154816001604060020a0302191690836001604060020a031602179055509260200192600801602081600701049283019260010302613ecf565b8015613f4c5782816101000a8154906001604060020a030219169055600801602081600701049283019260010302613f19565b505b50613e7692915061405f565b610d9691905b80821115613e7657805474ffffffffffffffffffffffffffffffffffffffffff191681556000613f936001830182614084565b613fa1600283016000614084565b5060038101805470ffffffffffffffffffffffffffffffffff1916905560048101805473ffffffffffffffffffffffffffffffffffffffff19169055600501613f60565b610d9691905b80821115613e765760008155600101613feb565b610d9691905b80821115613e7657600080825560018201805467ffffffffffffffff1916905561403260028301826140c8565b5060038101805478ffffffffffffffffffffffffffffffffffffffffffffffffff19169055600401614005565b610d9691905b80821115613e7657805467ffffffffffffffff19168155600101614065565b50805460018160011615610100020316600290046000825580601f106140aa57506130db565b601f0160209004906000526020600020908101906130db9190613fe5565b5080546000825560030160049004906000526020600020908101906130db9190613fe55600a165627a7a723058208fab61608faa4f536bcd27ee6c2e0c6040641a7952c1cb19e89813b919c779c40029" +exports.VaultAbi = [{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}] exports.VaultByteCode = "0x" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" -exports._sha256 = "0x8643563a2200938330cde2fdd1690b36481ede54f2896b3ff6bda1a452f31a55" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" +exports._sha256 = "0xadbfc734d19822f339e380dc20cb738625432599050bc2389bb4ccaea42de465" diff --git a/build/LiquidPledgingMock_all.sol b/build/LiquidPledgingMock_all.sol index a7a5442..e7ebc7f 100644 --- a/build/LiquidPledgingMock_all.sol +++ b/build/LiquidPledgingMock_all.sol @@ -11,13 +11,13 @@ contract ILiquidPledgingPlugin { /// 1 -> Plugin for the first delegate transferring pledge to another party /// 2 -> Plugin for the second delegate transferring pledge to another party /// ... - /// 255 -> Plugin for the intendedCampaign transferring pledge to another party + /// 255 -> Plugin for the intendedProject transferring pledge to another party /// /// 256 -> Plugin for the owner receiving pledge to another party /// 257 -> Plugin for the first delegate receiving pledge to another party /// 258 -> Plugin for the second delegate receiving pledge to another party /// ... - /// 511 -> Plugin for the intendedCampaign receiving pledge to another party + /// 511 -> Plugin for the intendedProject receiving pledge to another party function beforeTransfer( uint64 pledgeManager, uint64 pledgeFrom, @@ -48,22 +48,22 @@ contract Vault { contract LiquidPledgingBase { // Limits inserted to prevent large loops that could prevent canceling uint constant MAX_DELEGATES = 20; - uint constant MAX_SUBCAMPAIGN_LEVEL = 20; - uint constant MAX_INTERCAMPAIGN_LEVEL = 20; + uint constant MAX_SUBPROJECT_LEVEL = 20; + uint constant MAX_INTERPROJECT_LEVEL = 20; - enum PledgeAdminType { Giver, Delegate, Campaign } + enum PledgeAdminType { Giver, Delegate, Project } enum PaymentState { Pledged, Paying, Paid } // TODO name change Pledged /// @dev This struct defines the details of each the PledgeAdmin, these /// PledgeAdmins can own pledges and act as delegates struct PledgeAdmin { // TODO name change PledgeAdmin - PledgeAdminType adminType; // Giver, Delegate or Campaign + PledgeAdminType adminType; // Giver, Delegate or Project address addr; // account or contract address for admin string name; string url; uint64 commitTime; // In seconds, used for Givers' & Delegates' vetos - uint64 parentCampaign; // Only for campaigns - bool canceled; //Always false except for canceled campaigns + uint64 parentProject; // Only for projects + bool canceled; //Always false except for canceled projects ILiquidPledgingPlugin plugin; // if the plugin is 0x0 then nothing happens if its a contract address than that smart contract is called via the milestone contract } @@ -71,8 +71,8 @@ contract LiquidPledgingBase { uint amount; uint64 owner; // PledgeAdmin uint64[] delegationChain; // list of index numbers - uint64 intendedCampaign; // TODO change the name only used for when delegates are precommiting to a campaign - uint64 commitTime; // When the intendedCampaign will become the owner + uint64 intendedProject; // TODO change the name only used for when delegates are precommiting to a project + uint64 commitTime; // When the intendedProject will become the owner uint64 oldPledge; // this points to the Pledge[] index that the Pledge was derived from PaymentState paymentState; } @@ -192,52 +192,52 @@ contract LiquidPledgingBase { event DelegateUpdated(uint64 indexed idDelegate); - /// @notice Creates a new Campaign - function addCampaign(string name, string url, address campaignAdmin, uint64 parentCampaign, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idCampaign) { - if (parentCampaign != 0) { - PledgeAdmin storage pa = findAdmin(parentCampaign); - require(pa.adminType == PledgeAdminType.Campaign); + /// @notice Creates a new Project + function addProject(string name, string url, address projectAdmin, uint64 parentProject, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idProject) { + if (parentProject != 0) { + PledgeAdmin storage pa = findAdmin(parentProject); + require(pa.adminType == PledgeAdminType.Project); require(pa.addr == msg.sender); - require(getCampaignLevel(pa) < MAX_SUBCAMPAIGN_LEVEL); + require(getProjectLevel(pa) < MAX_SUBPROJECT_LEVEL); } - idCampaign = uint64(admins.length); + idProject = uint64(admins.length); admins.push(PledgeAdmin( - PledgeAdminType.Campaign, - campaignAdmin, + PledgeAdminType.Project, + projectAdmin, name, url, commitTime, - parentCampaign, + parentProject, false, plugin)); - CampaignAdded(idCampaign); + ProjectAdded(idProject); } - event CampaignAdded(uint64 indexed idCampaign); + event ProjectAdded(uint64 indexed idProject); - ///@notice Changes the address, name or commitTime associated with a specific Campaign - function updateCampaign( - uint64 idCampaign, + ///@notice Changes the address, name or commitTime associated with a specific Project + function updateProject( + uint64 idProject, address newAddr, string newName, string newUrl, uint64 newCommitTime) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - require(campaign.adminType == PledgeAdminType.Campaign); - require(campaign.addr == msg.sender); - campaign.addr = newAddr; - campaign.name = newName; - campaign.url = newUrl; - campaign.commitTime = newCommitTime; - CampaignUpdated(idCampaign); + PledgeAdmin storage project = findAdmin(idProject); + require(project.adminType == PledgeAdminType.Project); + require(project.addr == msg.sender); + project.addr = newAddr; + project.name = newName; + project.url = newUrl; + project.commitTime = newCommitTime; + ProjectUpdated(idProject); } - event CampaignUpdated(uint64 indexed idAdmin); + event ProjectUpdated(uint64 indexed idAdmin); ////////// @@ -253,7 +253,7 @@ contract LiquidPledgingBase { uint amount, uint64 owner, uint64 nDelegates, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paymentState @@ -262,7 +262,7 @@ contract LiquidPledgingBase { amount = n.amount; owner = n.owner; nDelegates = uint64(n.delegationChain.length); - intendedCampaign = n.intendedCampaign; + intendedProject = n.intendedProject; commitTime = n.commitTime; oldPledge = n.oldPledge; paymentState = n.paymentState; @@ -291,7 +291,7 @@ contract LiquidPledgingBase { string name, string url, uint64 commitTime, - uint64 parentCampaign, + uint64 parentProject, bool canceled, address plugin) { @@ -301,7 +301,7 @@ contract LiquidPledgingBase { name = m.name; url = m.url; commitTime = m.commitTime; - parentCampaign = m.parentCampaign; + parentProject = m.parentProject; canceled = m.canceled; plugin = address(m.plugin); } @@ -317,18 +317,18 @@ contract LiquidPledgingBase { function findOrCreatePledge( uint64 owner, uint64[] delegationChain, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paid ) internal returns (uint64) { - bytes32 hPledge = sha3(owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid); + bytes32 hPledge = sha3(owner, delegationChain, intendedProject, commitTime, oldPledge, paid); uint64 idx = hPledge2idx[hPledge]; if (idx > 0) return idx; idx = uint64(pledges.length); hPledge2idx[hPledge] = idx; - pledges.push(Pledge(0, owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid)); + pledges.push(Pledge(0, owner, delegationChain, intendedProject, commitTime, oldPledge, paid)); return idx; } @@ -355,7 +355,7 @@ contract LiquidPledgingBase { } // helper function that returns the pledge level solely to check that transfers - // between Campaigns not violate MAX_INTERCAMPAIGN_LEVEL + // between Projects not violate MAX_INTERPROJECT_LEVEL function getPledgeLevel(Pledge n) internal returns(uint) { if (n.oldPledge == 0) return 0; //changed Pledge storage oldN = findPledge(n.oldPledge); @@ -374,25 +374,25 @@ contract LiquidPledgingBase { } } - // helper function that returns the campaign level solely to check that there - // are not too many Campaigns that violate MAX_SUBCAMPAIGNS_LEVEL - function getCampaignLevel(PledgeAdmin m) internal returns(uint) { - assert(m.adminType == PledgeAdminType.Campaign); - if (m.parentCampaign == 0) return(1); - PledgeAdmin storage parentNM = findAdmin(m.parentCampaign); - return getCampaignLevel(parentNM); + // helper function that returns the project level solely to check that there + // are not too many Projects that violate MAX_SUBCAMPAIGNS_LEVEL + function getProjectLevel(PledgeAdmin m) internal returns(uint) { + assert(m.adminType == PledgeAdminType.Project); + if (m.parentProject == 0) return(1); + PledgeAdmin storage parentNM = findAdmin(m.parentProject); + return getProjectLevel(parentNM); } - function isCampaignCanceled(uint64 campaignId) constant returns (bool) { - PledgeAdmin storage m = findAdmin(campaignId); + function isProjectCanceled(uint64 projectId) constant returns (bool) { + PledgeAdmin storage m = findAdmin(projectId); if (m.adminType == PledgeAdminType.Giver) return false; - assert(m.adminType == PledgeAdminType.Campaign); + assert(m.adminType == PledgeAdminType.Project); if (m.canceled) return true; - if (m.parentCampaign == 0) return false; - return isCampaignCanceled(m.parentCampaign); + if (m.parentProject == 0) return false; + return isProjectCanceled(m.parentProject); } - // @notice A helper function for canceling campaigns + // @notice A helper function for canceling projects // @param idPledge the pledge that may or may not be canceled function getOldestPledgeNotCanceled(uint64 idPledge) internal constant returns(uint64) { //todo rename if (idPledge == 0) return 0; @@ -400,9 +400,9 @@ contract LiquidPledgingBase { PledgeAdmin storage admin = findAdmin(n.owner); if (admin.adminType == PledgeAdminType.Giver) return idPledge; - assert(admin.adminType == PledgeAdminType.Campaign); + assert(admin.adminType == PledgeAdminType.Project); - if (!isCampaignCanceled(n.owner)) return idPledge; + if (!isProjectCanceled(n.owner)) return idPledge; return getOldestPledgeNotCanceled(n.oldPledge); } @@ -435,7 +435,7 @@ contract LiquidPledging is LiquidPledgingBase { /// transfer is done to the idReceiver /// @param idGiver Identifier of the giver thats donating. /// @param idReceiver To whom it's transfered. Can be the same giver, another - /// giver, a delegate or a campaign + /// giver, a delegate or a project function donate(uint64 idGiver, uint64 idReceiver) payable { if (idGiver == 0) { @@ -472,12 +472,12 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice Moves value between pledges - /// @param idSender ID of the giver, delegate or campaign admin that is transferring + /// @param idSender ID of the giver, delegate or project admin that is transferring /// the funds from Pledge to Pledge. This admin must have permissions to move the value /// @param idPledge Id of the pledge that's moving the value /// @param amount Quantity of value that's being moved /// @param idReceiver Destination of the value, can be a giver sending to a giver or - /// a delegate, a delegate to another delegate or a campaign to precommit it to that campaign + /// a delegate, a delegate to another delegate or a project to precommit it to that project function transfer(uint64 idSender, uint64 idPledge, uint amount, uint64 idReceiver) { idPledge = normalizePledge(idPledge); @@ -493,8 +493,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { if (n.owner == idSender) { if (receiver.adminType == PledgeAdminType.Giver) { transferOwnershipToGiver(idPledge, amount, idReceiver); - } else if (receiver.adminType == PledgeAdminType.Campaign) { - transferOwnershipToCampaign(idPledge, amount, idReceiver); + } else if (receiver.adminType == PledgeAdminType.Project) { + transferOwnershipToProject(idPledge, amount, idReceiver); } else if (receiver.adminType == PledgeAdminType.Delegate) { appendDelegate(idPledge, amount, idReceiver); } else { @@ -542,11 +542,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { return; } - // If the delegate wants to support a campaign, they undelegate all - // the delegates after them in the chain and choose a campaign - if (receiver.adminType == PledgeAdminType.Campaign) { + // If the delegate wants to support a project, they undelegate all + // the delegates after them in the chain and choose a project + if (receiver.adminType == PledgeAdminType.Project) { undelegate(idPledge, amount, n.delegationChain.length - senderDIdx - 1); - proposeAssignCampaign(idPledge, amount, idReceiver); + proposeAssignProject(idPledge, amount, idReceiver); return; } } @@ -555,7 +555,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice This method is used to withdraw value from the system. This can be used - /// by the givers to avoid committing the donation or by campaign admin to use + /// by the givers to avoid committing the donation or by project admin to use /// the Ether. /// @param idPledge Id of the pledge that wants to be withdrawn. /// @param amount Quantity of Ether that wants to be withdrawn. @@ -593,7 +593,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); - // Check the campaign is not canceled in the while. + // Check the project is not canceled in the while. require(getOldestPledgeNotCanceled(idPledge) == idPledge); uint64 idNewPledge = findOrCreatePledge( @@ -616,7 +616,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); //TODO change to revert - // When a payment is canceled, never is assigned to a campaign. + // When a payment is canceled, never is assigned to a project. uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -631,14 +631,14 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { doTransfer(idPledge, oldPledge, amount); } - /// @notice Method called to cancel this campaign. - /// @param idCampaign Id of the projct that wants to be canceled. - function cancelCampaign(uint64 idCampaign) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - checkAdminOwner(campaign); - campaign.canceled = true; + /// @notice Method called to cancel this project. + /// @param idProject Id of the projct that wants to be canceled. + function cancelProject(uint64 idProject) { + PledgeAdmin storage project = findAdmin(idProject); + checkAdminOwner(project); + project.canceled = true; - CancelCampaign(idCampaign); + CancelProject(idProject); } @@ -711,11 +711,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // this function is obvious, but it can also be called to undelegate everyone // by setting yourself as the idReceiver - function transferOwnershipToCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal { + function transferOwnershipToProject(uint64 idPledge, uint amount, uint64 idReceiver) internal { Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_INTERCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_INTERPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 oldPledge = findOrCreatePledge( n.owner, @@ -785,11 +785,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } - function proposeAssignCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename + function proposeAssignProject(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_SUBCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_SUBPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 toPledge = findOrCreatePledge( n.owner, @@ -816,10 +816,10 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } // This function does 2 things, #1: it checks to make sure that the pledges are correct - // if the a pledged campaign has already been committed then it changes the owner - // to be the proposed campaign (Pledge that the UI will have to read the commit time and manually + // if the a pledged project has already been committed then it changes the owner + // to be the proposed project (Pledge that the UI will have to read the commit time and manually // do what this function does to the pledge for the end user at the expiration of the commitTime) - // #2: It checks to make sure that if there has been a cancellation in the chain of campaigns, + // #2: It checks to make sure that if there has been a cancellation in the chain of projects, // then it adjusts the pledge's owner appropriately. // This call can be called from any body at any time on any pledge. In general it can be called // to force the calls of the affected plugins, which also need to be predicted by the UI @@ -829,8 +829,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // Check to make sure this pledge hasnt already been used or is in the process of being used if (n.paymentState != PaymentState.Pledged) return idPledge; - // First send to a campaign if it's proposed and commited - if ((n.intendedCampaign > 0) && ( getTime() > n.commitTime)) { + // First send to a project if it's proposed and commited + if ((n.intendedProject > 0) && ( getTime() > n.commitTime)) { uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -839,7 +839,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { n.oldPledge, PaymentState.Pledged); uint64 toPledge = findOrCreatePledge( - n.intendedCampaign, + n.intendedProject, new uint64[](0), 0, 0, @@ -888,8 +888,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { allowedAmount = callPlugin(before, n.delegationChain[i], fromPledge, toPledge, offset + i+1, allowedAmount); } - if (n.intendedCampaign > 0) { - allowedAmount = callPlugin(before, n.intendedCampaign, fromPledge, toPledge, offset + 255, allowedAmount); + if (n.intendedProject > 0) { + allowedAmount = callPlugin(before, n.intendedProject, fromPledge, toPledge, offset + 255, allowedAmount); } } @@ -909,7 +909,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } event Transfer(uint64 indexed from, uint64 indexed to, uint amount); - event CancelCampaign(uint64 indexed idCampaign); + event CancelProject(uint64 indexed idProject); } diff --git a/build/LiquidPledging_all.sol b/build/LiquidPledging_all.sol index c29f076..a496947 100644 --- a/build/LiquidPledging_all.sol +++ b/build/LiquidPledging_all.sol @@ -11,13 +11,13 @@ contract ILiquidPledgingPlugin { /// 1 -> Plugin for the first delegate transferring pledge to another party /// 2 -> Plugin for the second delegate transferring pledge to another party /// ... - /// 255 -> Plugin for the intendedCampaign transferring pledge to another party + /// 255 -> Plugin for the intendedProject transferring pledge to another party /// /// 256 -> Plugin for the owner receiving pledge to another party /// 257 -> Plugin for the first delegate receiving pledge to another party /// 258 -> Plugin for the second delegate receiving pledge to another party /// ... - /// 511 -> Plugin for the intendedCampaign receiving pledge to another party + /// 511 -> Plugin for the intendedProject receiving pledge to another party function beforeTransfer( uint64 pledgeManager, uint64 pledgeFrom, @@ -48,22 +48,22 @@ contract Vault { contract LiquidPledgingBase { // Limits inserted to prevent large loops that could prevent canceling uint constant MAX_DELEGATES = 20; - uint constant MAX_SUBCAMPAIGN_LEVEL = 20; - uint constant MAX_INTERCAMPAIGN_LEVEL = 20; + uint constant MAX_SUBPROJECT_LEVEL = 20; + uint constant MAX_INTERPROJECT_LEVEL = 20; - enum PledgeAdminType { Giver, Delegate, Campaign } + enum PledgeAdminType { Giver, Delegate, Project } enum PaymentState { Pledged, Paying, Paid } // TODO name change Pledged /// @dev This struct defines the details of each the PledgeAdmin, these /// PledgeAdmins can own pledges and act as delegates struct PledgeAdmin { // TODO name change PledgeAdmin - PledgeAdminType adminType; // Giver, Delegate or Campaign + PledgeAdminType adminType; // Giver, Delegate or Project address addr; // account or contract address for admin string name; string url; uint64 commitTime; // In seconds, used for Givers' & Delegates' vetos - uint64 parentCampaign; // Only for campaigns - bool canceled; //Always false except for canceled campaigns + uint64 parentProject; // Only for projects + bool canceled; //Always false except for canceled projects ILiquidPledgingPlugin plugin; // if the plugin is 0x0 then nothing happens if its a contract address than that smart contract is called via the milestone contract } @@ -71,8 +71,8 @@ contract LiquidPledgingBase { uint amount; uint64 owner; // PledgeAdmin uint64[] delegationChain; // list of index numbers - uint64 intendedCampaign; // TODO change the name only used for when delegates are precommiting to a campaign - uint64 commitTime; // When the intendedCampaign will become the owner + uint64 intendedProject; // TODO change the name only used for when delegates are precommiting to a project + uint64 commitTime; // When the intendedProject will become the owner uint64 oldPledge; // this points to the Pledge[] index that the Pledge was derived from PaymentState paymentState; } @@ -192,52 +192,52 @@ contract LiquidPledgingBase { event DelegateUpdated(uint64 indexed idDelegate); - /// @notice Creates a new Campaign - function addCampaign(string name, string url, address campaignAdmin, uint64 parentCampaign, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idCampaign) { - if (parentCampaign != 0) { - PledgeAdmin storage pa = findAdmin(parentCampaign); - require(pa.adminType == PledgeAdminType.Campaign); + /// @notice Creates a new Project + function addProject(string name, string url, address projectAdmin, uint64 parentProject, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idProject) { + if (parentProject != 0) { + PledgeAdmin storage pa = findAdmin(parentProject); + require(pa.adminType == PledgeAdminType.Project); require(pa.addr == msg.sender); - require(getCampaignLevel(pa) < MAX_SUBCAMPAIGN_LEVEL); + require(getProjectLevel(pa) < MAX_SUBPROJECT_LEVEL); } - idCampaign = uint64(admins.length); + idProject = uint64(admins.length); admins.push(PledgeAdmin( - PledgeAdminType.Campaign, - campaignAdmin, + PledgeAdminType.Project, + projectAdmin, name, url, commitTime, - parentCampaign, + parentProject, false, plugin)); - CampaignAdded(idCampaign); + ProjectAdded(idProject); } - event CampaignAdded(uint64 indexed idCampaign); + event ProjectAdded(uint64 indexed idProject); - ///@notice Changes the address, name or commitTime associated with a specific Campaign - function updateCampaign( - uint64 idCampaign, + ///@notice Changes the address, name or commitTime associated with a specific Project + function updateProject( + uint64 idProject, address newAddr, string newName, string newUrl, uint64 newCommitTime) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - require(campaign.adminType == PledgeAdminType.Campaign); - require(campaign.addr == msg.sender); - campaign.addr = newAddr; - campaign.name = newName; - campaign.url = newUrl; - campaign.commitTime = newCommitTime; - CampaignUpdated(idCampaign); + PledgeAdmin storage project = findAdmin(idProject); + require(project.adminType == PledgeAdminType.Project); + require(project.addr == msg.sender); + project.addr = newAddr; + project.name = newName; + project.url = newUrl; + project.commitTime = newCommitTime; + ProjectUpdated(idProject); } - event CampaignUpdated(uint64 indexed idAdmin); + event ProjectUpdated(uint64 indexed idAdmin); ////////// @@ -253,7 +253,7 @@ contract LiquidPledgingBase { uint amount, uint64 owner, uint64 nDelegates, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paymentState @@ -262,7 +262,7 @@ contract LiquidPledgingBase { amount = n.amount; owner = n.owner; nDelegates = uint64(n.delegationChain.length); - intendedCampaign = n.intendedCampaign; + intendedProject = n.intendedProject; commitTime = n.commitTime; oldPledge = n.oldPledge; paymentState = n.paymentState; @@ -291,7 +291,7 @@ contract LiquidPledgingBase { string name, string url, uint64 commitTime, - uint64 parentCampaign, + uint64 parentProject, bool canceled, address plugin) { @@ -301,7 +301,7 @@ contract LiquidPledgingBase { name = m.name; url = m.url; commitTime = m.commitTime; - parentCampaign = m.parentCampaign; + parentProject = m.parentProject; canceled = m.canceled; plugin = address(m.plugin); } @@ -317,18 +317,18 @@ contract LiquidPledgingBase { function findOrCreatePledge( uint64 owner, uint64[] delegationChain, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paid ) internal returns (uint64) { - bytes32 hPledge = sha3(owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid); + bytes32 hPledge = sha3(owner, delegationChain, intendedProject, commitTime, oldPledge, paid); uint64 idx = hPledge2idx[hPledge]; if (idx > 0) return idx; idx = uint64(pledges.length); hPledge2idx[hPledge] = idx; - pledges.push(Pledge(0, owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid)); + pledges.push(Pledge(0, owner, delegationChain, intendedProject, commitTime, oldPledge, paid)); return idx; } @@ -355,7 +355,7 @@ contract LiquidPledgingBase { } // helper function that returns the pledge level solely to check that transfers - // between Campaigns not violate MAX_INTERCAMPAIGN_LEVEL + // between Projects not violate MAX_INTERPROJECT_LEVEL function getPledgeLevel(Pledge n) internal returns(uint) { if (n.oldPledge == 0) return 0; //changed Pledge storage oldN = findPledge(n.oldPledge); @@ -374,25 +374,25 @@ contract LiquidPledgingBase { } } - // helper function that returns the campaign level solely to check that there - // are not too many Campaigns that violate MAX_SUBCAMPAIGNS_LEVEL - function getCampaignLevel(PledgeAdmin m) internal returns(uint) { - assert(m.adminType == PledgeAdminType.Campaign); - if (m.parentCampaign == 0) return(1); - PledgeAdmin storage parentNM = findAdmin(m.parentCampaign); - return getCampaignLevel(parentNM); + // helper function that returns the project level solely to check that there + // are not too many Projects that violate MAX_SUBCAMPAIGNS_LEVEL + function getProjectLevel(PledgeAdmin m) internal returns(uint) { + assert(m.adminType == PledgeAdminType.Project); + if (m.parentProject == 0) return(1); + PledgeAdmin storage parentNM = findAdmin(m.parentProject); + return getProjectLevel(parentNM); } - function isCampaignCanceled(uint64 campaignId) constant returns (bool) { - PledgeAdmin storage m = findAdmin(campaignId); + function isProjectCanceled(uint64 projectId) constant returns (bool) { + PledgeAdmin storage m = findAdmin(projectId); if (m.adminType == PledgeAdminType.Giver) return false; - assert(m.adminType == PledgeAdminType.Campaign); + assert(m.adminType == PledgeAdminType.Project); if (m.canceled) return true; - if (m.parentCampaign == 0) return false; - return isCampaignCanceled(m.parentCampaign); + if (m.parentProject == 0) return false; + return isProjectCanceled(m.parentProject); } - // @notice A helper function for canceling campaigns + // @notice A helper function for canceling projects // @param idPledge the pledge that may or may not be canceled function getOldestPledgeNotCanceled(uint64 idPledge) internal constant returns(uint64) { //todo rename if (idPledge == 0) return 0; @@ -400,9 +400,9 @@ contract LiquidPledgingBase { PledgeAdmin storage admin = findAdmin(n.owner); if (admin.adminType == PledgeAdminType.Giver) return idPledge; - assert(admin.adminType == PledgeAdminType.Campaign); + assert(admin.adminType == PledgeAdminType.Project); - if (!isCampaignCanceled(n.owner)) return idPledge; + if (!isProjectCanceled(n.owner)) return idPledge; return getOldestPledgeNotCanceled(n.oldPledge); } @@ -435,7 +435,7 @@ contract LiquidPledging is LiquidPledgingBase { /// transfer is done to the idReceiver /// @param idGiver Identifier of the giver thats donating. /// @param idReceiver To whom it's transfered. Can be the same giver, another - /// giver, a delegate or a campaign + /// giver, a delegate or a project function donate(uint64 idGiver, uint64 idReceiver) payable { if (idGiver == 0) { @@ -472,12 +472,12 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice Moves value between pledges - /// @param idSender ID of the giver, delegate or campaign admin that is transferring + /// @param idSender ID of the giver, delegate or project admin that is transferring /// the funds from Pledge to Pledge. This admin must have permissions to move the value /// @param idPledge Id of the pledge that's moving the value /// @param amount Quantity of value that's being moved /// @param idReceiver Destination of the value, can be a giver sending to a giver or - /// a delegate, a delegate to another delegate or a campaign to precommit it to that campaign + /// a delegate, a delegate to another delegate or a project to precommit it to that project function transfer(uint64 idSender, uint64 idPledge, uint amount, uint64 idReceiver) { idPledge = normalizePledge(idPledge); @@ -493,8 +493,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { if (n.owner == idSender) { if (receiver.adminType == PledgeAdminType.Giver) { transferOwnershipToGiver(idPledge, amount, idReceiver); - } else if (receiver.adminType == PledgeAdminType.Campaign) { - transferOwnershipToCampaign(idPledge, amount, idReceiver); + } else if (receiver.adminType == PledgeAdminType.Project) { + transferOwnershipToProject(idPledge, amount, idReceiver); } else if (receiver.adminType == PledgeAdminType.Delegate) { appendDelegate(idPledge, amount, idReceiver); } else { @@ -542,11 +542,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { return; } - // If the delegate wants to support a campaign, they undelegate all - // the delegates after them in the chain and choose a campaign - if (receiver.adminType == PledgeAdminType.Campaign) { + // If the delegate wants to support a project, they undelegate all + // the delegates after them in the chain and choose a project + if (receiver.adminType == PledgeAdminType.Project) { undelegate(idPledge, amount, n.delegationChain.length - senderDIdx - 1); - proposeAssignCampaign(idPledge, amount, idReceiver); + proposeAssignProject(idPledge, amount, idReceiver); return; } } @@ -555,7 +555,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice This method is used to withdraw value from the system. This can be used - /// by the givers to avoid committing the donation or by campaign admin to use + /// by the givers to avoid committing the donation or by project admin to use /// the Ether. /// @param idPledge Id of the pledge that wants to be withdrawn. /// @param amount Quantity of Ether that wants to be withdrawn. @@ -593,7 +593,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); - // Check the campaign is not canceled in the while. + // Check the project is not canceled in the while. require(getOldestPledgeNotCanceled(idPledge) == idPledge); uint64 idNewPledge = findOrCreatePledge( @@ -616,7 +616,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); //TODO change to revert - // When a payment is canceled, never is assigned to a campaign. + // When a payment is canceled, never is assigned to a project. uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -631,14 +631,14 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { doTransfer(idPledge, oldPledge, amount); } - /// @notice Method called to cancel this campaign. - /// @param idCampaign Id of the projct that wants to be canceled. - function cancelCampaign(uint64 idCampaign) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - checkAdminOwner(campaign); - campaign.canceled = true; + /// @notice Method called to cancel this project. + /// @param idProject Id of the projct that wants to be canceled. + function cancelProject(uint64 idProject) { + PledgeAdmin storage project = findAdmin(idProject); + checkAdminOwner(project); + project.canceled = true; - CancelCampaign(idCampaign); + CancelProject(idProject); } @@ -711,11 +711,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // this function is obvious, but it can also be called to undelegate everyone // by setting yourself as the idReceiver - function transferOwnershipToCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal { + function transferOwnershipToProject(uint64 idPledge, uint amount, uint64 idReceiver) internal { Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_INTERCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_INTERPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 oldPledge = findOrCreatePledge( n.owner, @@ -785,11 +785,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } - function proposeAssignCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename + function proposeAssignProject(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_SUBCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_SUBPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 toPledge = findOrCreatePledge( n.owner, @@ -816,10 +816,10 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } // This function does 2 things, #1: it checks to make sure that the pledges are correct - // if the a pledged campaign has already been committed then it changes the owner - // to be the proposed campaign (Pledge that the UI will have to read the commit time and manually + // if the a pledged project has already been committed then it changes the owner + // to be the proposed project (Pledge that the UI will have to read the commit time and manually // do what this function does to the pledge for the end user at the expiration of the commitTime) - // #2: It checks to make sure that if there has been a cancellation in the chain of campaigns, + // #2: It checks to make sure that if there has been a cancellation in the chain of projects, // then it adjusts the pledge's owner appropriately. // This call can be called from any body at any time on any pledge. In general it can be called // to force the calls of the affected plugins, which also need to be predicted by the UI @@ -829,8 +829,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // Check to make sure this pledge hasnt already been used or is in the process of being used if (n.paymentState != PaymentState.Pledged) return idPledge; - // First send to a campaign if it's proposed and commited - if ((n.intendedCampaign > 0) && ( getTime() > n.commitTime)) { + // First send to a project if it's proposed and commited + if ((n.intendedProject > 0) && ( getTime() > n.commitTime)) { uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -839,7 +839,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { n.oldPledge, PaymentState.Pledged); uint64 toPledge = findOrCreatePledge( - n.intendedCampaign, + n.intendedProject, new uint64[](0), 0, 0, @@ -888,8 +888,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { allowedAmount = callPlugin(before, n.delegationChain[i], fromPledge, toPledge, offset + i+1, allowedAmount); } - if (n.intendedCampaign > 0) { - allowedAmount = callPlugin(before, n.intendedCampaign, fromPledge, toPledge, offset + 255, allowedAmount); + if (n.intendedProject > 0) { + allowedAmount = callPlugin(before, n.intendedProject, fromPledge, toPledge, offset + 255, allowedAmount); } } @@ -909,6 +909,6 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } event Transfer(uint64 indexed from, uint64 indexed to, uint amount); - event CancelCampaign(uint64 indexed idCampaign); + event CancelProject(uint64 indexed idProject); } diff --git a/build/Owned.sol.js b/build/Owned.sol.js index 61f3ab3..fbdd78d 100644 --- a/build/Owned.sol.js +++ b/build/Owned.sol.js @@ -1,6 +1,6 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.OwnedAbi = [{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"}] -exports.OwnedByteCode = "0x6060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6101d18061003c6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166379ba5097811461005e5780638da5cb5b14610073578063a6f9dae1146100a2578063d4ee1d90146100c3575b600080fd5b341561006957600080fd5b6100716100f2565b005b341561007e57600080fd5b61008661013f565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610071600160a060020a036004351661014e565b005b34156100ce57600080fd5b610086610196565b604051600160a060020a03909116815260200160405180910390f35b60015433600160a060020a0390811691161461010d57600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461016957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600154600160a060020a0316815600a165627a7a72305820e68440031004354b3db9d740fb2b8896f5bedd56653beb65edd62e94e414a7ad0029" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" +exports.OwnedAbi = [{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] +exports.OwnedByteCode = "0x6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091161790556101b38061003b6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166379ba5097811461005d5780638da5cb5b14610072578063a6f9dae1146100a1578063d4ee1d90146100c057600080fd5b341561006857600080fd5b6100706100d3565b005b341561007d57600080fd5b61008561011f565b604051600160a060020a03909116815260200160405180910390f35b34156100ac57600080fd5b610070600160a060020a036004351661012e565b34156100cb57600080fd5b610085610178565b60015433600160a060020a039081169116146100ee57600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600054600160a060020a031681565b60005433600160a060020a0390811691161461014957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316815600a165627a7a72305820cc9dc6586bdf997796667e5b08982f8474a9ec8a171c6a961d795c3bf5ac144c0029" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" exports._sha256 = "0xf61824cbb7f4765beceba9899e284825b9c60abba4179558d6b40e6976076b6b" diff --git a/build/Vault.sol.js b/build/Vault.sol.js index 54d8914..e2f37fb 100644 --- a/build/Vault.sol.js +++ b/build/Vault.sol.js @@ -1,10 +1,10 @@ /* This is an autogenerated file. DO NOT EDIT MANUALLY */ -exports.LiquidPledgingAbi = [{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"}] +exports.LiquidPledgingAbi = [{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idNote","type":"uint64"},{"name":"amount","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}] exports.LiquidPledgingByteCode = "0x" -exports.OwnedAbi = [{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"}] -exports.OwnedByteCode = "0x6060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b6101d18061003c6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166379ba5097811461005e5780638da5cb5b14610073578063a6f9dae1146100a2578063d4ee1d90146100c3575b600080fd5b341561006957600080fd5b6100716100f2565b005b341561007e57600080fd5b61008661013f565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610071600160a060020a036004351661014e565b005b34156100ce57600080fd5b610086610196565b604051600160a060020a03909116815260200160405180910390f35b60015433600160a060020a0390811691161461010d57600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461016957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600154600160a060020a0316815600a165627a7a723058206a8fea8a6be1bef5d767c60630c0553a5c81aea6d4751c10e110a74f895c33830029" -exports.VaultAbi = [{"constant":true,"inputs":[],"name":"nPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"liquidPledging","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"payments","outputs":[{"name":"state","type":"uint8"},{"name":"ref","type":"bytes32"},{"name":"dest","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_automatic","type":"bool"}],"name":"setAutopay","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"multiCancel","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"autoPay","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"VaultMock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newLiquidPledging","type":"address"}],"name":"setLiquidPledging","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"multiConfirm","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"ConfirmPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"CancelPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"ref","type":"bytes32"},{"indexed":true,"name":"dest","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AuthorizePayment","type":"event"}] -exports.VaultByteCode = "0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610b0e806100316000396000f300606060405236156100ca5763ffffffff60e060020a6000350416633baf35fb81146100ce57806374041d1f146100f357806379ba5097146101225780638422927d14610137578063876ca09f1461014f57806387d81789146101675780638da5cb5b146101c5578063a4500c33146101f4578063a6f9dae11461020e578063b796105c1461022f578063bb4f28df14610280578063bbc32820146102b7578063cd6b8caf146102de578063d4ee1d90146102f3578063e99996b114610322578063ffd82d2114610343575b5b5b005b34156100d957600080fd5b6100e1610394565b60405190815260200160405180910390f35b34156100fe57600080fd5b61010661039b565b604051600160a060020a03909116815260200160405180910390f35b341561012d57600080fd5b6100ca6103aa565b005b341561014257600080fd5b6100ca6004356103f7565b005b341561015a57600080fd5b6100ca600435610420565b005b341561017257600080fd5b61017d600435610449565b6040518085600281111561018d57fe5b60ff168152602081019490945250600160a060020a039091166040808401919091526060830191909152608090910191505180910390f35b34156101d057600080fd5b610106610490565b604051600160a060020a03909116815260200160405180910390f35b34156101ff57600080fd5b6100ca600435151561049f565b005b341561021957600080fd5b6100ca600160a060020a03600435166104f8565b005b341561023a57600080fd5b6100ca600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061054095505050505050565b005b341561028b57600080fd5b6100e1600435600160a060020a0360243516604435610596565b60405190815260200160405180910390f35b34156102c257600080fd5b6102ca61071f565b604051901515815260200160405180910390f35b34156102e957600080fd5b6100ca6103f5565b005b34156102fe57600080fd5b610106610743565b604051600160a060020a03909116815260200160405180910390f35b341561032d57600080fd5b6100ca600160a060020a0360043516610752565b005b341561034e57600080fd5b6100ca60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506107b095505050505050565b005b6003545b90565b600254600160a060020a031681565b60015433600160a060020a039081169116146103c557600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b60005433600160a060020a0390811691161461041257600080fd5b61041b81610806565b5b5b50565b60005433600160a060020a0390811691161461043b57600080fd5b61041b81610914565b5b5b50565b600380548290811061045757fe5b906000526020600020906004020160005b5080546001820154600283015460039093015460ff909216935091600160a060020a03169084565b600054600160a060020a031681565b60005433600160a060020a039081169116146104ba57600080fd5b6002805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000831515021790555b5b50565b60005433600160a060020a0390811691161461051357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6000805433600160a060020a0390811691161461055c57600080fd5b5060005b81518110156105905761058782828151811061057857fe5b90602001906020020151610806565b5b600101610560565b5b5b5050565b600254600090819033600160a060020a039081169116146105b657600080fd5b50600380549081906105cb9060018301610a5e565b5060006003828154811015156105dd57fe5b906000526020600020906004020160005b50805460ff1916600183600281111561060357fe5b02179055508460038281548110151561061857fe5b906000526020600020906004020160005b5060010155600380548591908390811061063f57fe5b906000526020600020906004020160005b50600201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055600380548491908390811061069057fe5b906000526020600020906004020160005b5060030155600160a060020a03841685827fb025fbd648b47675e5160bb9a938180cda38f285280e390d3aac0c3c0002ba088660405190815260200160405180910390a460025474010000000000000000000000000000000000000000900460ff16156107115761071181610914565b5b8091505b5b509392505050565b60025474010000000000000000000000000000000000000000900460ff1681565b5b565b600154600160a060020a031681565b60005433600160a060020a0390811691161461076d57600080fd5b600254600160a060020a03161561078357600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6000805433600160a060020a039081169116146107cc57600080fd5b5060005b8151811015610590576107f78282815181106107e857fe5b90602001906020020151610914565b5b6001016107d0565b5b5b5050565b600354600090821061081757600080fd5b600380548390811061082557fe5b906000526020600020906004020160005b50905060005b815460ff16600281111561084c57fe5b1461085657600080fd5b8054600290829060ff19166001835b021790555060025460018201546003830154600160a060020a039092169163e9c211e2919060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15156108ce57600080fd5b6102c65a03f115156108df57600080fd5b505050817ff1a1a3c38f42dc56b083903c7f8fb342b64c15e710c3a4179a4ba5c36733e91d60405160405180910390a25b5050565b600354600090821061092557600080fd5b600380548390811061093357fe5b906000526020600020906004020160005b50905060005b815460ff16600281111561095a57fe5b1461096457600080fd5b8054600190829060ff191682805b021790555060028101546003820154600160a060020a039091169080156108fc0290604051600060405180830381858888f1935050505015156109b457600080fd5b60025460018201546003830154600160a060020a0390921691632ee88808919060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1515610a1857600080fd5b6102c65a03f11515610a2957600080fd5b505050817fe46ac4851953c525120fe90499f529bf6236f067292c975d33ad0afb2c585be660405160405180910390a25b5050565b815481835581811511610a8a57600402816004028360005260206000209182019101610a8a9190610a90565b5b505050565b61039891905b80821115610adb57805460ff1916815560006001820181905560028201805473ffffffffffffffffffffffffffffffffffffffff191690556003820155600401610a96565b5090565b905600a165627a7a7230582089d4f70c572dccc9382e705b36c8488331b5d5488a6793173458a9da9f0cb0c80029" -exports._solcVersion = "0.4.15+commit.bbb8e64f.Emscripten.clang" +exports.OwnedAbi = [{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}] +exports.OwnedByteCode = "0x6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a03199091161790556101b38061003b6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166379ba5097811461005d5780638da5cb5b14610072578063a6f9dae1146100a1578063d4ee1d90146100c057600080fd5b341561006857600080fd5b6100706100d3565b005b341561007d57600080fd5b61008561011f565b604051600160a060020a03909116815260200160405180910390f35b34156100ac57600080fd5b610070600160a060020a036004351661012e565b34156100cb57600080fd5b610085610178565b60015433600160a060020a039081169116146100ee57600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600054600160a060020a031681565b60005433600160a060020a0390811691161461014957600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316815600a165627a7a72305820f103d44cfd1d589a12a05a965340e0c560e9ac817fccf40c91849c6de08012f30029" +exports.VaultAbi = [{"constant":true,"inputs":[],"name":"nPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidPledging","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"confirmPayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"payments","outputs":[{"name":"state","type":"uint8"},{"name":"ref","type":"bytes32"},{"name":"dest","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_automatic","type":"bool"}],"name":"setAutopay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"multiCancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ref","type":"bytes32"},{"name":"_dest","type":"address"},{"name":"_amount","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"autoPay","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"VaultMock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newLiquidPledging","type":"address"}],"name":"setLiquidPledging","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_idPayments","type":"uint256[]"}],"name":"multiConfirm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"ConfirmPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"CancelPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"ref","type":"bytes32"},{"indexed":true,"name":"dest","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AuthorizePayment","type":"event"}] +exports.VaultByteCode = "0x606060405260008054600160a060020a033316600160a060020a0319909116179055610a66806100306000396000f300606060405236156100ca5763ffffffff60e060020a6000350416633baf35fb81146100cc57806374041d1f146100f157806379ba5097146101205780638422927d14610133578063876ca09f1461014957806387d817891461015f5780638da5cb5b146101bd578063a4500c33146101d0578063a6f9dae1146101e8578063b796105c14610207578063bb4f28df14610256578063bbc328201461027b578063cd6b8caf146102a2578063d4ee1d90146102b5578063e99996b1146102c8578063ffd82d21146102e7575b005b34156100d757600080fd5b6100df610336565b60405190815260200160405180910390f35b34156100fc57600080fd5b61010461033d565b604051600160a060020a03909116815260200160405180910390f35b341561012b57600080fd5b6100ca61034c565b341561013e57600080fd5b6100ca600435610398565b341561015457600080fd5b6100ca6004356103bf565b341561016a57600080fd5b6101756004356103e3565b6040518085600281111561018557fe5b60ff168152602081019490945250600160a060020a039091166040808401919091526060830191909152608090910191505180910390f35b34156101c857600080fd5b610104610428565b34156101db57600080fd5b6100ca6004351515610437565b34156101f357600080fd5b6100ca600160a060020a0360043516610492565b341561021257600080fd5b6100ca60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506104dc95505050505050565b341561026157600080fd5b6100df600435600160a060020a036024351660443561052f565b341561028657600080fd5b61028e6106a0565b604051901515815260200160405180910390f35b34156102ad57600080fd5b6100ca6106c1565b34156102c057600080fd5b6101046106c3565b34156102d357600080fd5b6100ca600160a060020a03600435166106d2565b34156102f257600080fd5b6100ca600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061073295505050505050565b6003545b90565b600254600160a060020a031681565b60015433600160a060020a0390811691161461036757600080fd5b6001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b60005433600160a060020a039081169116146103b357600080fd5b6103bc81610781565b50565b60005433600160a060020a039081169116146103da57600080fd5b6103bc8161087f565b60038054829081106103f157fe5b6000918252602090912060049091020180546001820154600283015460039093015460ff909216935091600160a060020a03169084565b600054600160a060020a031681565b60005433600160a060020a0390811691161461045257600080fd5b60028054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60005433600160a060020a039081169116146104ad57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a039081169116146104f857600080fd5b5060005b815181101561052b5761052382828151811061051457fe5b90602001906020020151610781565b6001016104fc565b5050565b600254600090819033600160a060020a0390811691161461054f57600080fd5b506003805490819061056490600183016109ba565b50600060038281548110151561057657fe5b60009182526020909120600490910201805460ff1916600183600281111561059a57fe5b0217905550846003828154811015156105af57fe5b600091825260209091206001600490920201015560038054859190839081106105d457fe5b906000526020600020906004020160020160006101000a815481600160a060020a030219169083600160a060020a031602179055508260038281548110151561061957fe5b6000918252602090912060036004909202010155600160a060020a03841685827fb025fbd648b47675e5160bb9a938180cda38f285280e390d3aac0c3c0002ba088660405190815260200160405180910390a460025474010000000000000000000000000000000000000000900460ff1615610698576106988161087f565b949350505050565b60025474010000000000000000000000000000000000000000900460ff1681565b565b600154600160a060020a031681565b60005433600160a060020a039081169116146106ed57600080fd5b600254600160a060020a03161561070357600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a0390811691161461074e57600080fd5b5060005b815181101561052b5761077982828151811061076a57fe5b9060200190602002015161087f565b600101610752565b600354600090821061079257600080fd5b60038054839081106107a057fe5b6000918252602082206004909102019150815460ff1660028111156107c157fe5b146107cb57600080fd5b805460ff1916600290811782555460018201546003830154600160a060020a039092169163e9c211e2919060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561083a57600080fd5b6102c65a03f1151561084b57600080fd5b505050817ff1a1a3c38f42dc56b083903c7f8fb342b64c15e710c3a4179a4ba5c36733e91d60405160405180910390a25050565b600354600090821061089057600080fd5b600380548390811061089e57fe5b6000918252602082206004909102019150815460ff1660028111156108bf57fe5b146108c957600080fd5b805460ff1916600117815560028101546003820154600160a060020a03909116906108fc81150290604051600060405180830381858888f19350505050151561091157600080fd5b60025460018201546003830154600160a060020a0390921691632ee88808919060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561097557600080fd5b6102c65a03f1151561098657600080fd5b505050817fe46ac4851953c525120fe90499f529bf6236f067292c975d33ad0afb2c585be660405160405180910390a25050565b8154818355818115116109e6576004028160040283600052602060002091820191016109e691906109eb565b505050565b61033a91905b80821115610a3657805460ff1916815560006001820181905560028201805473ffffffffffffffffffffffffffffffffffffffff1916905560038201556004016109f1565b50905600a165627a7a72305820b5787a7ab80e64d427b9b7f4c5207dabb7b1cfe4efd6260142937934734465310029" +exports._solcVersion = "0.4.17+commit.bdeb9e52.Emscripten.clang" exports._sha256 = "0x55fb3ff315e3297664118d0d8d4eefb81be1c0f350996fb5657a68a41491d8be" diff --git a/contracts/ILiquidPledgingPlugin.sol b/contracts/ILiquidPledgingPlugin.sol index 78d1c4f..d0f755c 100644 --- a/contracts/ILiquidPledgingPlugin.sol +++ b/contracts/ILiquidPledgingPlugin.sol @@ -9,13 +9,13 @@ contract ILiquidPledgingPlugin { /// 1 -> Plugin for the first delegate transferring pledge to another party /// 2 -> Plugin for the second delegate transferring pledge to another party /// ... - /// 255 -> Plugin for the intendedCampaign transferring pledge to another party + /// 255 -> Plugin for the intendedProject transferring pledge to another party /// /// 256 -> Plugin for the owner receiving pledge to another party /// 257 -> Plugin for the first delegate receiving pledge to another party /// 258 -> Plugin for the second delegate receiving pledge to another party /// ... - /// 511 -> Plugin for the intendedCampaign receiving pledge to another party + /// 511 -> Plugin for the intendedProject receiving pledge to another party function beforeTransfer( uint64 pledgeManager, uint64 pledgeFrom, diff --git a/contracts/LiquidPledging.sol b/contracts/LiquidPledging.sol index d02193f..6e30a40 100644 --- a/contracts/LiquidPledging.sol +++ b/contracts/LiquidPledging.sol @@ -20,7 +20,7 @@ contract LiquidPledging is LiquidPledgingBase { /// transfer is done to the idReceiver /// @param idGiver Identifier of the giver thats donating. /// @param idReceiver To whom it's transfered. Can be the same giver, another - /// giver, a delegate or a campaign + /// giver, a delegate or a project function donate(uint64 idGiver, uint64 idReceiver) payable { if (idGiver == 0) { @@ -57,12 +57,12 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice Moves value between pledges - /// @param idSender ID of the giver, delegate or campaign admin that is transferring + /// @param idSender ID of the giver, delegate or project admin that is transferring /// the funds from Pledge to Pledge. This admin must have permissions to move the value /// @param idPledge Id of the pledge that's moving the value /// @param amount Quantity of value that's being moved /// @param idReceiver Destination of the value, can be a giver sending to a giver or - /// a delegate, a delegate to another delegate or a campaign to precommit it to that campaign + /// a delegate, a delegate to another delegate or a project to precommit it to that project function transfer(uint64 idSender, uint64 idPledge, uint amount, uint64 idReceiver) { idPledge = normalizePledge(idPledge); @@ -78,8 +78,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { if (n.owner == idSender) { if (receiver.adminType == PledgeAdminType.Giver) { transferOwnershipToGiver(idPledge, amount, idReceiver); - } else if (receiver.adminType == PledgeAdminType.Campaign) { - transferOwnershipToCampaign(idPledge, amount, idReceiver); + } else if (receiver.adminType == PledgeAdminType.Project) { + transferOwnershipToProject(idPledge, amount, idReceiver); } else if (receiver.adminType == PledgeAdminType.Delegate) { appendDelegate(idPledge, amount, idReceiver); } else { @@ -127,11 +127,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { return; } - // If the delegate wants to support a campaign, they undelegate all - // the delegates after them in the chain and choose a campaign - if (receiver.adminType == PledgeAdminType.Campaign) { + // If the delegate wants to support a project, they undelegate all + // the delegates after them in the chain and choose a project + if (receiver.adminType == PledgeAdminType.Project) { undelegate(idPledge, amount, n.delegationChain.length - senderDIdx - 1); - proposeAssignCampaign(idPledge, amount, idReceiver); + proposeAssignProject(idPledge, amount, idReceiver); return; } } @@ -140,7 +140,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { /// @notice This method is used to withdraw value from the system. This can be used - /// by the givers to avoid committing the donation or by campaign admin to use + /// by the givers to avoid committing the donation or by project admin to use /// the Ether. /// @param idPledge Id of the pledge that wants to be withdrawn. /// @param amount Quantity of Ether that wants to be withdrawn. @@ -178,7 +178,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); - // Check the campaign is not canceled in the while. + // Check the project is not canceled in the while. require(getOldestPledgeNotCanceled(idPledge) == idPledge); uint64 idNewPledge = findOrCreatePledge( @@ -201,7 +201,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { require(n.paymentState == PaymentState.Paying); //TODO change to revert - // When a payment is canceled, never is assigned to a campaign. + // When a payment is canceled, never is assigned to a project. uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -216,14 +216,14 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { doTransfer(idPledge, oldPledge, amount); } - /// @notice Method called to cancel this campaign. - /// @param idCampaign Id of the projct that wants to be canceled. - function cancelCampaign(uint64 idCampaign) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - checkAdminOwner(campaign); - campaign.canceled = true; + /// @notice Method called to cancel this project. + /// @param idProject Id of the projct that wants to be canceled. + function cancelProject(uint64 idProject) { + PledgeAdmin storage project = findAdmin(idProject); + checkAdminOwner(project); + project.canceled = true; - CancelCampaign(idCampaign); + CancelProject(idProject); } @@ -296,11 +296,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // this function is obvious, but it can also be called to undelegate everyone // by setting yourself as the idReceiver - function transferOwnershipToCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal { + function transferOwnershipToProject(uint64 idPledge, uint amount, uint64 idReceiver) internal { Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_INTERCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_INTERPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 oldPledge = findOrCreatePledge( n.owner, @@ -370,11 +370,11 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } - function proposeAssignCampaign(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename + function proposeAssignProject(uint64 idPledge, uint amount, uint64 idReceiver) internal {// Todo rename Pledge storage n = findPledge(idPledge); - require(getPledgeLevel(n) < MAX_SUBCAMPAIGN_LEVEL); - require(!isCampaignCanceled(idReceiver)); + require(getPledgeLevel(n) < MAX_SUBPROJECT_LEVEL); + require(!isProjectCanceled(idReceiver)); uint64 toPledge = findOrCreatePledge( n.owner, @@ -401,10 +401,10 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } // This function does 2 things, #1: it checks to make sure that the pledges are correct - // if the a pledged campaign has already been committed then it changes the owner - // to be the proposed campaign (Pledge that the UI will have to read the commit time and manually + // if the a pledged project has already been committed then it changes the owner + // to be the proposed project (Pledge that the UI will have to read the commit time and manually // do what this function does to the pledge for the end user at the expiration of the commitTime) - // #2: It checks to make sure that if there has been a cancellation in the chain of campaigns, + // #2: It checks to make sure that if there has been a cancellation in the chain of projects, // then it adjusts the pledge's owner appropriately. // This call can be called from any body at any time on any pledge. In general it can be called // to force the calls of the affected plugins, which also need to be predicted by the UI @@ -414,8 +414,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { // Check to make sure this pledge hasnt already been used or is in the process of being used if (n.paymentState != PaymentState.Pledged) return idPledge; - // First send to a campaign if it's proposed and commited - if ((n.intendedCampaign > 0) && ( getTime() > n.commitTime)) { + // First send to a project if it's proposed and commited + if ((n.intendedProject > 0) && ( getTime() > n.commitTime)) { uint64 oldPledge = findOrCreatePledge( n.owner, n.delegationChain, @@ -424,7 +424,7 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { n.oldPledge, PaymentState.Pledged); uint64 toPledge = findOrCreatePledge( - n.intendedCampaign, + n.intendedProject, new uint64[](0), 0, 0, @@ -473,8 +473,8 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { allowedAmount = callPlugin(before, n.delegationChain[i], fromPledge, toPledge, offset + i+1, allowedAmount); } - if (n.intendedCampaign > 0) { - allowedAmount = callPlugin(before, n.intendedCampaign, fromPledge, toPledge, offset + 255, allowedAmount); + if (n.intendedProject > 0) { + allowedAmount = callPlugin(before, n.intendedProject, fromPledge, toPledge, offset + 255, allowedAmount); } } @@ -494,6 +494,6 @@ function donate(uint64 idGiver, uint64 idReceiver) payable { } event Transfer(uint64 indexed from, uint64 indexed to, uint amount); - event CancelCampaign(uint64 indexed idCampaign); + event CancelProject(uint64 indexed idProject); } diff --git a/contracts/LiquidPledgingBase.sol b/contracts/LiquidPledgingBase.sol index c339ba5..4fa8296 100644 --- a/contracts/LiquidPledgingBase.sol +++ b/contracts/LiquidPledgingBase.sol @@ -12,22 +12,22 @@ contract Vault { contract LiquidPledgingBase { // Limits inserted to prevent large loops that could prevent canceling uint constant MAX_DELEGATES = 20; - uint constant MAX_SUBCAMPAIGN_LEVEL = 20; - uint constant MAX_INTERCAMPAIGN_LEVEL = 20; + uint constant MAX_SUBPROJECT_LEVEL = 20; + uint constant MAX_INTERPROJECT_LEVEL = 20; - enum PledgeAdminType { Giver, Delegate, Campaign } + enum PledgeAdminType { Giver, Delegate, Project } enum PaymentState { Pledged, Paying, Paid } // TODO name change Pledged /// @dev This struct defines the details of each the PledgeAdmin, these /// PledgeAdmins can own pledges and act as delegates struct PledgeAdmin { // TODO name change PledgeAdmin - PledgeAdminType adminType; // Giver, Delegate or Campaign + PledgeAdminType adminType; // Giver, Delegate or Project address addr; // account or contract address for admin string name; string url; uint64 commitTime; // In seconds, used for Givers' & Delegates' vetos - uint64 parentCampaign; // Only for campaigns - bool canceled; //Always false except for canceled campaigns + uint64 parentProject; // Only for projects + bool canceled; //Always false except for canceled projects ILiquidPledgingPlugin plugin; // if the plugin is 0x0 then nothing happens if its a contract address than that smart contract is called via the milestone contract } @@ -35,8 +35,8 @@ contract LiquidPledgingBase { uint amount; uint64 owner; // PledgeAdmin uint64[] delegationChain; // list of index numbers - uint64 intendedCampaign; // TODO change the name only used for when delegates are precommiting to a campaign - uint64 commitTime; // When the intendedCampaign will become the owner + uint64 intendedProject; // TODO change the name only used for when delegates are precommiting to a project + uint64 commitTime; // When the intendedProject will become the owner uint64 oldPledge; // this points to the Pledge[] index that the Pledge was derived from PaymentState paymentState; } @@ -156,52 +156,52 @@ contract LiquidPledgingBase { event DelegateUpdated(uint64 indexed idDelegate); - /// @notice Creates a new Campaign - function addCampaign(string name, string url, address campaignAdmin, uint64 parentCampaign, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idCampaign) { - if (parentCampaign != 0) { - PledgeAdmin storage pa = findAdmin(parentCampaign); - require(pa.adminType == PledgeAdminType.Campaign); + /// @notice Creates a new Project + function addProject(string name, string url, address projectAdmin, uint64 parentProject, uint64 commitTime, ILiquidPledgingPlugin plugin) returns (uint64 idProject) { + if (parentProject != 0) { + PledgeAdmin storage pa = findAdmin(parentProject); + require(pa.adminType == PledgeAdminType.Project); require(pa.addr == msg.sender); - require(getCampaignLevel(pa) < MAX_SUBCAMPAIGN_LEVEL); + require(getProjectLevel(pa) < MAX_SUBPROJECT_LEVEL); } - idCampaign = uint64(admins.length); + idProject = uint64(admins.length); admins.push(PledgeAdmin( - PledgeAdminType.Campaign, - campaignAdmin, + PledgeAdminType.Project, + projectAdmin, name, url, commitTime, - parentCampaign, + parentProject, false, plugin)); - CampaignAdded(idCampaign); + ProjectAdded(idProject); } - event CampaignAdded(uint64 indexed idCampaign); + event ProjectAdded(uint64 indexed idProject); - ///@notice Changes the address, name or commitTime associated with a specific Campaign - function updateCampaign( - uint64 idCampaign, + ///@notice Changes the address, name or commitTime associated with a specific Project + function updateProject( + uint64 idProject, address newAddr, string newName, string newUrl, uint64 newCommitTime) { - PledgeAdmin storage campaign = findAdmin(idCampaign); - require(campaign.adminType == PledgeAdminType.Campaign); - require(campaign.addr == msg.sender); - campaign.addr = newAddr; - campaign.name = newName; - campaign.url = newUrl; - campaign.commitTime = newCommitTime; - CampaignUpdated(idCampaign); + PledgeAdmin storage project = findAdmin(idProject); + require(project.adminType == PledgeAdminType.Project); + require(project.addr == msg.sender); + project.addr = newAddr; + project.name = newName; + project.url = newUrl; + project.commitTime = newCommitTime; + ProjectUpdated(idProject); } - event CampaignUpdated(uint64 indexed idAdmin); + event ProjectUpdated(uint64 indexed idAdmin); ////////// @@ -217,7 +217,7 @@ contract LiquidPledgingBase { uint amount, uint64 owner, uint64 nDelegates, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paymentState @@ -226,7 +226,7 @@ contract LiquidPledgingBase { amount = n.amount; owner = n.owner; nDelegates = uint64(n.delegationChain.length); - intendedCampaign = n.intendedCampaign; + intendedProject = n.intendedProject; commitTime = n.commitTime; oldPledge = n.oldPledge; paymentState = n.paymentState; @@ -255,7 +255,7 @@ contract LiquidPledgingBase { string name, string url, uint64 commitTime, - uint64 parentCampaign, + uint64 parentProject, bool canceled, address plugin) { @@ -265,7 +265,7 @@ contract LiquidPledgingBase { name = m.name; url = m.url; commitTime = m.commitTime; - parentCampaign = m.parentCampaign; + parentProject = m.parentProject; canceled = m.canceled; plugin = address(m.plugin); } @@ -281,18 +281,18 @@ contract LiquidPledgingBase { function findOrCreatePledge( uint64 owner, uint64[] delegationChain, - uint64 intendedCampaign, + uint64 intendedProject, uint64 commitTime, uint64 oldPledge, PaymentState paid ) internal returns (uint64) { - bytes32 hPledge = sha3(owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid); + bytes32 hPledge = sha3(owner, delegationChain, intendedProject, commitTime, oldPledge, paid); uint64 idx = hPledge2idx[hPledge]; if (idx > 0) return idx; idx = uint64(pledges.length); hPledge2idx[hPledge] = idx; - pledges.push(Pledge(0, owner, delegationChain, intendedCampaign, commitTime, oldPledge, paid)); + pledges.push(Pledge(0, owner, delegationChain, intendedProject, commitTime, oldPledge, paid)); return idx; } @@ -319,7 +319,7 @@ contract LiquidPledgingBase { } // helper function that returns the pledge level solely to check that transfers - // between Campaigns not violate MAX_INTERCAMPAIGN_LEVEL + // between Projects not violate MAX_INTERPROJECT_LEVEL function getPledgeLevel(Pledge n) internal returns(uint) { if (n.oldPledge == 0) return 0; //changed Pledge storage oldN = findPledge(n.oldPledge); @@ -338,25 +338,25 @@ contract LiquidPledgingBase { } } - // helper function that returns the campaign level solely to check that there - // are not too many Campaigns that violate MAX_SUBCAMPAIGNS_LEVEL - function getCampaignLevel(PledgeAdmin m) internal returns(uint) { - assert(m.adminType == PledgeAdminType.Campaign); - if (m.parentCampaign == 0) return(1); - PledgeAdmin storage parentNM = findAdmin(m.parentCampaign); - return getCampaignLevel(parentNM); + // helper function that returns the project level solely to check that there + // are not too many Projects that violate MAX_SUBCAMPAIGNS_LEVEL + function getProjectLevel(PledgeAdmin m) internal returns(uint) { + assert(m.adminType == PledgeAdminType.Project); + if (m.parentProject == 0) return(1); + PledgeAdmin storage parentNM = findAdmin(m.parentProject); + return getProjectLevel(parentNM); } - function isCampaignCanceled(uint64 campaignId) constant returns (bool) { - PledgeAdmin storage m = findAdmin(campaignId); + function isProjectCanceled(uint64 projectId) constant returns (bool) { + PledgeAdmin storage m = findAdmin(projectId); if (m.adminType == PledgeAdminType.Giver) return false; - assert(m.adminType == PledgeAdminType.Campaign); + assert(m.adminType == PledgeAdminType.Project); if (m.canceled) return true; - if (m.parentCampaign == 0) return false; - return isCampaignCanceled(m.parentCampaign); + if (m.parentProject == 0) return false; + return isProjectCanceled(m.parentProject); } - // @notice A helper function for canceling campaigns + // @notice A helper function for canceling projects // @param idPledge the pledge that may or may not be canceled function getOldestPledgeNotCanceled(uint64 idPledge) internal constant returns(uint64) { //todo rename if (idPledge == 0) return 0; @@ -364,9 +364,9 @@ contract LiquidPledgingBase { PledgeAdmin storage admin = findAdmin(n.owner); if (admin.adminType == PledgeAdminType.Giver) return idPledge; - assert(admin.adminType == PledgeAdminType.Campaign); + assert(admin.adminType == PledgeAdminType.Project); - if (!isCampaignCanceled(n.owner)) return idPledge; + if (!isProjectCanceled(n.owner)) return idPledge; return getOldestPledgeNotCanceled(n.oldPledge); } diff --git a/js/liquidPledging.js b/js/liquidPledging.js index 2d4243e..304bbb0 100644 --- a/js/liquidPledging.js +++ b/js/liquidPledging.js @@ -20,8 +20,8 @@ module.exports = (test) => { pledge.amount = res.amount; pledge.owner = res.owner; - if (res.intendedCampaign) { - pledge.intendedCampaign = res.intendedCampaign; + if (res.intendedProject) { + pledge.intendedProject = res.intendedProject; pledge.commmitTime = res.commitTime; } if (res.oldPledge) { @@ -67,7 +67,7 @@ module.exports = (test) => { } else if (res.adminType === '1') { admin.type = 'Delegate'; } else if (res.adminType === '2') { - admin.type = 'Campaign'; + admin.type = 'Project'; } else { admin.type = 'Unknown'; } @@ -75,8 +75,8 @@ module.exports = (test) => { admin.name = res.name; admin.url = res.url; admin.commitTime = res.commitTime; - if (admin.paymentState === 'Campaign') { - admin.parentCampaign = res.parentCampaign; + if (admin.paymentState === 'Project') { + admin.parentProject = res.parentProject; admin.canceled = res.canceled; } admin.plugin = res.plugin; @@ -131,8 +131,8 @@ module.exports = (test) => { pledges: [], delegates: [], }, - precommitedCampaigns: [], - commitedCampaigns: [], + precommitedProjects: [], + commitedProjects: [], }; } }; @@ -151,18 +151,18 @@ module.exports = (test) => { } }; - const addCampaign = (_list, idCampaign) => { + const addProject = (_list, idProject) => { const list = _list; - if (!list[idCampaign]) { - list[idCampaign] = { - idCampaign, + if (!list[idProject]) { + list[idProject] = { + idProject, pledges: [], - commitedCampaigns: [], - name: this.admins[idCampaign].name, - url: this.admins[idCampaign].url, - commitTime: this.admins[idCampaign].commitTime, - owner: this.admins[idCampaign].owner, - parentCampaign: this.admins[idCampaign].parentCampaign, + commitedProjects: [], + name: this.admins[idProject].name, + url: this.admins[idProject].url, + commitTime: this.admins[idProject].commitTime, + owner: this.admins[idProject].owner, + parentProject: this.admins[idProject].parentProject, }; } }; @@ -178,21 +178,21 @@ module.exports = (test) => { } }; - const addCampaignPledge = (stGiver, idPledge) => { + const addProjectPledge = (stGiver, idPledge) => { const pledge = this.pledges[idPledge]; - const campaignList = []; + const crojectList = []; let n = pledge; while (n.oldNode) { - campaignList.unshift(n.owner); + crojectList.unshift(n.owner); n = this.pledges[n.oldNode]; } - let list = stGiver.commitedCampaigns; - for (let j = 0; j < campaignList.length; j += 1) { - addCampaign(list, campaignList[j]); - list[campaignList[j]].pledges.push(idPledge); - list = list[campaignList[j]].commitedCampaigns; + let list = stGiver.commitedProjects; + for (let j = 0; j < crojectList.length; j += 1) { + addProject(list, crojectList[j]); + list[crojectList[j]].pledges.push(idPledge); + list = list[crojectList[j]].commitedProjects; } }; @@ -202,13 +202,13 @@ module.exports = (test) => { addGiver(giversState, idGiver); const stGiver = giversState[idGiver]; const pledge = this.pledges[idPledge]; - if ((pledge.owner === idGiver) && (pledge.precommitedCampaign === 0)) { + if ((pledge.owner === idGiver) && (pledge.precommitedProject === 0)) { addDelegatePledge(stGiver, idPledge); - } else if ((pledge.owner === idGiver) && (pledge.precommitedCampaign !== 0)) { - addCampaign(stGiver.precommitedCampaigns, pledge.precommitedCampaign); - stGiver.precommitedCampaigns[pledge.precommitedCampaign].pledges.push(idPledge); + } else if ((pledge.owner === idGiver) && (pledge.precommitedProject !== 0)) { + addProject(stGiver.precommitedProjects, pledge.precommitedProject); + stGiver.precommitedProjects[pledge.precommitedProject].pledges.push(idPledge); } else { - addCampaignPledge(stGiver, idPledge); + addProjectPledge(stGiver, idPledge); } } diff --git a/test/NormalOperation.js b/test/NormalOperation.js index 554b2a5..8b65db3 100644 --- a/test/NormalOperation.js +++ b/test/NormalOperation.js @@ -46,9 +46,9 @@ describe('LiquidPledging test', () => { let giver1; let giver2; let delegate1; - let adminCampaign1; - let adminCampaign2; - let adminCampaign2a; + let adminProject1; + let adminProject2; + let adminProject2a; let delegate2; before(async () => { const testrpc = TestRPC.server({ @@ -63,9 +63,9 @@ describe('LiquidPledging test', () => { accounts = await web3.eth.getAccounts(); giver1 = accounts[1]; delegate1 = accounts[2]; - adminCampaign1 = accounts[3]; - adminCampaign2 = accounts[4]; - adminCampaign2a = accounts[5]; + adminProject1 = accounts[3]; + adminProject2 = accounts[4]; + adminProject2a = accounts[5]; delegate2 = accounts[6]; giver2 = accounts[7]; }); @@ -117,34 +117,34 @@ describe('LiquidPledging test', () => { assert.equal(d[1], delegate1); assert.equal(d[2], 'Delegate1'); }).timeout(6000); - it('Should create a 2 campaigns', async () => { - await liquidPledging.addCampaign('Campaign1', 'URLCampaign1', adminCampaign1, 0, 86400, 0, { from: adminCampaign1 }); + it('Should create a 2 projects', async () => { + await liquidPledging.addProject('Project1', 'URLProject1', adminProject1, 0, 86400, 0, { from: adminProject1 }); const nAdmins = await liquidPledging.numberOfPledgeAdmins(); assert.equal(nAdmins, 3); const res = await liquidPledging.getPledgeAdmin(3); - assert.equal(res[0], 2); // Campaign type - assert.equal(res[1], adminCampaign1); - assert.equal(res[2], 'Campaign1'); - assert.equal(res[3], 'URLCampaign1'); + assert.equal(res[0], 2); // Project type + assert.equal(res[1], adminProject1); + assert.equal(res[2], 'Project1'); + assert.equal(res[3], 'URLProject1'); assert.equal(res[4], 86400); assert.equal(res[5], 0); assert.equal(res[6], false); - await liquidPledging.addCampaign('Campaign2', 'URLCampaign2', adminCampaign2, 0, 86400, 0, { from: adminCampaign2 }); + await liquidPledging.addProject('Project2', 'URLProject2', adminProject2, 0, 86400, 0, { from: adminProject2 }); const nAdmins2 = await liquidPledging.numberOfPledgeAdmins(); assert.equal(nAdmins2, 4); const res4 = await liquidPledging.getPledgeAdmin(4); - assert.equal(res4[0], 2); // Campaign type - assert.equal(res4[1], adminCampaign2); - assert.equal(res4[2], 'Campaign2'); - assert.equal(res4[3], 'URLCampaign2'); + assert.equal(res4[0], 2); // Project type + assert.equal(res4[1], adminProject2); + assert.equal(res4[2], 'Project2'); + assert.equal(res4[3], 'URLProject2'); assert.equal(res4[4], 86400); assert.equal(res4[5], 0); assert.equal(res4[6], false); }).timeout(6000); - it('Delegate should assign to campaign1', async () => { + it('Delegate should assign to project1', async () => { const n = Math.floor(new Date().getTime() / 1000); await liquidPledging.transfer(2, 2, utils.toWei(0.2), 3, { from: delegate1 }); const nPledges = await liquidPledging.numberOfPledges(); @@ -153,12 +153,12 @@ describe('LiquidPledging test', () => { assert.equal(res3[0], utils.toWei(0.2)); assert.equal(res3[1], 1); // Owner assert.equal(res3[2], 1); // Delegates - assert.equal(res3[3], 3); // Proposed Campaign + assert.equal(res3[3], 3); // Proposed Project assert.isAbove(utils.toDecimal(res3[4]), n + 86000); assert.equal(res3[5], 0); // Old Node assert.equal(res3[6], 0); // Not Paid }).timeout(6000); - it('Giver should change his mind and assign half of it to campaign2', async () => { + it('Giver should change his mind and assign half of it to project2', async () => { await liquidPledging.transfer(1, 3, utils.toWei(0.1), 4, { from: giver1 }); const nPledges = await liquidPledging.numberOfPledges(); assert.equal(nPledges, 4); @@ -167,22 +167,22 @@ describe('LiquidPledging test', () => { const res4 = await liquidPledging.getPledge(4); assert.equal(res4[1], 4); // Owner assert.equal(res4[2], 0); // Delegates - assert.equal(res4[3], 0); // Proposed Campaign + assert.equal(res4[3], 0); // Proposed Project assert.equal(res4[4], 0); assert.equal(res4[5], 2); // Old Node assert.equal(res4[6], 0); // Not Paid }).timeout(6000); - it('After the time, the campaign1 should be able to spend part of it', async () => { + it('After the time, the project1 should be able to spend part of it', async () => { const n = Math.floor(new Date().getTime() / 1000); await liquidPledging.setMockedTime(n + 86401); - await liquidPledging.withdraw(3, utils.toWei(0.05), { from: adminCampaign1 }); + await liquidPledging.withdraw(3, utils.toWei(0.05), { from: adminProject1 }); const nPledges = await liquidPledging.numberOfPledges(); assert.equal(nPledges, 6); const res5 = await liquidPledging.getPledge(5); assert.equal(res5[0], utils.toWei(0.05)); assert.equal(res5[1], 3); // Owner assert.equal(res5[2], 0); // Delegates - assert.equal(res5[3], 0); // Proposed Campaign + assert.equal(res5[3], 0); // Proposed Project assert.equal(res5[4], 0); // commit time assert.equal(res5[5], 2); // Old Node assert.equal(res5[6], 0); // Not Paid @@ -190,16 +190,16 @@ describe('LiquidPledging test', () => { assert.equal(res6[0], utils.toWei(0.05)); assert.equal(res6[1], 3); // Owner assert.equal(res6[2], 0); // Delegates - assert.equal(res6[3], 0); // Proposed Campaign + assert.equal(res6[3], 0); // Proposed Project assert.equal(res6[4], 0); // commit time assert.equal(res6[5], 2); // Old Node assert.equal(res6[6], 1); // Peinding paid Paid }).timeout(6000); it('Should collect the Ether', async () => { - const initialBalance = await web3.eth.getBalance(adminCampaign1); + const initialBalance = await web3.eth.getBalance(adminProject1); await vault.confirmPayment(0); - const finalBalance = await web3.eth.getBalance(adminCampaign1); + const finalBalance = await web3.eth.getBalance(adminProject1); const collected = utils.fromWei(utils.toBN(finalBalance).sub(utils.toBN(initialBalance))); @@ -211,24 +211,24 @@ describe('LiquidPledging test', () => { assert.equal(res7[0], utils.toWei(0.05)); assert.equal(res7[1], 3); // Owner assert.equal(res7[2], 0); // Delegates - assert.equal(res7[3], 0); // Proposed Campaign + assert.equal(res7[3], 0); // Proposed Project assert.equal(res7[4], 0); // commit time assert.equal(res7[5], 2); // Old Node assert.equal(res7[6], 2); // Peinding paid Paid }).timeout(6000); - it('Admin of the campaign1 should be able to cancel campaign1', async () => { - await liquidPledging.cancelCampaign(3, { from: adminCampaign1 }); + it('Admin of the project1 should be able to cancel project1', async () => { + await liquidPledging.cancelProject(3, { from: adminProject1 }); const st = await liquidPledging.getState(liquidPledging); assert.equal(st.admins[3].canceled, true); }).timeout(6000); - it('Should not allow to withdraw from a canceled campaign', async () => { + it('Should not allow to withdraw from a canceled project', async () => { const st = await liquidPledging.getState(liquidPledging); assert.equal(utils.fromWei(st.pledges[5].amount), 0.05); await assertFail(async () => { - await liquidPledging.withdraw(5, utils.toWei(0.01), { from: adminCampaign1 }); + await liquidPledging.withdraw(5, utils.toWei(0.01), { from: adminProject1 }); }); }).timeout(6000); - it('Delegate should send part of this ETH to campaign2', async () => { + it('Delegate should send part of this ETH to project2', async () => { await liquidPledging.transfer(2, 5, utils.toWei(0.03), 4, { $extraGas: 100000, from: delegate1, @@ -239,23 +239,23 @@ describe('LiquidPledging test', () => { assert.equal(st.pledges[8].owner, 1); assert.equal(st.pledges[8].delegates.length, 1); assert.equal(st.pledges[8].delegates[0].id, 2); - assert.equal(st.pledges[8].intendedCampaign, 4); + assert.equal(st.pledges[8].intendedProject, 4); }).timeout(6000); - it('Giver should be able to send the remaining to campaign2', async () => { + it('Giver should be able to send the remaining to project2', async () => { await liquidPledging.transfer(1, 5, utils.toWei(0.02), 4, { from: giver1, $extraGas: 100000 }); const st = await liquidPledging.getState(liquidPledging); assert.equal(st.pledges.length, 9); assert.equal(utils.fromWei(st.pledges[5].amount), 0); assert.equal(utils.fromWei(st.pledges[4].amount), 0.12); }).timeout(6000); - it('A subcampaign 2a and a delegate2 is created', async () => { - await liquidPledging.addCampaign('Campaign2a', 'URLCampaign2a', adminCampaign2a, 4, 86400, 0, { from: adminCampaign2 }); + it('A subproject 2a and a delegate2 is created', async () => { + await liquidPledging.addProject('Project2a', 'URLProject2a', adminProject2a, 4, 86400, 0, { from: adminProject2 }); await liquidPledging.addDelegate('Delegate2', 'URLDelegate2', 0, 0, { from: delegate2 }); const nAdmins = await liquidPledging.numberOfPledgeAdmins(); assert.equal(nAdmins, 6); }).timeout(6000); - it('Campaign 2 delegate in delegate2', async () => { - await liquidPledging.transfer(4, 4, utils.toWei(0.02), 6, { from: adminCampaign2 }); + it('Project 2 delegate in delegate2', async () => { + await liquidPledging.transfer(4, 4, utils.toWei(0.02), 6, { from: adminProject2 }); const st = await liquidPledging.getState(liquidPledging); assert.equal(st.pledges.length, 10); assert.equal(utils.fromWei(st.pledges[9].amount), 0.02); @@ -268,20 +268,20 @@ describe('LiquidPledging test', () => { assert.equal(utils.fromWei(st.pledges[9].amount), 0.01); assert.equal(utils.fromWei(st.pledges[10].amount), 0.01); }).timeout(4000); - it('campaign2a authorize to spend a litle', async () => { + it('project2a authorize to spend a litle', async () => { const n = Math.floor(new Date().getTime() / 1000); await liquidPledging.setMockedTime(n + (86401 * 3)); - await liquidPledging.withdraw(10, utils.toWei(0.005), { from: adminCampaign2a }); + await liquidPledging.withdraw(10, utils.toWei(0.005), { from: adminProject2a }); const st = await liquidPledging.getState(liquidPledging); assert.equal(st.pledges.length, 13); assert.equal(utils.fromWei(st.pledges[10].amount), 0); assert.equal(utils.fromWei(st.pledges[11].amount), 0.005); assert.equal(utils.fromWei(st.pledges[12].amount), 0.005); }).timeout(4000); - it('campaign2 is canceled', async () => { - await liquidPledging.cancelCampaign(4, { from: adminCampaign2 }); + it('project2 is canceled', async () => { + await liquidPledging.cancelProject(4, { from: adminProject2 }); }).timeout(6000); - it('campaign2 should not be able to confirm payment', async () => { + it('project2 should not be able to confirm payment', async () => { await assertFail(async () => { await vault.confirmPayment(1); }); @@ -315,7 +315,7 @@ describe('LiquidPledging test', () => { const collected = utils.fromWei(utils.toBN(finalBalance).sub(utils.toBN(initialBalance))); assert.equal(collected, 0.95); - }).timeout(10000); + }).timeout(12000); it('Should make a donation and create giver', async () => { const oldNPledges = await liquidPledging.numberOfPledges(); const oldNAdmins = await liquidPledging.numberOfPledgeAdmins();