@giveth/liquidpledging-contract
Version:
Liquid Pledging Smart Contract
1,195 lines • 164 kB
JSON
{
"contractName": "LiquidPledgingMock",
"source": "./contracts/LiquidPledgingMock.sol",
"compilerOutput": {
"abi": [
{
"constant": false,
"inputs": [
{
"name": "idReceiver",
"type": "uint64"
},
{
"name": "donorAddress",
"type": "address"
},
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "addGiverAndDonate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "APP_ADDR_NAMESPACE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "whitelistDisabled",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"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": "PLUGIN_MANAGER_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"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": "idxDelegate",
"type": "uint64"
}
],
"name": "getPledgeDelegate",
"outputs": [
{
"name": "idDelegate",
"type": "uint64"
},
{
"name": "addr",
"type": "address"
},
{
"name": "name",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "contractHashes",
"type": "bytes32[]"
}
],
"name": "addValidPluginContracts",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getRecoveryVault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "useWhitelist",
"type": "bool"
}
],
"name": "useWhitelist",
"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": "token",
"type": "address"
},
{
"name": "pledgeState",
"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": "idGiver",
"type": "uint64"
},
{
"name": "idReceiver",
"type": "uint64"
},
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "donate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "isValidPlugin",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"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": true,
"inputs": [],
"name": "EVMSCRIPT_REGISTRY_APP_ID",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "removeValidPluginInstance",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "idReceiver",
"type": "uint64"
},
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "addGiverAndDonate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"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": "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": "addr",
"type": "address"
}
],
"name": "addValidPluginInstance",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "token",
"type": "address"
}
],
"name": "allowRecoverability",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"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": "addGiver",
"outputs": [
{
"name": "idGiver",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "appId",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "addr",
"type": "address"
}
],
"name": "getCodeHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ETH",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getInitializationBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EVMSCRIPT_REGISTRY_APP",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "transferToVault",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "mock_time",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "_role",
"type": "bytes32"
},
{
"name": "params",
"type": "uint256[]"
}
],
"name": "canPerform",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"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": "contractHash",
"type": "bytes32"
}
],
"name": "removeValidPluginContract",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_vault",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "contractHash",
"type": "bytes32"
}
],
"name": "addValidPluginContract",
"outputs": [],
"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": "pledges",
"type": "uint64[]"
}
],
"name": "mNormalizePledge",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kernel",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"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": "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": "_script",
"type": "bytes"
}
],
"name": "getExecutor",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "uint256"
},
{
"indexed": true,
"name": "to",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idProject",
"type": "uint256"
}
],
"name": "CancelProject",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idGiver",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "GiverAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idGiver",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "GiverUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idDelegate",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "DelegateAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idDelegate",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "DelegateUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idProject",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "ProjectAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "idProject",
"type": "uint64"
},
{
"indexed": false,
"name": "url",
"type": "string"
}
],
"name": "ProjectUpdated",
"type": "event"
}
],
"evm": {
"bytecode": {
"object": "60606040526069805460ff19169055341561001957600080fd5b615277806100286000396000f3006060604052600436106102575763ffffffff60e060020a6000350416627611c6811461025c578063178e6079146102925780631c8e8568146102b75780632101a6ad146102de57806324fea3b0146102fd5780632a8ec8cc146103105780632ee88808146103235780632f6b64ca1461034557806332ce8ebc1461040157806332f0a3b51461041f578063387402911461044e5780633f657a461461046657806343387983146104f457806347c5ef43146105165780634c4316c7146105455780634eafbcd51461057957806350f8a8031461059857806352dc7dcc146105d35780635503d9ba1461061557806357adafb61461062857806360b1e057146106775780636293c7021461068a5780636ba3cc87146106a95780636e802c6a146106d757806372116e9214610791578063796d5654146107e257806379f4542e146108015780637e7db6e1146108205780637f61fa931461083f57806380afdea81461088157806381ea4408146108945780638322fff2146108b35780638b3dd749146108c65780639b3fdf4c146108d95780639d4941d8146108ec5780639da47a6b1461090b578063a1658fad1461091e578063ab8be23114610981578063af9f456314610997578063b12b5f76146109b9578063c4d66de8146109cf578063c8ae070f146109ee578063cc19ecf714610a04578063ce17273c14610a50578063d4aae0c414610a9f578063d639cd7314610ab2578063db7c231414610b1a578063e9c211e214610b66578063eba8ba0614610b88578063f6b24b1c14610cde578063f92a79ff14610d2a578063fbfa77cf14610d7b575b600080fd5b341561026757600080fd5b6102906001604060020a0360043516600160a060020a0360243581169060443516606435610d8e565b005b341561029d57600080fd5b6102a5610de9565b60405190815260200160405180910390f35b34156102c257600080fd5b6102ca610e0d565b604051901515815260200160405180910390f35b34156102e957600080fd5b6102ca6001604060020a0360043516610e16565b341561030857600080fd5b6102a5610eb8565b341561031b57600080fd5b6102a5610eda565b341561032e57600080fd5b6102906001604060020a0360043516602435610ee5565b341561035057600080fd5b61036a6001604060020a0360043581169060243516611019565b6040516001604060020a0384168152600160a060020a038316602082015260606040820181815290820183818151815260200191508051906020019080838360005b838110156103c45780820151838201526020016103ac565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561040c57600080fd5b6102906004803560248101910135611147565b341561042a57600080fd5b6104326111db565b604051600160a060020a03909116815260200160405180910390f35b341561045957600080fd5b610290600435151561125b565b341561047157600080fd5b6104856001604060020a03600435166112c1565b6040518881526001604060020a038089166020830152878116604083015286811660608301528581166080830152841660a0820152600160a060020a03831660c082015260e081018260028111156104d957fe5b60ff1681526020019850505050505050505060405180910390f35b34156104ff57600080fd5b6102906001604060020a036004351660243561143e565b341561052157600080fd5b6102906001604060020a036004358116906024358116906044359060643516611625565b341561055057600080fd5b6102906001604060020a0360043581169060243516600160a060020a036044351660643561163a565b341561058457600080fd5b6102ca600160a060020a03600435166117d1565b34156105a357600080fd5b6105b76001604060020a0360043516611848565b6040516001604060020a03909116815260200160405180910390f35b34156105de57600080fd5b6105b760246004803582810192908201359181359182019101356001604060020a0360443516600160a060020a0360643516611a3d565b341561062057600080fd5b6102a5611cca565b341561063357600080fd5b6102906004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611cd495505050505050565b341561068257600080fd5b6102a5611d3f565b341561069557600080fd5b610290600160a060020a0360043516611d63565b34156106b457600080fd5b6102906001604060020a0360043516600160a060020a0360243516604435611dc4565b34156106e257600080fd5b6105b760048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650505083356001604060020a03169360200135600160a060020a03169250611dd5915050565b341561079c57600080fd5b6105b76024600480358281019290820135918135918201910135600160a060020a036044358116906001604060020a036064358116916084359091169060a43516612038565b34156107ed57600080fd5b6102906001604060020a03600435166124e5565b341561080c57600080fd5b610290600160a060020a036004351661254f565b341561082b57600080fd5b6102ca600160a060020a03600435166125c7565b341561084a57600080fd5b6105b760246004803582810192908201359181359182019101356001604060020a0360443516600160a060020a03606435166125cd565b341561088c57600080fd5b6102a5612649565b341561089f57600080fd5b6102a5600160a060020a036004351661264f565b34156108be57600080fd5b6104326126d1565b34156108d157600080fd5b6102a56126d6565b34156108e457600080fd5b6102a56126dc565b34156108f757600080fd5b610290600160a060020a0360043516612700565b341561091657600080fd5b6102a5612877565b341561092957600080fd5b6102ca60048035600160a060020a031690602480359190606490604435908101908301358060208082020160405190810160405280939291908181526020018383602002808284375094965061287d95505050505050565b341561098c57600080fd5b6102906004356129bb565b34156109a257600080fd5b6102906001604060020a03600435166024356129c0565b34156109c457600080fd5b610290600435612a55565b34156109da57600080fd5b610290600160a060020a0360043516612aad565b34156109f957600080fd5b610290600435612aca565b3415610a0f57600080fd5b610290600480356001604060020a039081169160248035600160a060020a031692604435808301939081013592606435908101929101359060843516612b39565b3415610a5b57600080fd5b6102906004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650612c4295505050505050565b3415610aaa57600080fd5b610432612c79565b3415610abd57600080fd5b610290600480356001604060020a0316906044602480359081019083013580602080820201604051908101604052809392919081815260200183836020028082843750949650505092356001604060020a03169250612c88915050565b3415610b2557600080fd5b610290600480356001604060020a039081169160248035600160a060020a031692604435808301939081013592606435908101929101359060843516612cfd565b3415610b7157600080fd5b6102906001604060020a0360043516602435612e06565b3415610b9357600080fd5b610ba76001604060020a0360043516612f2e565b60405180896002811115610bb757fe5b60ff168152600160a060020a0389811660208301526001604060020a038781166080840152861660a083015284151560c0830152831660e08201526101008282038101604083019081529160608101910189818151815260200191508051906020019080838360005b83811015610c38578082015183820152602001610c20565b50505050905090810190601f168015610c655780820380516001836020036101000a031916815260200191505b50838103825288818151815260200191508051906020019080838360005b83811015610c9b578082015183820152602001610c83565b50505050905090810190601f168015610cc85780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610ce957600080fd5b610290600480356001604060020a039081169160248035600160a060020a0316926044358083019390810135926064359081019291013590608435166130fd565b3415610d3557600080fd5b61043260046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061320695505050505050565b3415610d8657600080fd5b6104326132e2565b6000600160a060020a0384161515610da557600080fd5b610dd4846020604051908101604052806000815250602060405190810160405260008082526203f48090611dd5565b9050610de28186858561163a565b5050505050565b7fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb81565b60695460ff1681565b600080610e22836132f6565b90506000815460ff166002811115610e3657fe5b1415610e455760009150610eb2565b6002815460ff166002811115610e5757fe5b14610e5e57fe5b6001810154604060020a900460ff1615610e7b5760019150610eb2565b60018101546001604060020a03161515610e985760009150610eb2565b6001810154610eaf906001604060020a0316610e16565b91505b50919050565b60405160008051602061520c8339815191528152601301604051809103902081565b606554600019015b90565b606954600090819033600160a060020a039081166101009092041614610f0a57600080fd5b610f138461333c565b91506001600383015460a060020a900460ff166002811115610f3157fe5b14610f3b57600080fd5b6002820154600183018054611006926001604060020a03169190602080820201604051908101604052809291908181526020018280548015610fce57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411610f8b5790505b50505050600286810154600388015460009350839260c060020a9092046001604060020a031691600160a060020a039091169061336d565b905061101384828561368f565b50505050565b600080611024614e57565b6000806110308761333c565b915081600101600187036001604060020a031681548110151561104f57fe5b90600052602060002090600491828204019190066008029054906101000a90046001604060020a03169450611083856132f6565b90508060000160019054906101000a9004600160a060020a03169350806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111375780601f1061110c57610100808354040283529160200191611137565b820191906000526020600020905b81548152906001019060200180831161111a57829003601f168201915b5050505050925050509250925092565b600060405160008051602061520c833981519152815260130160405180910390206111923382600060405180591061117c5750595b908082528060200260200182016040525061287d565b151561119d57600080fd5b600091505b60ff821683901015611013576111d0848460ff85168181106111c057fe5b9050602002013560001916612aca565b6001909101906111a2565b60008054600160a060020a031615156111f357600080fd5b60008054600160a060020a0316906332f0a3b590604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561123c57600080fd5b6102c65a03f1151561124d57600080fd5b505050604051805191505090565b60405160008051602061520c833981519152815260130160405180910390206112a33382600060405180591061117c575059908082528060200260200182016040525061287d565b15156112ae57600080fd5b506069805460ff19169115919091179055565b6000806000806000806000806112d5614e69565b6112de8a61333c565b6101006040519081016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561137657602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116113335790505b50505091835250506002828101546001604060020a038082166020850152604060020a820481166040850152608060020a82048116606085015260c060020a9091041660808301526003830154600160a060020a03811660a084015260c09092019160a060020a900460ff16908111156113ec57fe5b60028111156113f757fe5b90525090508051985080604001519750806020015151965080606001519550806080015194508060a0015193508060c0015192508060e00151915050919395975091939597565b600080600061144c85611848565b94506114578561333c565b92506000600384015460a060020a900460ff16600281111561147557fe5b1461147f57600080fd5b6002830154611496906001604060020a0316613763565b600283015460018401805461155e926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561152957602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116114e65790505b505050506002870154600388015460009250829160c060020a90046001604060020a031690600160a060020a0316600161336d565b915061156b85838661368f565b6002830154611582906001604060020a03166132f6565b60695481546003860154929350600160a060020a036101009283900481169363a5426df1936001604060020a0388169304821691168860405160e060020a63ffffffff87160281526004810194909452600160a060020a039283166024850152911660448301526064820152608401600060405180830381600087803b151561160a57600080fd5b6102c65a03f1151561161b57600080fd5b5050505050505050565b61162e84613763565b611013848484846137ba565b600080806001604060020a03871681901161165457600080fd5b6000841161166157600080fd5b600160a060020a038516151561167657600080fd5b61167f876132f6565b92506000835460ff16600281111561169357fe5b1461169d57600080fd5b606954600160a060020a03808716916323b872dd9133916101009004168760006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561171357600080fd5b6102c65a03f1151561172457600080fd5b50505060405180519050151561173957600080fd5b61176a87600060405180591061174c5750595b908082528060200260200182016040525060008060008a600061336d565b91506117758261333c565b80548501815590506001604060020a03821660007faf6151f5085accf2d57e1e7bf7601d3b3982e0de7e9a90f032f8554de9c104f68660405190815260200160405180910390a36117c8878386896137ba565b50505050505050565b606954600090819060ff16806117ee5750600160a060020a038316155b156117fc5760019150610eb2565b600160a060020a03831660009081526068602052604090205460ff16156118265760019150610eb2565b61182f8361264f565b60009081526067602052604090205460ff169392505050565b6000806000806118578561333c565b92506000600384015460a060020a900460ff16600281111561187557fe5b1461188257849350611a35565b60028301546000604060020a9091046001604060020a03161180156118c157506002830154608060020a90046001604060020a03166118bf613e11565b115b15611a0457600283015460018401805461198d926001604060020a0316919060208082020160405190810160405280929190818152602001828054801561195957602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a0316815260200190600801906020826007010492830192600103820291508084116119165790505b505050506002870154600388015460009250829160c060020a90046001604060020a031690600160a060020a03168261336d565b60028401549092506119e490604060020a90046001604060020a031660006040518059106119b85750595b9080825280602002602001820160405250600386015460009081908790600160a060020a03168261336d565b90506119f58582856000015461368f565b809450611a018561333c565b92505b611a0d85613e17565b90506001604060020a0380821690861614611a3157611a318582856000015461368f565b8093505b505050919050565b6000611a48826117d1565b1515611a5357600080fd5b5060648054908160018101611a688382614eb5565b91600052602060002090600402016000610100604051908101604052806001815260200133600160a060020a03168152602001876001604060020a0316815260200160006001604060020a0316815260200160001515815260200186600160a060020a031681526020018b8b8080601f0160208091040260200160405190810160405281815292919060208401838380828437820191505050505050815260200189898080601f016020809104026020016040519081016040528181529291906020840183838082843750505092909352509193925083915050518154829060ff19166001836002811115611b5957fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181546001604060020a039190911660a860020a0260008051602061522c833981519152909116178155606082015160018201805467ffffffffffffffff19166001604060020a03929092169190911790556080820151600182018054911515604060020a0268ff00000000000000001990921691909117905560a08201518160010160096101000a815481600160a060020a030219169083600160a060020a0316021790555060c082015181600201908051611c4a929160200190614ee1565b5060e082015181600301908051611c65929160200190614ee1565b50505050806001604060020a03167fd921f0ff8d5f67ca22b52c5b4be3463a8cabd9d95c28a02dd7c86f9deb3329be86866040516020808252810182905280604081018484808284378201915050935050505060405180910390a29695505050505050565b6064546000190190565b600080805b8351831015611013576001604060020a03848481518110611cf657fe5b90602001906020020151169150604060020a848481518110611d1457fe5b90602001906020020151811515611d2757fe5b049050611d34828261143e565b600190920191611cd9565b7fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd6181565b60405160008051602061520c83398151915281526013016040518091039020611d8b82613edf565b611d9633838361287d565b1515611da157600080fd5b5050600160a060020a03166000908152606860205260409020805460ff19169055565b611dd083338484610d8e565b505050565b6000611de0826117d1565b1515611deb57600080fd5b5060648054908160018101611e008382614eb5565b916000526020600020906004020160006101006040519081016040528060008152600160a060020a03808c1660208301526001604060020a03891660408301526000606083018190526080830152871660a082015260c081018a905260e00188905291905081518154829060ff19166001836002811115611e7d57fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181546001604060020a039190911660a860020a0260008051602061522c833981519152909116178155606082015160018201805467ffffffffffffffff19166001604060020a03929092169190911790556080820151600182018054911515604060020a0268ff00000000000000001990921691909117905560a08201518160010160096101000a815481600160a060020a030219169083600160a060020a0316021790555060c082015181600201908051611f6e929160200190614ee1565b5060e082015181600301908051611f89929160200190614ee1565b50505050806001604060020a03167fad9c62a4382fd0ddbc4a0cf6c2bc7df75b0b8beb786ff59014f39daaea7f232f8560405160208082528190810183818151815260200191508051906020019080838360005b83811015611ff5578082015183820152602001611fdd565b50505050905090810190601f1680156120225780820380516001836020036101000a031916815260200191505b509250505060405180910390a295945050505050565b600080612044836117d1565b151561204f57600080fd5b6001604060020a0385161561226c57612067856132f6565b90506014612259826101006040519081016040528154909190829060ff16600281111561209057fe5b600281111561209b57fe5b81528154610100808204600160a060020a0390811660208086019190915260a860020a9093046001604060020a039081166040808701919091526001808801549283166060880152604060020a830460ff1615156080880152690100000000000000000090920490921660a08601526002808701805460c090970196909592811615909402600019019093169290920491601f8301819004810201905190810160405280929190818152602001828054600181600116156101000203166002900480156121a95780601f1061217e576101008083540402835291602001916121a9565b820191906000526020600020905b81548152906001019060200180831161218c57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b505050505081525050613eff565b6001604060020a03161061226c57600080fd5b60648054925082600181016122818382614eb5565b9160005260206000209060040201600061010060405190810160405280600281526020018a600160a060020a03168152602001886001604060020a03168152602001896001604060020a0316815260200160001515815260200187600160a060020a031681526020018e8e8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505081526020018c8c8080601f016020809104026020016040519081016040528181529291906020840183838082843750505092909352509193925083915050518154829060ff1916600183600281111561237157fe5b021790555060208201518154600160a060020a03919091166101000261010060a860020a0319909116178155604082015181546001604060020a039190911660a860020a0260008051602061522c833981519152909116178155606082015160018201805467ffffffffffffffff19166001604060020a03929092169190911790556080820151600182018054911515604060020a0268ff00000000000000001990921691909117905560a08201518160010160096101000a815481600160a060020a030219169083600160a060020a0316021790555060c082015181600201908051612462929160200190614ee1565b5060e08201518160030190805161247d929160200190614ee1565b50505050816001604060020a03167f9958fc92731727637b02f1ac1e6caf2814442c27e1d962f0c477cd14280f586d89896040516020808252810182905280604081018484808284378201915050935050505060405180910390a25098975050505050505050565b60006124f0826132f6565b90506124fb82613763565b60018101805468ff00000000000000001916604060020a1790556001604060020a0382167f74acb192d39829b88a66ad5363afa9120c5a306a458287a870351ae34a04d34660405160405180910390a25050565b60405160008051602061520c833981519152815260130160405180910390206125973382600060405180591061117c575059908082528060200260200182016040525061287d565b15156125a257600080fd5b50600160a060020a03166000908152606860205260409020805460ff19166001179055565b50600190565b600061263e3388888080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505087878080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050508686611dd5565b979650505050505050565b60015481565b6000612659614e57565b823b604051915080825280600060208401863c50806040518082805190602001908083835b6020831061269d5780518252601f19909201916020918201910161267e565b6001836020036101000a03801982511681845116179092525050509190910192506040915050518091039020915050919050565b600081565b60035490565b7f34f01c17e9be6ddbf2c61f37b5b1fb9f1a090a975006581ad19bda1c4d38287181565b60008061270c836125c7565b151561271757600080fd5b61271f6111db565b915061272a82613f73565b151561273557600080fd5b600160a060020a03831615156127875781600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f19350505050151561278257600080fd5b611dd0565b82600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156127de57600080fd5b6102c65a03f115156127ef57600080fd5b5050506040518051915050600160a060020a03831663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561285757600080fd5b6102c65a03f1151561286857600080fd5b50505060405180515050505050565b609c5481565b6000612887614e57565b600080845111156128a057835160200290508391508082525b600054600160a060020a031615806129b1575060008054600160a060020a03169063fdef91069088903090899087906040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b8381101561294757808201518382015260200161292f565b50505050905090810190601f1680156129745780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561299557600080fd5b6102c65a03f115156129a657600080fd5b505050604051805190505b9695505050505050565b609c55565b6000806129cc84611848565b93506129d78461333c565b600281015490925060c060020a90046001604060020a031615156129fa57600080fd5b6000600383015460a060020a900460ff166002811115612a1657fe5b14612a2057600080fd5b6002820154612a37906001604060020a0316613763565b60028201546110069060c060020a90046001604060020a0316613e17565b60405160008051602061520c83398151915281526013016040518091039020612a7d82613f99565b612a8833838361287d565b1515612a9357600080fd5b50506000908152606760205260409020805460ff19169055565b60035415612aba57600080fd5b612ac381613faa565b5042609c55565b60405160008051602061520c83398151915281526013016040518091039020612b123382600060405180591061117c575059908082528060200260200182016040525061287d565b1515612b1d57600080fd5b506000908152606760205260409020805460ff19166001179055565b6000612b44886132f6565b805490915033600160a060020a039081166101009092041614612b6657600080fd5b6001815460ff166002811115612b7857fe5b14612b8257600080fd5b805461010060a860020a031916610100600160a060020a03891602178155612bae600282018787614f5b565b50612bbd600382018585614f5b565b5080546001604060020a0380841660a860020a0260008051602061522c83398151915290921691909117825588167f6586deed9fa035704e9886588d904801e7e86d1ebd926905fa03a0018531b2fd85856040516020808252810182905280604081018484808284378201915050935050505060405180910390a25050505050505050565b60005b8151811015612c7557612c6c828281518110612c5d57fe5b90602001906020020151611848565b50600101612c45565b5050565b600054600160a060020a031681565b600080805b8451831015612cf5576001604060020a03858481518110612caa57fe5b90602001906020020151169150604060020a858481518110612cc857fe5b90602001906020020151811515612cdb57fe5b049050612cea86838387611625565b600190920191612c8d565b505050505050565b6000612d08886132f6565b805490915033600160a060020a039081166101009092041614612d2a57600080fd5b6000815460ff166002811115612d3c57fe5b14612d4657600080fd5b805461010060a860020a031916610100600160a060020a03891602178155612d72600282018787614f5b565b50612d81600382018585614f5b565b5080546001604060020a0380841660a860020a0260008051602061522c83398151915290921691909117825588167f4b2f87168338ea08f27c7f7b2dfe4e61feb620ffe9a6a6a18afeaf94546075bf85856040516020808252810182905280604081018484808284378201915050935050505060405180910390a25050505050505050565b606954600090819033600160a060020a039081166101009092041614612e2b57600080fd5b612e348461333c565b91506001600383015460a060020a900460ff166002811115612e5257fe5b14612e5c57600080fd5b6002820154600183018054612f23926001604060020a03169190602080820201604051908101604052809291908181526020018280548015612eef57602002820191906000526020600020906000905b82829054906101000a90046001604060020a03166001604060020a031681526020019060080190602082600701049283019260010382029150808411612eac5790505b505050506002860154600387015460009250829160c060020a90046001604060020a031690600160a060020a03168261336d565b905061100681611848565b600080612f39614e57565b612f41614e57565b6000806000806000612f528a6132f6565b80546002808301805460ff84169d5061010093849004600160a060020a03169c509