From 1e67f80808c4a4cfd25f2411fc2a329450c2c141 Mon Sep 17 00:00:00 2001 From: Ladd Hoffman Date: Sun, 17 Mar 2024 12:30:12 -0500 Subject: [PATCH] copy ABIs to contract-config dir on deploy --- client/src/App.jsx | 5 +- client/src/assets/DAO.json | 674 ----------------- client/src/assets/Work1.json | 305 -------- client/src/contract-config.js | 2 +- contract-config/DAO.json | 679 ++++++++++++++++++ contract-config/Work1.json | 305 ++++++++ .../addresses.json | 4 +- contract-config/package.json | 11 + ethereum/contracts/DAO.sol | 2 + ethereum/scripts/contract-config.js | 2 +- ethereum/scripts/deploy.js | 8 +- ethereum/test/DAO.js | 1 + ethereum/test/Work1.js | 3 + 13 files changed, 1013 insertions(+), 988 deletions(-) delete mode 100644 client/src/assets/DAO.json delete mode 100644 client/src/assets/Work1.json create mode 100644 contract-config/DAO.json create mode 100644 contract-config/Work1.json rename contract-addresses.json => contract-config/addresses.json (57%) create mode 100644 contract-config/package.json diff --git a/client/src/App.jsx b/client/src/App.jsx index b629124..4be04e3 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -11,10 +11,11 @@ import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; import Stack from 'react-bootstrap/Stack'; +import DAOArtifact from 'contract-config/DAO.json'; +import work1Artifact from 'contract-config/Work1.json'; + import { getContractByChainId } from './contract-config'; import Web3Context from './Web3Context'; -import DAOArtifact from './assets/DAO.json'; -import work1Artifact from './assets/Work1.json'; import AvailabilityStakes from './AvailabilityStakes'; import WorkRequests from './WorkRequests'; diff --git a/client/src/assets/DAO.json b/client/src/assets/DAO.json deleted file mode 100644 index 2e047c4..0000000 --- a/client/src/assets/DAO.json +++ /dev/null @@ -1,674 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DAO", - "sourceName": "contracts/DAO.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "postIndex", - "type": "uint256" - } - ], - "name": "PostAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - } - ], - "name": "ValidationPoolInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "votePasses", - "type": "bool" - } - ], - "name": "ValidationPoolResolved", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "author", - "type": "address" - } - ], - "name": "addPost", - "outputs": [ - { - "internalType": "uint256", - "name": "postIndex", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - } - ], - "name": "evaluateOutcome", - "outputs": [ - { - "internalType": "bool", - "name": "votePasses", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "postIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "initiateValidationPool", - "outputs": [ - { - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isMember", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxDuration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "memberCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "members", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "minDuration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "postCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "posts", - "outputs": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "inFavor", - "type": "bool" - } - ], - "name": "stake", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "stakeAvailability", - "outputs": [ - { - "internalType": "bool", - "name": "transferred", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "validationPoolCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "validationPools", - "outputs": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "postIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "stakeCount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "initialStakedFor", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "initialStakedAgainst", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "endTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "resolved", - "type": "bool" - }, - { - "internalType": "bool", - "name": "outcome", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b613176806200041b6000396000f3fe6080604052600436106101405760003560e01c806356715761116100b657806395d89b411161006f57806395d89b41146104b05780639fcb294b146104db578063a230c5241461050b578063a233627914610548578063a9059cbb1461058e578063dd62ed3e146105cb57610140565b806356715761146103785780635daf08ca146103a3578063642b5bfb146103e05780636db5c8fd1461040b57806370a0823114610436578063883802741461047357610140565b806317c182171161010857806317c182171461024257806318160ddd1461027f57806323b872dd146102aa578063313ce567146102e75780633ff7544214610312578063561b24631461034f57610140565b806306fdde0314610145578063095ea7b3146101705780630b1e7f83146101ad57806311aee380146101ec57806317906c2e14610217575b600080fd5b34801561015157600080fd5b5061015a610608565b6040516101679190612731565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906127ec565b61069a565b6040516101a49190612847565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf9190612862565b6106bd565b6040516101e3939291906128ad565b60405180910390f35b3480156101f857600080fd5b50610201610727565b60405161020e91906128e4565b60405180910390f35b34801561022357600080fd5b5061022c61072d565b60405161023991906128e4565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612862565b610733565b6040516102769190612847565b60405180910390f35b34801561028b57600080fd5b506102946112b4565b6040516102a191906128e4565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906128ff565b6112be565b6040516102de9190612847565b60405180910390f35b3480156102f357600080fd5b506102fc6112ed565b604051610309919061296e565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190612989565b6112f6565b60405161034691906128e4565b60405180910390f35b34801561035b57600080fd5b50610376600480360381019061037191906129e2565b6114a8565b005b34801561038457600080fd5b5061038d611535565b60405161039a91906128e4565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c59190612862565b61153a565b6040516103d79190612a35565b60405180910390f35b3480156103ec57600080fd5b506103f561156d565b60405161040291906128e4565b60405180910390f35b34801561041757600080fd5b50610420611573565b60405161042d91906128e4565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190612989565b61157a565b60405161046a91906128e4565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190612a50565b6115c2565b6040516104a79190612847565b60405180910390f35b3480156104bc57600080fd5b506104c56116f2565b6040516104d29190612731565b60405180910390f35b6104f560048036038101906104f09190612aa3565b611784565b60405161050291906128e4565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612989565b611d07565b60405161053f9190612847565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190612862565b611d27565b6040516105859a99989796959493929190612ae3565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906127ec565b611d95565b6040516105c29190612847565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190612b7f565b611db8565b6040516105ff91906128e4565b60405180910390f35b60606003805461061790612bee565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612bee565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b6000806106a5611e3f565b90506106b2818585611e47565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b600061074967dac3aac90682d0a560c01b611e59565b61075d67b39c21d68cdffe1c60c01b611e59565b61077167ce472067c2b0c2df60c01b611e59565b600060086000848152602001908152602001600020905061079c67f58ac4b01349d32560c01b611e59565b6107b067c8beac0ae1d41f2660c01b611e59565b6000600a60008360010154815260200190815260200160002090506107df67cffe4b6c51d8d6ff60c01b611e59565b6107f3677ab54d9d5e2a8c8160c01b611e59565b61080767aea0a6a38aae659960c01b611e59565b8160080154421161084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490612c91565b60405180910390fd5b61086167cbaffcbec042717a60c01b611e59565b6108756792abe917095d302160c01b611e59565b61088967541ee57e2b8ee86e60c01b611e59565b61089d67f3849b0062a2e81f60c01b611e59565b600015158260090160009054906101000a900460ff161515146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612cfd565b60405180910390fd5b61090967adefde5d7878333960c01b611e59565b61091d67079d5cbf0e43be9060c01b611e59565b61093167c7ae041a4b6b485a60c01b611e59565b600061094767845e6ea1781dbedc60c01b611e59565b61095b671739d82b0b2951ce60c01b611e59565b6000610971675e2cd5cfbe52ba2360c01b611e59565b61098567c347c5f89ce5784460c01b611e59565b600061099b67c6f94e8b938f471960c01b611e59565b6109af67cc91e2ed96c5a73760c01b611e59565b60005b8560030154811015610aaf576109d267f5a78e2991c8cd9e60c01b611e59565b85600201600082815260200190815260200160002091506109fd6781ecbeb87336730860c01b611e59565b610a116766817dfe8d5fc80f60c01b611e59565b8160010160009054906101000a900460ff1615610a6757610a3c6778c2cae8005fe26360c01b611e59565b610a5067921f1fe729da716360c01b611e59565b816002015484610a609190612d4c565b9350610aa2565b610a7b673ea1d5432961290360c01b611e59565b610a8f678b91eb495247082560c01b611e59565b816002015483610a9f9190612d4c565b92505b80806001019150506109b2565b50610ac4679ac61a1d9b6ec07f60c01b611e59565b818310159550610ade67d1738cf0aeaa619460c01b611e59565b610af267d4b386b9932b7bcf60c01b611e59565b858015610b6d5750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610cbb57610b8667d55ad91794bcb37a60c01b611e59565b610b9a67f217c6559442355c60c01b611e59565b8360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005600060066000815480929190610bd690612d80565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c3a6768cd74202efb46e160c01b611e59565b6001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd0565b610ccf67a380e1a4003c6ff660c01b611e59565b5b610ce46769c7d795c169e3be60c01b611e59565b60018560090160006101000a81548160ff021916908315150217905550610d1567c77cae0687fc053560c01b611e59565b858560090160016101000a81548160ff021916908315150217905550610d4567c3b6ba2ad3b68a9860c01b611e59565b610d5967713c71269f71769e60c01b611e59565b7f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610d8a929190612dc8565b60405180910390a1610da6675db060aafada23a060c01b611e59565b610dba67188fae54829a483160c01b611e59565b60008680610dd85750610dd767e009a90f2fc4cb0460c01b611e5c565b5b8015610df45750610df3670867fce99f94c82860c01b611e63565b5b610dfe5782610e00565b835b9050610e166754d67dce636b93ff60c01b611e59565b610e2a674f4bbaa177f2b8dd60c01b611e59565b60008780610e485750610e4767ed68518fed9812ca60c01b611e5c565b5b8015610e645750610e6367bc4e79370ddfd7a960c01b611e63565b5b610e6e5784610e70565b835b9050610e8667a1e89a213bf469ba60c01b611e59565b610e9a67886d4b507f5156b560c01b611e59565b6000610eb0679a08bc3e15c546cc60c01b611e59565b610ec467c7124adaab8dc02560c01b611e59565b60005b886003015481101561104d57610ee767d9cb89ddc751fe8f60c01b611e59565b8860020160008281526020019081526020016000209450610f1267ff2a60990b9e2cab60c01b611e59565b610f26674d937503c25e368d60c01b611e59565b8460010160009054906101000a900460ff1615158a15150361102b57610f56674cacd0f2aef8f50060c01b611e59565b610f6a671672782669b9832c60c01b611e59565b610f7e673da1e835aa90044b60c01b611e59565b600084866002015485610f919190612df1565b610f9b9190612e62565b9050610fb1674c638ea7e37818ab60c01b611e59565b610fc567077677dc05f4524c60c01b611e59565b611003308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ffe9190612d4c565b611e6e565b611017670c8139c2449d685d60c01b611e59565b80836110239190612d4c565b925050611040565b61103f67814be35ce77a53f860c01b611e59565b5b8080600101915050610ec7565b50611062676c73dd77be48cde560c01b611e59565b6110766721f3fd2362c51db460c01b611e59565b600081836110849190612e93565b905061109a67133fc2a910e9f96260c01b611e59565b6110ae678795868b7119e10860c01b611e59565b6000811115611127576110cb67172e4c36ca6371fb60c01b611e59565b6110df6783859b45394adcf360c01b611e59565b6110f3676265fe57b3951fa760c01b611e59565b611122308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e6e565b61113c565b61113b67400a548379d28f3860c01b611e59565b5b61115067e124583306ffdf4460c01b611e59565b61116467854cc92cf517c18560c01b611e59565b60005b6006548110156112a55761118567d41c4fd3560eb7b860c01b611e59565b61119967b5627b6705e104e960c01b611e59565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506111e56784824bf7369a77dd60c01b611e59565b6111f967bc4eb4b2969ba3da60c01b611e59565b60006112036112b4565b61120c8361157a565b8d6004015461121b9190612df1565b6112259190612e62565b905061123b67d3fc50d5c28ee35960c01b611e59565b61124f67daf0fa57facb304660c01b611e59565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611295573d6000803e3d6000fd5b5050508080600101915050611167565b50505050505050505050919050565b6000600254905090565b6000806112c9611e3f565b90506112d6858285611f62565b6112e1858585611e6e565b60019150509392505050565b60006012905090565b600061130c67bd452057b0c6389360c01b611e59565b611320670c166c05ec3a8aa360c01b611e59565b600b600081548092919061133390612d80565b91905055905061134d67bf596c00b773f2b960c01b611e59565b611361673c0e83671c1ef34a60c01b611e59565b6000600a6000838152602001908152602001600020905061138c67d9e256bb1a25244560c01b611e59565b828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113e367f818e5a8a94ffd0160c01b611e59565b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061143a676454429f3840d7ae60c01b611e59565b81816000018190555061145767f410e15494820d7960c01b611e59565b61146b67758baccc197269d060c01b611e59565b7f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c8260405161149a91906128e4565b60405180910390a150919050565b6114bc6751ea520e2533955360c01b611e59565b6114d067c82e41b0de4234f860c01b611e59565b6114e4674178e16604de6d0960c01b611e59565b600060086000858152602001908152602001600020905061150f6723c763ad6c342a1660c01b611e59565b61152367380004b981976bb360c01b611e59565b61152f81338585611ff6565b50505050565b603c81565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6201518081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115d8670d5dcbfa8776cd7860c01b611e59565b6115ec67726ae26ab5056e4b60c01b611e59565b6115f68484611d95565b905061160c67338050b330e6385160c01b611e59565b611620670f69f86c70595ea060c01b611e59565b80156116d65761163a67890d124c450d977f60c01b611e59565b61164e67993f18ee99ac02a660c01b611e59565b61166267ac593742f6efbed960c01b611e59565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161169f93929190612ec7565b600060405180830381600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506116eb565b6116ea673b004c25ddc9ed5560c01b611e59565b5b9392505050565b60606004805461170190612bee565b80601f016020809104026020016040519081016040528092919081815260200182805461172d90612bee565b801561177a5780601f1061174f5761010080835404028352916020019161177a565b820191906000526020600020905b81548152906001019060200180831161175d57829003601f168201915b5050505050905090565b600061179a67d3b0f5975ee3904960c01b611e59565b6117ae6720909db29eac6a6d60c01b611e59565b6117c267180fd9e5f5c85d5760c01b611e59565b6117d667bd1a6b0b366a276960c01b611e59565b60003411611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090612f70565b60405180910390fd5b61182d671a4861910ee03b4560c01b611e59565b611841672df1be162d0b105160c01b611e59565b61185567a3a96cf26dcd0fa060c01b611e59565b61186967db465668148a599e60c01b611e59565b603c8210156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490612fdc565b60405180910390fd5b6118c1678f594dc606b670e060c01b611e59565b6118d567ddeea77bca1b0afc60c01b611e59565b6118e9675836a1efcf2a3acb60c01b611e59565b6118fd6790f1bb59896459e660c01b611e59565b62015180821115611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90613048565b60405180910390fd5b6119576763e4621d9a5ac86860c01b611e59565b61196b67bb49da5cb6313d4560c01b611e59565b61197f6756f119f1902e823660c01b611e59565b6000600a600085815260200190815260200160002090506119aa67a446529e5dd9dac860c01b611e59565b6119be679bd00a681e72740360c01b611e59565b6119d1665863f93168cd9f60c01b611e59565b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b906130b4565b60405180910390fd5b611a7867cf82f94dd6c4cf4b60c01b611e59565b611a8c6774a37bd1db8f47ae60c01b611e59565b60096000815480929190611a9f90612d80565b919050559150611ab9672bec04bb090e4b4e60c01b611e59565b611acd67f05e08a4dc11b13d60c01b611e59565b6000600860008481526020019081526020016000209050611af867e88d550ad9e5682760c01b611e59565b848160010181905550611b1567c83689a9340395cf60c01b611e59565b348160040181905550611b32677acafc27b385dd3360c01b611e59565b838160070181905550611b4f67d23c16fe0d09f21760c01b611e59565b8342611b5b9190612d4c565b8160080181905550611b7767b71cb807fdee35b360c01b611e59565b828160000181905550611b94677e98cbc87e1db78b60c01b611e59565b611ba867b3258784852ba2c060c01b611e59565b611bd68260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634612223565b611bea67c1fd518409581a9560c01b611e59565b611bfe6775949e9ba9c2cd0260c01b611e59565b611c3b818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600234611c349190612e62565b6001611ff6565b611c4f6742102a30d6974afb60c01b611e59565b611c6367ad5805e492db021b60c01b611e59565b611ca0818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600234611c999190612e62565b6000611ff6565b611cb4674d43f2d1a93cf7a860c01b611e59565b611cc867454c6b7b876c8bac60c01b611e59565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a83604051611cf791906128e4565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b600080611da0611e3f565b9050611dad818585611e6e565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b611e5483838360016122a5565b505050565b50565b6000919050565b600060019050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee05760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ed79190612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f525760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f499190612a35565b60405180910390fd5b611f5d83838361247c565b505050565b6000611f6e8484611db8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ff05781811015611fe0578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611fd793929190612ec7565b60405180910390fd5b611fef848484840360006122a5565b5b50505050565b61200a67fed28ade693faf3360c01b611e59565b61201e675f4e63757db48bde60c01b611e59565b61203267282bb26b1c1384d360c01b611e59565b612046671bf116c65016fbac60c01b611e59565b836008015442111561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490613120565b60405180910390fd5b6120a167442f0ea87dedb4b560c01b611e59565b6120b567932be9f0cfca29e160c01b611e59565b6120c96792d7e8d119460e0e60c01b611e59565b6120d4833084611e6e565b6120e867b64305496b92c63560c01b611e59565b6120fc6764ef3b2a8abcff8260c01b611e59565b600084600301600081548092919061211390612d80565b91905055905061212d67631d46312c106bf660c01b611e59565b61214167f28f874bd974da2260c01b611e59565b6000856002016000838152602001908152602001600020905061216e67225d17d9b93f8f1260c01b611e59565b848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121c567d4f63c07087093b660c01b611e59565b828160010160006101000a81548160ff0219169083151502179055506121f56789a8998a6c004c4260c01b611e59565b838160020181905550612212676421fe0932b6b6a060c01b611e59565b818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122955760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161228c9190612a35565b60405180910390fd5b6122a16000838361247c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123175760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161230e9190612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123895760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016123809190612a35565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612476578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161246d91906128e4565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124ce5780600260008282546124c29190612d4c565b925050819055506125a1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255a578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161255193929190612ec7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ea5780600260008282540392505081905550612637565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269491906128e4565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126db5780820151818401526020810190506126c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612703826126a1565b61270d81856126ac565b935061271d8185602086016126bd565b612726816126e7565b840191505092915050565b6000602082019050818103600083015261274b81846126f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278382612758565b9050919050565b61279381612778565b811461279e57600080fd5b50565b6000813590506127b08161278a565b92915050565b6000819050919050565b6127c9816127b6565b81146127d457600080fd5b50565b6000813590506127e6816127c0565b92915050565b6000806040838503121561280357612802612753565b5b6000612811858286016127a1565b9250506020612822858286016127d7565b9150509250929050565b60008115159050919050565b6128418161282c565b82525050565b600060208201905061285c6000830184612838565b92915050565b60006020828403121561287857612877612753565b5b6000612886848285016127d7565b91505092915050565b612898816127b6565b82525050565b6128a781612778565b82525050565b60006060820190506128c2600083018661288f565b6128cf602083018561289e565b6128dc604083018461289e565b949350505050565b60006020820190506128f9600083018461288f565b92915050565b60008060006060848603121561291857612917612753565b5b6000612926868287016127a1565b9350506020612937868287016127a1565b9250506040612948868287016127d7565b9150509250925092565b600060ff82169050919050565b61296881612952565b82525050565b6000602082019050612983600083018461295f565b92915050565b60006020828403121561299f5761299e612753565b5b60006129ad848285016127a1565b91505092915050565b6129bf8161282c565b81146129ca57600080fd5b50565b6000813590506129dc816129b6565b92915050565b6000806000606084860312156129fb576129fa612753565b5b6000612a09868287016127d7565b9350506020612a1a868287016127d7565b9250506040612a2b868287016129cd565b9150509250925092565b6000602082019050612a4a600083018461289e565b92915050565b600080600060608486031215612a6957612a68612753565b5b6000612a77868287016127a1565b9350506020612a88868287016127d7565b9250506040612a99868287016127d7565b9150509250925092565b60008060408385031215612aba57612ab9612753565b5b6000612ac8858286016127d7565b9250506020612ad9858286016127d7565b9150509250929050565b600061014082019050612af9600083018d61288f565b612b06602083018c61288f565b612b13604083018b61288f565b612b20606083018a61288f565b612b2d608083018961288f565b612b3a60a083018861288f565b612b4760c083018761288f565b612b5460e083018661288f565b612b62610100830185612838565b612b70610120830184612838565b9b9a5050505050505050505050565b60008060408385031215612b9657612b95612753565b5b6000612ba4858286016127a1565b9250506020612bb5858286016127a1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c0657607f821691505b602082108103612c1957612c18612bbf565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7b6021836126ac565b9150612c8682612c1f565b604082019050919050565b60006020820190508181036000830152612caa81612c6e565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000612ce76018836126ac565b9150612cf282612cb1565b602082019050919050565b60006020820190508181036000830152612d1681612cda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d57826127b6565b9150612d62836127b6565b9250828201905080821115612d7a57612d79612d1d565b5b92915050565b6000612d8b826127b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dbd57612dbc612d1d565b5b600182019050919050565b6000604082019050612ddd600083018561288f565b612dea6020830184612838565b9392505050565b6000612dfc826127b6565b9150612e07836127b6565b9250828202612e15816127b6565b91508282048414831517612e2c57612e2b612d1d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e6d826127b6565b9150612e78836127b6565b925082612e8857612e87612e33565b5b828204905092915050565b6000612e9e826127b6565b9150612ea9836127b6565b9250828203905081811115612ec157612ec0612d1d565b5b92915050565b6000606082019050612edc600083018661289e565b612ee9602083018561288f565b612ef6604083018461288f565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612f5a602b836126ac565b9150612f6582612efe565b604082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612fc66015836126ac565b9150612fd182612f90565b602082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b60006130326014836126ac565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061309e6015836126ac565b91506130a982613068565b602082019050919050565b600060208201905081810360008301526130cd81613091565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061310a6018836126ac565b9150613115826130d4565b602082019050919050565b60006020820190508181036000830152613139816130fd565b905091905056fea2646970667358221220164e0950661b2cb294c642d142835b8d6adcbb949516a31e2a560f60def59ab664736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106101405760003560e01c806356715761116100b657806395d89b411161006f57806395d89b41146104b05780639fcb294b146104db578063a230c5241461050b578063a233627914610548578063a9059cbb1461058e578063dd62ed3e146105cb57610140565b806356715761146103785780635daf08ca146103a3578063642b5bfb146103e05780636db5c8fd1461040b57806370a0823114610436578063883802741461047357610140565b806317c182171161010857806317c182171461024257806318160ddd1461027f57806323b872dd146102aa578063313ce567146102e75780633ff7544214610312578063561b24631461034f57610140565b806306fdde0314610145578063095ea7b3146101705780630b1e7f83146101ad57806311aee380146101ec57806317906c2e14610217575b600080fd5b34801561015157600080fd5b5061015a610608565b6040516101679190612731565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906127ec565b61069a565b6040516101a49190612847565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf9190612862565b6106bd565b6040516101e3939291906128ad565b60405180910390f35b3480156101f857600080fd5b50610201610727565b60405161020e91906128e4565b60405180910390f35b34801561022357600080fd5b5061022c61072d565b60405161023991906128e4565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612862565b610733565b6040516102769190612847565b60405180910390f35b34801561028b57600080fd5b506102946112b4565b6040516102a191906128e4565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906128ff565b6112be565b6040516102de9190612847565b60405180910390f35b3480156102f357600080fd5b506102fc6112ed565b604051610309919061296e565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190612989565b6112f6565b60405161034691906128e4565b60405180910390f35b34801561035b57600080fd5b50610376600480360381019061037191906129e2565b6114a8565b005b34801561038457600080fd5b5061038d611535565b60405161039a91906128e4565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c59190612862565b61153a565b6040516103d79190612a35565b60405180910390f35b3480156103ec57600080fd5b506103f561156d565b60405161040291906128e4565b60405180910390f35b34801561041757600080fd5b50610420611573565b60405161042d91906128e4565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190612989565b61157a565b60405161046a91906128e4565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190612a50565b6115c2565b6040516104a79190612847565b60405180910390f35b3480156104bc57600080fd5b506104c56116f2565b6040516104d29190612731565b60405180910390f35b6104f560048036038101906104f09190612aa3565b611784565b60405161050291906128e4565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190612989565b611d07565b60405161053f9190612847565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190612862565b611d27565b6040516105859a99989796959493929190612ae3565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906127ec565b611d95565b6040516105c29190612847565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190612b7f565b611db8565b6040516105ff91906128e4565b60405180910390f35b60606003805461061790612bee565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612bee565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b6000806106a5611e3f565b90506106b2818585611e47565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b600061074967dac3aac90682d0a560c01b611e59565b61075d67b39c21d68cdffe1c60c01b611e59565b61077167ce472067c2b0c2df60c01b611e59565b600060086000848152602001908152602001600020905061079c67f58ac4b01349d32560c01b611e59565b6107b067c8beac0ae1d41f2660c01b611e59565b6000600a60008360010154815260200190815260200160002090506107df67cffe4b6c51d8d6ff60c01b611e59565b6107f3677ab54d9d5e2a8c8160c01b611e59565b61080767aea0a6a38aae659960c01b611e59565b8160080154421161084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490612c91565b60405180910390fd5b61086167cbaffcbec042717a60c01b611e59565b6108756792abe917095d302160c01b611e59565b61088967541ee57e2b8ee86e60c01b611e59565b61089d67f3849b0062a2e81f60c01b611e59565b600015158260090160009054906101000a900460ff161515146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612cfd565b60405180910390fd5b61090967adefde5d7878333960c01b611e59565b61091d67079d5cbf0e43be9060c01b611e59565b61093167c7ae041a4b6b485a60c01b611e59565b600061094767845e6ea1781dbedc60c01b611e59565b61095b671739d82b0b2951ce60c01b611e59565b6000610971675e2cd5cfbe52ba2360c01b611e59565b61098567c347c5f89ce5784460c01b611e59565b600061099b67c6f94e8b938f471960c01b611e59565b6109af67cc91e2ed96c5a73760c01b611e59565b60005b8560030154811015610aaf576109d267f5a78e2991c8cd9e60c01b611e59565b85600201600082815260200190815260200160002091506109fd6781ecbeb87336730860c01b611e59565b610a116766817dfe8d5fc80f60c01b611e59565b8160010160009054906101000a900460ff1615610a6757610a3c6778c2cae8005fe26360c01b611e59565b610a5067921f1fe729da716360c01b611e59565b816002015484610a609190612d4c565b9350610aa2565b610a7b673ea1d5432961290360c01b611e59565b610a8f678b91eb495247082560c01b611e59565b816002015483610a9f9190612d4c565b92505b80806001019150506109b2565b50610ac4679ac61a1d9b6ec07f60c01b611e59565b818310159550610ade67d1738cf0aeaa619460c01b611e59565b610af267d4b386b9932b7bcf60c01b611e59565b858015610b6d5750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610cbb57610b8667d55ad91794bcb37a60c01b611e59565b610b9a67f217c6559442355c60c01b611e59565b8360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005600060066000815480929190610bd690612d80565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c3a6768cd74202efb46e160c01b611e59565b6001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd0565b610ccf67a380e1a4003c6ff660c01b611e59565b5b610ce46769c7d795c169e3be60c01b611e59565b60018560090160006101000a81548160ff021916908315150217905550610d1567c77cae0687fc053560c01b611e59565b858560090160016101000a81548160ff021916908315150217905550610d4567c3b6ba2ad3b68a9860c01b611e59565b610d5967713c71269f71769e60c01b611e59565b7f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610d8a929190612dc8565b60405180910390a1610da6675db060aafada23a060c01b611e59565b610dba67188fae54829a483160c01b611e59565b60008680610dd85750610dd767e009a90f2fc4cb0460c01b611e5c565b5b8015610df45750610df3670867fce99f94c82860c01b611e63565b5b610dfe5782610e00565b835b9050610e166754d67dce636b93ff60c01b611e59565b610e2a674f4bbaa177f2b8dd60c01b611e59565b60008780610e485750610e4767ed68518fed9812ca60c01b611e5c565b5b8015610e645750610e6367bc4e79370ddfd7a960c01b611e63565b5b610e6e5784610e70565b835b9050610e8667a1e89a213bf469ba60c01b611e59565b610e9a67886d4b507f5156b560c01b611e59565b6000610eb0679a08bc3e15c546cc60c01b611e59565b610ec467c7124adaab8dc02560c01b611e59565b60005b886003015481101561104d57610ee767d9cb89ddc751fe8f60c01b611e59565b8860020160008281526020019081526020016000209450610f1267ff2a60990b9e2cab60c01b611e59565b610f26674d937503c25e368d60c01b611e59565b8460010160009054906101000a900460ff1615158a15150361102b57610f56674cacd0f2aef8f50060c01b611e59565b610f6a671672782669b9832c60c01b611e59565b610f7e673da1e835aa90044b60c01b611e59565b600084866002015485610f919190612df1565b610f9b9190612e62565b9050610fb1674c638ea7e37818ab60c01b611e59565b610fc567077677dc05f4524c60c01b611e59565b611003308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610ffe9190612d4c565b611e6e565b611017670c8139c2449d685d60c01b611e59565b80836110239190612d4c565b925050611040565b61103f67814be35ce77a53f860c01b611e59565b5b8080600101915050610ec7565b50611062676c73dd77be48cde560c01b611e59565b6110766721f3fd2362c51db460c01b611e59565b600081836110849190612e93565b905061109a67133fc2a910e9f96260c01b611e59565b6110ae678795868b7119e10860c01b611e59565b6000811115611127576110cb67172e4c36ca6371fb60c01b611e59565b6110df6783859b45394adcf360c01b611e59565b6110f3676265fe57b3951fa760c01b611e59565b611122308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e6e565b61113c565b61113b67400a548379d28f3860c01b611e59565b5b61115067e124583306ffdf4460c01b611e59565b61116467854cc92cf517c18560c01b611e59565b60005b6006548110156112a55761118567d41c4fd3560eb7b860c01b611e59565b61119967b5627b6705e104e960c01b611e59565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506111e56784824bf7369a77dd60c01b611e59565b6111f967bc4eb4b2969ba3da60c01b611e59565b60006112036112b4565b61120c8361157a565b8d6004015461121b9190612df1565b6112259190612e62565b905061123b67d3fc50d5c28ee35960c01b611e59565b61124f67daf0fa57facb304660c01b611e59565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611295573d6000803e3d6000fd5b5050508080600101915050611167565b50505050505050505050919050565b6000600254905090565b6000806112c9611e3f565b90506112d6858285611f62565b6112e1858585611e6e565b60019150509392505050565b60006012905090565b600061130c67bd452057b0c6389360c01b611e59565b611320670c166c05ec3a8aa360c01b611e59565b600b600081548092919061133390612d80565b91905055905061134d67bf596c00b773f2b960c01b611e59565b611361673c0e83671c1ef34a60c01b611e59565b6000600a6000838152602001908152602001600020905061138c67d9e256bb1a25244560c01b611e59565b828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113e367f818e5a8a94ffd0160c01b611e59565b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061143a676454429f3840d7ae60c01b611e59565b81816000018190555061145767f410e15494820d7960c01b611e59565b61146b67758baccc197269d060c01b611e59565b7f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c8260405161149a91906128e4565b60405180910390a150919050565b6114bc6751ea520e2533955360c01b611e59565b6114d067c82e41b0de4234f860c01b611e59565b6114e4674178e16604de6d0960c01b611e59565b600060086000858152602001908152602001600020905061150f6723c763ad6c342a1660c01b611e59565b61152367380004b981976bb360c01b611e59565b61152f81338585611ff6565b50505050565b603c81565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6201518081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115d8670d5dcbfa8776cd7860c01b611e59565b6115ec67726ae26ab5056e4b60c01b611e59565b6115f68484611d95565b905061160c67338050b330e6385160c01b611e59565b611620670f69f86c70595ea060c01b611e59565b80156116d65761163a67890d124c450d977f60c01b611e59565b61164e67993f18ee99ac02a660c01b611e59565b61166267ac593742f6efbed960c01b611e59565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161169f93929190612ec7565b600060405180830381600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506116eb565b6116ea673b004c25ddc9ed5560c01b611e59565b5b9392505050565b60606004805461170190612bee565b80601f016020809104026020016040519081016040528092919081815260200182805461172d90612bee565b801561177a5780601f1061174f5761010080835404028352916020019161177a565b820191906000526020600020905b81548152906001019060200180831161175d57829003601f168201915b5050505050905090565b600061179a67d3b0f5975ee3904960c01b611e59565b6117ae6720909db29eac6a6d60c01b611e59565b6117c267180fd9e5f5c85d5760c01b611e59565b6117d667bd1a6b0b366a276960c01b611e59565b60003411611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090612f70565b60405180910390fd5b61182d671a4861910ee03b4560c01b611e59565b611841672df1be162d0b105160c01b611e59565b61185567a3a96cf26dcd0fa060c01b611e59565b61186967db465668148a599e60c01b611e59565b603c8210156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490612fdc565b60405180910390fd5b6118c1678f594dc606b670e060c01b611e59565b6118d567ddeea77bca1b0afc60c01b611e59565b6118e9675836a1efcf2a3acb60c01b611e59565b6118fd6790f1bb59896459e660c01b611e59565b62015180821115611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90613048565b60405180910390fd5b6119576763e4621d9a5ac86860c01b611e59565b61196b67bb49da5cb6313d4560c01b611e59565b61197f6756f119f1902e823660c01b611e59565b6000600a600085815260200190815260200160002090506119aa67a446529e5dd9dac860c01b611e59565b6119be679bd00a681e72740360c01b611e59565b6119d1665863f93168cd9f60c01b611e59565b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b906130b4565b60405180910390fd5b611a7867cf82f94dd6c4cf4b60c01b611e59565b611a8c6774a37bd1db8f47ae60c01b611e59565b60096000815480929190611a9f90612d80565b919050559150611ab9672bec04bb090e4b4e60c01b611e59565b611acd67f05e08a4dc11b13d60c01b611e59565b6000600860008481526020019081526020016000209050611af867e88d550ad9e5682760c01b611e59565b848160010181905550611b1567c83689a9340395cf60c01b611e59565b348160040181905550611b32677acafc27b385dd3360c01b611e59565b838160070181905550611b4f67d23c16fe0d09f21760c01b611e59565b8342611b5b9190612d4c565b8160080181905550611b7767b71cb807fdee35b360c01b611e59565b828160000181905550611b94677e98cbc87e1db78b60c01b611e59565b611ba867b3258784852ba2c060c01b611e59565b611bd68260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634612223565b611bea67c1fd518409581a9560c01b611e59565b611bfe6775949e9ba9c2cd0260c01b611e59565b611c3b818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600234611c349190612e62565b6001611ff6565b611c4f6742102a30d6974afb60c01b611e59565b611c6367ad5805e492db021b60c01b611e59565b611ca0818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600234611c999190612e62565b6000611ff6565b611cb4674d43f2d1a93cf7a860c01b611e59565b611cc867454c6b7b876c8bac60c01b611e59565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a83604051611cf791906128e4565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a900460ff16908060090160019054906101000a900460ff1690508a565b600080611da0611e3f565b9050611dad818585611e6e565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b611e5483838360016122a5565b505050565b50565b6000919050565b600060019050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee05760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ed79190612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f525760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f499190612a35565b60405180910390fd5b611f5d83838361247c565b505050565b6000611f6e8484611db8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ff05781811015611fe0578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611fd793929190612ec7565b60405180910390fd5b611fef848484840360006122a5565b5b50505050565b61200a67fed28ade693faf3360c01b611e59565b61201e675f4e63757db48bde60c01b611e59565b61203267282bb26b1c1384d360c01b611e59565b612046671bf116c65016fbac60c01b611e59565b836008015442111561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208490613120565b60405180910390fd5b6120a167442f0ea87dedb4b560c01b611e59565b6120b567932be9f0cfca29e160c01b611e59565b6120c96792d7e8d119460e0e60c01b611e59565b6120d4833084611e6e565b6120e867b64305496b92c63560c01b611e59565b6120fc6764ef3b2a8abcff8260c01b611e59565b600084600301600081548092919061211390612d80565b91905055905061212d67631d46312c106bf660c01b611e59565b61214167f28f874bd974da2260c01b611e59565b6000856002016000838152602001908152602001600020905061216e67225d17d9b93f8f1260c01b611e59565b848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506121c567d4f63c07087093b660c01b611e59565b828160010160006101000a81548160ff0219169083151502179055506121f56789a8998a6c004c4260c01b611e59565b838160020181905550612212676421fe0932b6b6a060c01b611e59565b818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122955760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161228c9190612a35565b60405180910390fd5b6122a16000838361247c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123175760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161230e9190612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123895760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016123809190612a35565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612476578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161246d91906128e4565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124ce5780600260008282546124c29190612d4c565b925050819055506125a1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255a578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161255193929190612ec7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ea5780600260008282540392505081905550612637565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269491906128e4565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126db5780820151818401526020810190506126c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612703826126a1565b61270d81856126ac565b935061271d8185602086016126bd565b612726816126e7565b840191505092915050565b6000602082019050818103600083015261274b81846126f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278382612758565b9050919050565b61279381612778565b811461279e57600080fd5b50565b6000813590506127b08161278a565b92915050565b6000819050919050565b6127c9816127b6565b81146127d457600080fd5b50565b6000813590506127e6816127c0565b92915050565b6000806040838503121561280357612802612753565b5b6000612811858286016127a1565b9250506020612822858286016127d7565b9150509250929050565b60008115159050919050565b6128418161282c565b82525050565b600060208201905061285c6000830184612838565b92915050565b60006020828403121561287857612877612753565b5b6000612886848285016127d7565b91505092915050565b612898816127b6565b82525050565b6128a781612778565b82525050565b60006060820190506128c2600083018661288f565b6128cf602083018561289e565b6128dc604083018461289e565b949350505050565b60006020820190506128f9600083018461288f565b92915050565b60008060006060848603121561291857612917612753565b5b6000612926868287016127a1565b9350506020612937868287016127a1565b9250506040612948868287016127d7565b9150509250925092565b600060ff82169050919050565b61296881612952565b82525050565b6000602082019050612983600083018461295f565b92915050565b60006020828403121561299f5761299e612753565b5b60006129ad848285016127a1565b91505092915050565b6129bf8161282c565b81146129ca57600080fd5b50565b6000813590506129dc816129b6565b92915050565b6000806000606084860312156129fb576129fa612753565b5b6000612a09868287016127d7565b9350506020612a1a868287016127d7565b9250506040612a2b868287016129cd565b9150509250925092565b6000602082019050612a4a600083018461289e565b92915050565b600080600060608486031215612a6957612a68612753565b5b6000612a77868287016127a1565b9350506020612a88868287016127d7565b9250506040612a99868287016127d7565b9150509250925092565b60008060408385031215612aba57612ab9612753565b5b6000612ac8858286016127d7565b9250506020612ad9858286016127d7565b9150509250929050565b600061014082019050612af9600083018d61288f565b612b06602083018c61288f565b612b13604083018b61288f565b612b20606083018a61288f565b612b2d608083018961288f565b612b3a60a083018861288f565b612b4760c083018761288f565b612b5460e083018661288f565b612b62610100830185612838565b612b70610120830184612838565b9b9a5050505050505050505050565b60008060408385031215612b9657612b95612753565b5b6000612ba4858286016127a1565b9250506020612bb5858286016127a1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c0657607f821691505b602082108103612c1957612c18612bbf565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7b6021836126ac565b9150612c8682612c1f565b604082019050919050565b60006020820190508181036000830152612caa81612c6e565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000612ce76018836126ac565b9150612cf282612cb1565b602082019050919050565b60006020820190508181036000830152612d1681612cda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d57826127b6565b9150612d62836127b6565b9250828201905080821115612d7a57612d79612d1d565b5b92915050565b6000612d8b826127b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dbd57612dbc612d1d565b5b600182019050919050565b6000604082019050612ddd600083018561288f565b612dea6020830184612838565b9392505050565b6000612dfc826127b6565b9150612e07836127b6565b9250828202612e15816127b6565b91508282048414831517612e2c57612e2b612d1d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e6d826127b6565b9150612e78836127b6565b925082612e8857612e87612e33565b5b828204905092915050565b6000612e9e826127b6565b9150612ea9836127b6565b9250828203905081811115612ec157612ec0612d1d565b5b92915050565b6000606082019050612edc600083018661289e565b612ee9602083018561288f565b612ef6604083018461288f565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612f5a602b836126ac565b9150612f6582612efe565b604082019050919050565b60006020820190508181036000830152612f8981612f4d565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612fc66015836126ac565b9150612fd182612f90565b602082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b60006130326014836126ac565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061309e6015836126ac565b91506130a982613068565b602082019050919050565b600060208201905081810360008301526130cd81613091565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061310a6018836126ac565b9150613115826130d4565b602082019050919050565b60006020820190508181036000830152613139816130fd565b905091905056fea2646970667358221220164e0950661b2cb294c642d142835b8d6adcbb949516a31e2a560f60def59ab664736f6c63430008180033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/client/src/assets/Work1.json b/client/src/assets/Work1.json deleted file mode 100644 index cfead0d..0000000 --- a/client/src/assets/Work1.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Work1", - "sourceName": "contracts/Work1.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DAO", - "name": "dao_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "price_", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "stakeIndex", - "type": "uint256" - } - ], - "name": "AvailabilityStaked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "requestIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approval", - "type": "bool" - } - ], - "name": "WorkApprovalSubmitted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "worker", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "requestIndex", - "type": "uint256" - } - ], - "name": "WorkAssigned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "requestIndex", - "type": "uint256" - } - ], - "name": "WorkEvidenceSubmitted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "acceptAvailability", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "stakeIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "extendAvailability", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "price", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "stakeIndex", - "type": "uint256" - } - ], - "name": "reclaimAvailability", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "requestCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "requestWork", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "requests", - "outputs": [ - { - "internalType": "address", - "name": "customer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "internalType": "enum WorkStatus", - "name": "status", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "stakeIndex", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approval", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "poolIndex", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "stakeCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "stakes", - "outputs": [ - { - "internalType": "address", - "name": "worker", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "endTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "assigned", - "type": "bool" - }, - { - "internalType": "bool", - "name": "reclaimed", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "requestIndex", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approval", - "type": "bool" - } - ], - "name": "submitWorkApproval", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "requestIndex", - "type": "uint256" - } - ], - "name": "submitWorkEvidence", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60c06040523480156200001157600080fd5b506040516200294d3803806200294d83398181016040528101906200003791906200018b565b6200005367a7bb5698785b458160c01b620000cf60201b60201c565b6200006f67710ce0863a79f28360c01b620000cf60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620000bf67c01ed73ecb362bb960c01b620000cf60201b60201c565b8060a081815250505050620001d2565b50565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200010482620000d7565b9050919050565b60006200011882620000f7565b9050919050565b6200012a816200010b565b81146200013657600080fd5b50565b6000815190506200014a816200011f565b92915050565b6000819050919050565b620001658162000150565b81146200017157600080fd5b50565b60008151905062000185816200015a565b92915050565b60008060408385031215620001a557620001a4620000d2565b5b6000620001b58582860162000139565b9250506020620001c88582860162000174565b9150509250929050565b60805160a0516127406200020d600039600081816104f80152610f5a0152600081816109fb01528181610d6e0152610ea501526127406000f3fe60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190611cc7565b61027c565b005b6100d26104a6565b005b3480156100e057600080fd5b506100e961068c565b6040516100f69190611d29565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611d44565b610692565b005b34801561013457600080fd5b5061014f600480360381019061014a9190611d44565b610aff565b60405161016196959493929190611e12565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611e9f565b610b75565b005b34801561019f57600080fd5b506101a8610f58565b6040516101b59190611d29565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190611edf565b610f7c565b005b3480156101f357600080fd5b5061020e60048036038101906102099190611d44565b61130e565b005b34801561021c57600080fd5b506102256115f0565b6040516102329190611d29565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611d44565b6115f6565b604051610273959493929190611f1f565b60405180910390f35b61029067b6a34379c150f74460c01b611666565b6102a46733d4bb95b6895f2760c01b611666565b6102b8678b315a4189d8df7360c01b611666565b6102cc67f5c843ea823907f760c01b611666565b6000821161030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030690611fcf565b60405180910390fd5b610323679fa117a160063c2260c01b611666565b61033767c8a8619fd7268c4c60c01b611666565b61034b67922b3ddd7fb2249760c01b611666565b6000600160008154809291906103609061201e565b91905055905061037a67f8a4c95e20f605e260c01b611666565b61038e672d73a44bbd6293da60c01b611666565b600080600083815260200190815260200160002090506103b8679e664166c95db8a360c01b611666565b848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061040f67133ccbbe517263a460c01b611666565b83816001018190555061042c67f49e168a9f87f51160c01b611666565b82426104389190612066565b816002018190555061045467a5880dab79ce9c7c60c01b611666565b610468679855d649efe7d5f960c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516104979190611d29565b60405180910390a15050505050565b6104ba6748faccab225b9ee560c01b611666565b6104ce6794f44c9113c5c69d60c01b611666565b6104e267b7e1daa4527925d760c01b611666565b6104f6670364fdd6b93dc6cb60c01b611666565b7f0000000000000000000000000000000000000000000000000000000000000000341015610559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610550906120e6565b60405180910390fd5b61056d672e7642ebd767403660c01b611666565b6105816726c5fe053750220060c01b611666565b61059567e739815cc93a1aab60c01b611666565b6000600360008154809291906105aa9061201e565b9190505590506105c46748cc52136305c91260c01b611666565b6105d867e7455a2b83c3bd1160c01b611666565b600060026000838152602001908152602001600020905061060367c0742509e02ea37b60c01b611666565b338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061065a6760105e2770350f8460c01b611666565b34816001018190555061067767a859e4570b0cee3b60c01b611666565b61068082611669565b81600301819055505050565b60035481565b6106a667868ac98771d2e32060c01b611666565b6106ba6727b22914a074bafe60c01b611666565b6106ce678f73216abe71b84a60c01b611666565b600080600083815260200190815260200160002090506106f867e55b5c7d2086784560c01b611666565b61070c677dd9a7a7a591e33d60c01b611666565b6107206723d6803d66dbcf1960c01b611666565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a990612178565b60405180910390fd5b6107c6672ec430ad833d22fb60c01b611666565b6107da67d6c6fab74319630660c01b611666565b6107ee67d35c37c173144a0460c01b611666565b61080267bbce7f06f818a92960c01b611666565b80600201544211610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f9061220a565b60405180910390fd5b61085c675e81b48707729e2160c01b611666565b6108706735a81845108e604f60c01b611666565b61088467bb021e1298f5f55a60c01b611666565b61089867a76b747028baf65060c01b611666565b8060030160019054906101000a900460ff16156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e190612276565b60405180910390fd5b6108fe67c258cfa9f3338f2860c01b611666565b61091267936eaf18968475cf60c01b611666565b61092667f75bd267c5046d6b60c01b611666565b61093a6708d31c2afcf6d4ff60c01b611666565b8060030160009054906101000a900460ff161561098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612308565b60405180910390fd5b6109a06797bade51eff0f7b060c01b611666565b6109b467fc3e3c5aa804ebb860c01b611666565b60018160030160016101000a81548160ff0219169083151502179055506109e5670e07f5c0b4fb19d560c01b611666565b6109f967498d8171d258548160c01b611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610a58929190612328565b6020604051808303816000875af1158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612366565b50610ab067d448eae84afa20ab60c01b611666565b610ac467cb7b786e2d6e935760c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610af39190611d29565b60405180910390a15050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b610b8967c981dd20f82d220360c01b611666565b610b9d677e05d1e69ef8115c60c01b611666565b610bb167351ef03eb27d92e860c01b611666565b6000600260008481526020019081526020016000209050610bdb6685aec41dbae04c60c01b611666565b610bef67aeb134822362964d60c01b611666565b610c0367219b72234ac8d23b60c01b611666565b60016003811115610c1757610c16611d80565b5b8160020160009054906101000a900460ff166003811115610c3b57610c3a611d80565b5b14610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906123df565b60405180910390fd5b610c8f6740dc09e065c5e02f60c01b611666565b610ca36744c5324a936d5ab960c01b611666565b610cb767a3f6c6728eabff4860c01b611666565b6000806000836003015481526020019081526020016000209050610ce567531207a48902245260c01b611666565b60028260020160006101000a81548160ff02191690836003811115610d0d57610d0c611d80565b5b0217905550610d26670ff324a4b840807f60c01b611666565b828260040160006101000a81548160ff021916908315150217905550610d5667bb7f1767b0105cbb60c01b611666565b610d6a67c36ec2a54876877b60c01b611666565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610de991906123ff565b6020604051808303816000875af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c919061242f565b9050610e42674828eb3ad99a916660c01b611666565b610e5667d3324492d150122760c01b611666565b7f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610e8792919061245c565b60405180910390a1610ea3675e153679650d9c3960c01b611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b8152600401610f06929190612485565b60206040518083038185885af1158015610f24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f49919061242f565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f9067a4f3e1b9d9ac648860c01b611666565b610fa4670949bbff5016457c60c01b611666565b610fb867232e8aa4e389993660c01b611666565b60008060008481526020019081526020016000209050610fe267adb4bb5327d1ba5e60c01b611666565b610ff6670b0d09464c01d7b160c01b611666565b61100a6717e2127a81e0f3cd60c01b611666565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612520565b60405180910390fd5b6110b067b4e1a3923ff3935060c01b611666565b6110c4679652e6ccea2b9bd760c01b611666565b6110d867cc3349c2a29a39a160c01b611666565b6110ec67883fafd4cd9f065460c01b611666565b8060030160019054906101000a900460ff161561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113590612276565b60405180910390fd5b6111526736ed8d2cc0cade6360c01b611666565b61116667e689dab26901e34360c01b611666565b61117a67bb4134c6cd31162a60c01b611666565b61118e670efb6ecac9bebd8c60c01b611666565b8060030160009054906101000a900460ff16156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612308565b60405180910390fd5b6111f467e3693fc7f5015ba560c01b611666565b6112086775c3aedf75c7a29560c01b611666565b61121c672072817885ca37f260c01b611666565b80600201544211156112695761123c67b089df776862b8de60c01b611666565b61125067452d129c0e9417b560c01b611666565b814261125c9190612066565b81600201819055506112aa565b61127d67dd1da143dbd6dc0660c01b611666565b61129167f6a440f10c0375ce60c01b611666565b8181600201546112a19190612066565b81600201819055505b6112be6738efd9cb27dca89760c01b611666565b6112d26710311bbde0ccd4c360c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516113019190611d29565b60405180910390a1505050565b611322678d91a86a4aa3b66360c01b611666565b61133667327d08d59f9b076060c01b611666565b61134a6723282c22bbed4ea360c01b611666565b600060026000838152602001908152602001600020905061137567bacc28124e891c9360c01b611666565b61138967e915f4cbcaf1ed7a60c01b611666565b61139d679c05824cac5e8ea260c01b611666565b600060038111156113b1576113b0611d80565b5b8160020160009054906101000a900460ff1660038111156113d5576113d4611d80565b5b14611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c9061258c565b60405180910390fd5b611429670e79debcdc9b000260c01b611666565b61143d677b2c4fefd964842060c01b611666565b61145167fc1f17e23dd525e460c01b611666565b600080600083600301548152602001908152602001600020905061147f670ed40ead322de28c60c01b611666565b611493676a40ab02a0996d2160c01b611666565b6114a6665fc80065c0666660c01b611666565b3373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061261e565b60405180910390fd5b61154c679bac98414b0997e960c01b611666565b61155f667a79d718a877da60c01b611666565b60018260020160006101000a81548160ff0219169083600381111561158757611586611d80565b5b02179055506115a06738bff261907e917760c01b611666565b6115b4673c1223a71ccadf8860c01b611666565b7ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc836040516115e39190611d29565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b50565b600061167f670367728456d7035960c01b611666565b61169367b4f2c5f4d5b52b1c60c01b611666565b61169b611797565b90506116b1675c361ec7c77efeba60c01b611666565b6116c567803eef0d5b48cdd960c01b611666565b600080600083815260200190815260200160002090506116ef672f97b2509f5c71b760c01b611666565b60018160030160006101000a81548160ff021916908315150217905550611720674750ae7e618cf5b360c01b611666565b611734671dbe5938fff1601660c01b611666565b7f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051611789929190612328565b60405180910390a150919050565b60006117ad67ebfc14e5e5a0684a60c01b611666565b6117c167b6c60033bc697ab660c01b611666565b6117d567d1fef5f65396471660c01b611666565b60006117eb67eb0642f786e8ac8460c01b611666565b6117ff675326c6a8c34bd77960c01b611666565b60005b6001548110156119405761182067f4dff4f0735f86e960c01b611666565b6118346708ec413e17deb10b60c01b611666565b60008082815260200190815260200160002060030160009054906101000a900460ff16156118755761187067e639249fedea1f6a60c01b611666565b611933565b61188967d31ec1b3ae49f37b60c01b611666565b61189d67f25713f8009f90af60c01b611666565b6118b167d38bcb84209d09b860c01b611666565b600080828152602001908152602001600020600201544211156118e7576118e2677b437f9289a366b960c01b611666565b611933565b6118fb67abfe696228ed3a0160c01b611666565b61190f676855bded90cdd25260c01b611666565b60008082815260200190815260200160002060010154826119309190612066565b91505b8080600101915050611802565b50611955677e670c3542cc2f9460c01b611666565b6119696758e90a6e44f3e23660c01b611666565b61197d67204b4defe83bd03c60c01b611666565b600081116119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b79061268a565b60405180910390fd5b6119d467457c8c11343d01df60c01b611666565b6119e867e431913f0d4d23e060c01b611666565b6119fc67c16b70396e8dacb360c01b611666565b60008144611a0a91906126d9565b9050611a20679a1c68e42ddcf75660c01b611666565b611a3467daf1da1508fd037c60c01b611666565b6000611a4a670c065895250ae13960c01b611666565b611a5e672c6ca343fdc04a1e60c01b611666565b60005b600154811015611c2757611a7f676f6cd7f6333b856d60c01b611666565b611a9367f3898876cbce7f4560c01b611666565b60008082815260200190815260200160002060030160009054906101000a900460ff1615611ad457611acf670d79200c9d4cb2c460c01b611666565b611c1a565b611ae867c878e81db6d004ac60c01b611666565b611afc674272f623001815e660c01b611666565b611b1067413f72ecd4aef95660c01b611666565b60008082815260200190815260200160002060020154421115611b4657611b4167c186163086757c8e60c01b611666565b611c1a565b611b5a6788c0200e6061f33f60c01b611666565b611b6e67b92385abb29bd60b60c01b611666565b6000808281526020019081526020016000206001015482611b8f9190612066565b9150611ba5678ac32d065470f44860c01b611666565b611bb967375313ff93095f5460c01b611666565b82821115611c0557611bd5670dd23a0330b66c2f60c01b611666565b611be9673347f2379594272d60c01b611666565b809450611c0067ca230b5cfdb171f260c01b611666565b611c27565b611c19678c0f231ff1c62ce460c01b611666565b5b8080600101915050611a61565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5e82611c33565b9050919050565b611c6e81611c53565b8114611c7957600080fd5b50565b600081359050611c8b81611c65565b92915050565b6000819050919050565b611ca481611c91565b8114611caf57600080fd5b50565b600081359050611cc181611c9b565b92915050565b600080600060608486031215611ce057611cdf611c2e565b5b6000611cee86828701611c7c565b9350506020611cff86828701611cb2565b9250506040611d1086828701611cb2565b9150509250925092565b611d2381611c91565b82525050565b6000602082019050611d3e6000830184611d1a565b92915050565b600060208284031215611d5a57611d59611c2e565b5b6000611d6884828501611cb2565b91505092915050565b611d7a81611c53565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611dc057611dbf611d80565b5b50565b6000819050611dd182611daf565b919050565b6000611de182611dc3565b9050919050565b611df181611dd6565b82525050565b60008115159050919050565b611e0c81611df7565b82525050565b600060c082019050611e276000830189611d71565b611e346020830188611d1a565b611e416040830187611de8565b611e4e6060830186611d1a565b611e5b6080830185611e03565b611e6860a0830184611d1a565b979650505050505050565b611e7c81611df7565b8114611e8757600080fd5b50565b600081359050611e9981611e73565b92915050565b60008060408385031215611eb657611eb5611c2e565b5b6000611ec485828601611cb2565b9250506020611ed585828601611e8a565b9150509250929050565b60008060408385031215611ef657611ef5611c2e565b5b6000611f0485828601611cb2565b9250506020611f1585828601611cb2565b9150509250929050565b600060a082019050611f346000830188611d71565b611f416020830187611d1a565b611f4e6040830186611d1a565b611f5b6060830185611e03565b611f686080830184611e03565b9695505050505050565b600082825260208201905092915050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb9601183611f72565b9150611fc482611f83565b602082019050919050565b60006020820190508181036000830152611fe881611fac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061202982611c91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205b5761205a611fef565b5b600182019050919050565b600061207182611c91565b915061207c83611c91565b925082820190508082111561209457612093611fef565b5b92915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b60006120d0601083611f72565b91506120db8261209a565b602082019050919050565b600060208201905081810360008301526120ff816120c3565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b6000612162603483611f72565b915061216d82612106565b604082019050919050565b6000602082019050818103600083015261219181612155565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006121f4602283611f72565b91506121ff82612198565b604082019050919050565b60006020820190508181036000830152612223816121e7565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b6000612260602083611f72565b915061226b8261222a565b602082019050919050565b6000602082019050818103600083015261228f81612253565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b60006122f2602483611f72565b91506122fd82612296565b604082019050919050565b60006020820190508181036000830152612321816122e5565b9050919050565b600060408201905061233d6000830185611d71565b61234a6020830184611d1a565b9392505050565b60008151905061236081611e73565b92915050565b60006020828403121561237c5761237b611c2e565b5b600061238a84828501612351565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006123c9602083611f72565b91506123d482612393565b602082019050919050565b600060208201905081810360008301526123f8816123bc565b9050919050565b60006020820190506124146000830184611d71565b92915050565b60008151905061242981611c9b565b92915050565b60006020828403121561244557612444611c2e565b5b60006124538482850161241a565b91505092915050565b60006040820190506124716000830185611d1a565b61247e6020830184611e03565b9392505050565b600060408201905061249a6000830185611d1a565b6124a76020830184611d1a565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b600061250a603383611f72565b9150612515826124ae565b604082019050919050565b60006020820190508181036000830152612539816124fd565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612576601883611f72565b915061258182612540565b602082019050919050565b600060208201905081810360008301526125a581612569565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612608603a83611f72565b9150612613826125ac565b604082019050919050565b60006020820190508181036000830152612637816125fb565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612674601a83611f72565b915061267f8261263e565b602082019050919050565b600060208201905081810360008301526126a381612667565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006126e482611c91565b91506126ef83611c91565b9250826126ff576126fe6126aa565b5b82820690509291505056fea26469706673582212203b316ef44813f05c2a7ad3d195c040ecc530e859ae0bd1ab6b23a746136c300c64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c39190611cc7565b61027c565b005b6100d26104a6565b005b3480156100e057600080fd5b506100e961068c565b6040516100f69190611d29565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611d44565b610692565b005b34801561013457600080fd5b5061014f600480360381019061014a9190611d44565b610aff565b60405161016196959493929190611e12565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c9190611e9f565b610b75565b005b34801561019f57600080fd5b506101a8610f58565b6040516101b59190611d29565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190611edf565b610f7c565b005b3480156101f357600080fd5b5061020e60048036038101906102099190611d44565b61130e565b005b34801561021c57600080fd5b506102256115f0565b6040516102329190611d29565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611d44565b6115f6565b604051610273959493929190611f1f565b60405180910390f35b61029067b6a34379c150f74460c01b611666565b6102a46733d4bb95b6895f2760c01b611666565b6102b8678b315a4189d8df7360c01b611666565b6102cc67f5c843ea823907f760c01b611666565b6000821161030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030690611fcf565b60405180910390fd5b610323679fa117a160063c2260c01b611666565b61033767c8a8619fd7268c4c60c01b611666565b61034b67922b3ddd7fb2249760c01b611666565b6000600160008154809291906103609061201e565b91905055905061037a67f8a4c95e20f605e260c01b611666565b61038e672d73a44bbd6293da60c01b611666565b600080600083815260200190815260200160002090506103b8679e664166c95db8a360c01b611666565b848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061040f67133ccbbe517263a460c01b611666565b83816001018190555061042c67f49e168a9f87f51160c01b611666565b82426104389190612066565b816002018190555061045467a5880dab79ce9c7c60c01b611666565b610468679855d649efe7d5f960c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516104979190611d29565b60405180910390a15050505050565b6104ba6748faccab225b9ee560c01b611666565b6104ce6794f44c9113c5c69d60c01b611666565b6104e267b7e1daa4527925d760c01b611666565b6104f6670364fdd6b93dc6cb60c01b611666565b7f0000000000000000000000000000000000000000000000000000000000000000341015610559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610550906120e6565b60405180910390fd5b61056d672e7642ebd767403660c01b611666565b6105816726c5fe053750220060c01b611666565b61059567e739815cc93a1aab60c01b611666565b6000600360008154809291906105aa9061201e565b9190505590506105c46748cc52136305c91260c01b611666565b6105d867e7455a2b83c3bd1160c01b611666565b600060026000838152602001908152602001600020905061060367c0742509e02ea37b60c01b611666565b338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061065a6760105e2770350f8460c01b611666565b34816001018190555061067767a859e4570b0cee3b60c01b611666565b61068082611669565b81600301819055505050565b60035481565b6106a667868ac98771d2e32060c01b611666565b6106ba6727b22914a074bafe60c01b611666565b6106ce678f73216abe71b84a60c01b611666565b600080600083815260200190815260200160002090506106f867e55b5c7d2086784560c01b611666565b61070c677dd9a7a7a591e33d60c01b611666565b6107206723d6803d66dbcf1960c01b611666565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a990612178565b60405180910390fd5b6107c6672ec430ad833d22fb60c01b611666565b6107da67d6c6fab74319630660c01b611666565b6107ee67d35c37c173144a0460c01b611666565b61080267bbce7f06f818a92960c01b611666565b80600201544211610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f9061220a565b60405180910390fd5b61085c675e81b48707729e2160c01b611666565b6108706735a81845108e604f60c01b611666565b61088467bb021e1298f5f55a60c01b611666565b61089867a76b747028baf65060c01b611666565b8060030160019054906101000a900460ff16156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e190612276565b60405180910390fd5b6108fe67c258cfa9f3338f2860c01b611666565b61091267936eaf18968475cf60c01b611666565b61092667f75bd267c5046d6b60c01b611666565b61093a6708d31c2afcf6d4ff60c01b611666565b8060030160009054906101000a900460ff161561098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612308565b60405180910390fd5b6109a06797bade51eff0f7b060c01b611666565b6109b467fc3e3c5aa804ebb860c01b611666565b60018160030160016101000a81548160ff0219169083151502179055506109e5670e07f5c0b4fb19d560c01b611666565b6109f967498d8171d258548160c01b611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610a58929190612328565b6020604051808303816000875af1158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612366565b50610ab067d448eae84afa20ab60c01b611666565b610ac467cb7b786e2d6e935760c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610af39190611d29565b60405180910390a15050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b610b8967c981dd20f82d220360c01b611666565b610b9d677e05d1e69ef8115c60c01b611666565b610bb167351ef03eb27d92e860c01b611666565b6000600260008481526020019081526020016000209050610bdb6685aec41dbae04c60c01b611666565b610bef67aeb134822362964d60c01b611666565b610c0367219b72234ac8d23b60c01b611666565b60016003811115610c1757610c16611d80565b5b8160020160009054906101000a900460ff166003811115610c3b57610c3a611d80565b5b14610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c72906123df565b60405180910390fd5b610c8f6740dc09e065c5e02f60c01b611666565b610ca36744c5324a936d5ab960c01b611666565b610cb767a3f6c6728eabff4860c01b611666565b6000806000836003015481526020019081526020016000209050610ce567531207a48902245260c01b611666565b60028260020160006101000a81548160ff02191690836003811115610d0d57610d0c611d80565b5b0217905550610d26670ff324a4b840807f60c01b611666565b828260040160006101000a81548160ff021916908315150217905550610d5667bb7f1767b0105cbb60c01b611666565b610d6a67c36ec2a54876877b60c01b611666565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610de991906123ff565b6020604051808303816000875af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c919061242f565b9050610e42674828eb3ad99a916660c01b611666565b610e5667d3324492d150122760c01b611666565b7f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610e8792919061245c565b60405180910390a1610ea3675e153679650d9c3960c01b611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b8152600401610f06929190612485565b60206040518083038185885af1158015610f24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f49919061242f565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f9067a4f3e1b9d9ac648860c01b611666565b610fa4670949bbff5016457c60c01b611666565b610fb867232e8aa4e389993660c01b611666565b60008060008481526020019081526020016000209050610fe267adb4bb5327d1ba5e60c01b611666565b610ff6670b0d09464c01d7b160c01b611666565b61100a6717e2127a81e0f3cd60c01b611666565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390612520565b60405180910390fd5b6110b067b4e1a3923ff3935060c01b611666565b6110c4679652e6ccea2b9bd760c01b611666565b6110d867cc3349c2a29a39a160c01b611666565b6110ec67883fafd4cd9f065460c01b611666565b8060030160019054906101000a900460ff161561113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113590612276565b60405180910390fd5b6111526736ed8d2cc0cade6360c01b611666565b61116667e689dab26901e34360c01b611666565b61117a67bb4134c6cd31162a60c01b611666565b61118e670efb6ecac9bebd8c60c01b611666565b8060030160009054906101000a900460ff16156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612308565b60405180910390fd5b6111f467e3693fc7f5015ba560c01b611666565b6112086775c3aedf75c7a29560c01b611666565b61121c672072817885ca37f260c01b611666565b80600201544211156112695761123c67b089df776862b8de60c01b611666565b61125067452d129c0e9417b560c01b611666565b814261125c9190612066565b81600201819055506112aa565b61127d67dd1da143dbd6dc0660c01b611666565b61129167f6a440f10c0375ce60c01b611666565b8181600201546112a19190612066565b81600201819055505b6112be6738efd9cb27dca89760c01b611666565b6112d26710311bbde0ccd4c360c01b611666565b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516113019190611d29565b60405180910390a1505050565b611322678d91a86a4aa3b66360c01b611666565b61133667327d08d59f9b076060c01b611666565b61134a6723282c22bbed4ea360c01b611666565b600060026000838152602001908152602001600020905061137567bacc28124e891c9360c01b611666565b61138967e915f4cbcaf1ed7a60c01b611666565b61139d679c05824cac5e8ea260c01b611666565b600060038111156113b1576113b0611d80565b5b8160020160009054906101000a900460ff1660038111156113d5576113d4611d80565b5b14611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c9061258c565b60405180910390fd5b611429670e79debcdc9b000260c01b611666565b61143d677b2c4fefd964842060c01b611666565b61145167fc1f17e23dd525e460c01b611666565b600080600083600301548152602001908152602001600020905061147f670ed40ead322de28c60c01b611666565b611493676a40ab02a0996d2160c01b611666565b6114a6665fc80065c0666660c01b611666565b3373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061261e565b60405180910390fd5b61154c679bac98414b0997e960c01b611666565b61155f667a79d718a877da60c01b611666565b60018260020160006101000a81548160ff0219169083600381111561158757611586611d80565b5b02179055506115a06738bff261907e917760c01b611666565b6115b4673c1223a71ccadf8860c01b611666565b7ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc836040516115e39190611d29565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b50565b600061167f670367728456d7035960c01b611666565b61169367b4f2c5f4d5b52b1c60c01b611666565b61169b611797565b90506116b1675c361ec7c77efeba60c01b611666565b6116c567803eef0d5b48cdd960c01b611666565b600080600083815260200190815260200160002090506116ef672f97b2509f5c71b760c01b611666565b60018160030160006101000a81548160ff021916908315150217905550611720674750ae7e618cf5b360c01b611666565b611734671dbe5938fff1601660c01b611666565b7f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051611789929190612328565b60405180910390a150919050565b60006117ad67ebfc14e5e5a0684a60c01b611666565b6117c167b6c60033bc697ab660c01b611666565b6117d567d1fef5f65396471660c01b611666565b60006117eb67eb0642f786e8ac8460c01b611666565b6117ff675326c6a8c34bd77960c01b611666565b60005b6001548110156119405761182067f4dff4f0735f86e960c01b611666565b6118346708ec413e17deb10b60c01b611666565b60008082815260200190815260200160002060030160009054906101000a900460ff16156118755761187067e639249fedea1f6a60c01b611666565b611933565b61188967d31ec1b3ae49f37b60c01b611666565b61189d67f25713f8009f90af60c01b611666565b6118b167d38bcb84209d09b860c01b611666565b600080828152602001908152602001600020600201544211156118e7576118e2677b437f9289a366b960c01b611666565b611933565b6118fb67abfe696228ed3a0160c01b611666565b61190f676855bded90cdd25260c01b611666565b60008082815260200190815260200160002060010154826119309190612066565b91505b8080600101915050611802565b50611955677e670c3542cc2f9460c01b611666565b6119696758e90a6e44f3e23660c01b611666565b61197d67204b4defe83bd03c60c01b611666565b600081116119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b79061268a565b60405180910390fd5b6119d467457c8c11343d01df60c01b611666565b6119e867e431913f0d4d23e060c01b611666565b6119fc67c16b70396e8dacb360c01b611666565b60008144611a0a91906126d9565b9050611a20679a1c68e42ddcf75660c01b611666565b611a3467daf1da1508fd037c60c01b611666565b6000611a4a670c065895250ae13960c01b611666565b611a5e672c6ca343fdc04a1e60c01b611666565b60005b600154811015611c2757611a7f676f6cd7f6333b856d60c01b611666565b611a9367f3898876cbce7f4560c01b611666565b60008082815260200190815260200160002060030160009054906101000a900460ff1615611ad457611acf670d79200c9d4cb2c460c01b611666565b611c1a565b611ae867c878e81db6d004ac60c01b611666565b611afc674272f623001815e660c01b611666565b611b1067413f72ecd4aef95660c01b611666565b60008082815260200190815260200160002060020154421115611b4657611b4167c186163086757c8e60c01b611666565b611c1a565b611b5a6788c0200e6061f33f60c01b611666565b611b6e67b92385abb29bd60b60c01b611666565b6000808281526020019081526020016000206001015482611b8f9190612066565b9150611ba5678ac32d065470f44860c01b611666565b611bb967375313ff93095f5460c01b611666565b82821115611c0557611bd5670dd23a0330b66c2f60c01b611666565b611be9673347f2379594272d60c01b611666565b809450611c0067ca230b5cfdb171f260c01b611666565b611c27565b611c19678c0f231ff1c62ce460c01b611666565b5b8080600101915050611a61565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5e82611c33565b9050919050565b611c6e81611c53565b8114611c7957600080fd5b50565b600081359050611c8b81611c65565b92915050565b6000819050919050565b611ca481611c91565b8114611caf57600080fd5b50565b600081359050611cc181611c9b565b92915050565b600080600060608486031215611ce057611cdf611c2e565b5b6000611cee86828701611c7c565b9350506020611cff86828701611cb2565b9250506040611d1086828701611cb2565b9150509250925092565b611d2381611c91565b82525050565b6000602082019050611d3e6000830184611d1a565b92915050565b600060208284031215611d5a57611d59611c2e565b5b6000611d6884828501611cb2565b91505092915050565b611d7a81611c53565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611dc057611dbf611d80565b5b50565b6000819050611dd182611daf565b919050565b6000611de182611dc3565b9050919050565b611df181611dd6565b82525050565b60008115159050919050565b611e0c81611df7565b82525050565b600060c082019050611e276000830189611d71565b611e346020830188611d1a565b611e416040830187611de8565b611e4e6060830186611d1a565b611e5b6080830185611e03565b611e6860a0830184611d1a565b979650505050505050565b611e7c81611df7565b8114611e8757600080fd5b50565b600081359050611e9981611e73565b92915050565b60008060408385031215611eb657611eb5611c2e565b5b6000611ec485828601611cb2565b9250506020611ed585828601611e8a565b9150509250929050565b60008060408385031215611ef657611ef5611c2e565b5b6000611f0485828601611cb2565b9250506020611f1585828601611cb2565b9150509250929050565b600060a082019050611f346000830188611d71565b611f416020830187611d1a565b611f4e6040830186611d1a565b611f5b6060830185611e03565b611f686080830184611e03565b9695505050505050565b600082825260208201905092915050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb9601183611f72565b9150611fc482611f83565b602082019050919050565b60006020820190508181036000830152611fe881611fac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061202982611c91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361205b5761205a611fef565b5b600182019050919050565b600061207182611c91565b915061207c83611c91565b925082820190508082111561209457612093611fef565b5b92915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b60006120d0601083611f72565b91506120db8261209a565b602082019050919050565b600060208201905081810360008301526120ff816120c3565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b6000612162603483611f72565b915061216d82612106565b604082019050919050565b6000602082019050818103600083015261219181612155565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006121f4602283611f72565b91506121ff82612198565b604082019050919050565b60006020820190508181036000830152612223816121e7565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b6000612260602083611f72565b915061226b8261222a565b602082019050919050565b6000602082019050818103600083015261228f81612253565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b60006122f2602483611f72565b91506122fd82612296565b604082019050919050565b60006020820190508181036000830152612321816122e5565b9050919050565b600060408201905061233d6000830185611d71565b61234a6020830184611d1a565b9392505050565b60008151905061236081611e73565b92915050565b60006020828403121561237c5761237b611c2e565b5b600061238a84828501612351565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006123c9602083611f72565b91506123d482612393565b602082019050919050565b600060208201905081810360008301526123f8816123bc565b9050919050565b60006020820190506124146000830184611d71565b92915050565b60008151905061242981611c9b565b92915050565b60006020828403121561244557612444611c2e565b5b60006124538482850161241a565b91505092915050565b60006040820190506124716000830185611d1a565b61247e6020830184611e03565b9392505050565b600060408201905061249a6000830185611d1a565b6124a76020830184611d1a565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b600061250a603383611f72565b9150612515826124ae565b604082019050919050565b60006020820190508181036000830152612539816124fd565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612576601883611f72565b915061258182612540565b602082019050919050565b600060208201905081810360008301526125a581612569565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612608603a83611f72565b9150612613826125ac565b604082019050919050565b60006020820190508181036000830152612637816125fb565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612674601a83611f72565b915061267f8261263e565b602082019050919050565b600060208201905081810360008301526126a381612667565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006126e482611c91565b91506126ef83611c91565b9250826126ff576126fe6126aa565b5b82820690509291505056fea26469706673582212203b316ef44813f05c2a7ad3d195c040ecc530e859ae0bd1ab6b23a746136c300c64736f6c63430008180033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/client/src/contract-config.js b/client/src/contract-config.js index ba02634..ef066ff 100644 --- a/client/src/contract-config.js +++ b/client/src/contract-config.js @@ -1,4 +1,4 @@ -import contractAddresses from '../../contract-addresses.json'; +import contractAddresses from 'contract-config/addresses.json'; const networks = { localhost: '0x539', diff --git a/contract-config/DAO.json b/contract-config/DAO.json new file mode 100644 index 0000000..31f0197 --- /dev/null +++ b/contract-config/DAO.json @@ -0,0 +1,679 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DAO", + "sourceName": "contracts/DAO.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "postIndex", + "type": "uint256" + } + ], + "name": "PostAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "ValidationPoolInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "votePasses", + "type": "bool" + } + ], + "name": "ValidationPoolResolved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "author", + "type": "address" + } + ], + "name": "addPost", + "outputs": [ + { + "internalType": "uint256", + "name": "postIndex", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "evaluateOutcome", + "outputs": [ + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "postIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "initiateValidationPool", + "outputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "memberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "members", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "postCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "posts", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "inFavor", + "type": "bool" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "stakeAvailability", + "outputs": [ + { + "internalType": "bool", + "name": "transferred", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "validationPoolCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "validationPools", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "postIndex", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialStakedFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialStakedAgainst", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "resolved", + "type": "bool" + }, + { + "internalType": "bool", + "name": "outcome", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612608806200041b6000396000f3fe6080604052600436106101405760003560e01c806356715761116100b657806395d89b411161006f57806395d89b41146104b05780639fcb294b146104db578063a230c5241461050b578063a233627914610548578063a9059cbb1461058f578063dd62ed3e146105cc57610140565b806356715761146103785780635daf08ca146103a3578063642b5bfb146103e05780636db5c8fd1461040b57806370a0823114610436578063883802741461047357610140565b806317c182171161010857806317c182171461024257806318160ddd1461027f57806323b872dd146102aa578063313ce567146102e75780633ff7544214610312578063561b24631461034f57610140565b806306fdde0314610145578063095ea7b3146101705780630b1e7f83146101ad57806311aee380146101ec57806317906c2e14610217575b600080fd5b34801561015157600080fd5b5061015a610609565b6040516101679190611bb4565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190611c6f565b61069b565b6040516101a49190611cca565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf9190611ce5565b6106be565b6040516101e393929190611d30565b60405180910390f35b3480156101f857600080fd5b50610201610728565b60405161020e9190611d67565b60405180910390f35b34801561022357600080fd5b5061022c61072e565b6040516102399190611d67565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611ce5565b610734565b6040516102769190611cca565b60405180910390f35b34801561028b57600080fd5b50610294610c88565b6040516102a19190611d67565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190611d82565b610c92565b6040516102de9190611cca565b60405180910390f35b3480156102f357600080fd5b506102fc610cc1565b6040516103099190611df1565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190611e0c565b610cca565b6040516103469190611d67565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190611e65565b610dc8565b005b34801561038457600080fd5b5061038d610df1565b60405161039a9190611d67565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c59190611ce5565b610df6565b6040516103d79190611eb8565b60405180910390f35b3480156103ec57600080fd5b506103f5610e29565b6040516104029190611d67565b60405180910390f35b34801561041757600080fd5b50610420610e2f565b60405161042d9190611d67565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190611e0c565b610e36565b60405161046a9190611d67565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190611ed3565b610e7e565b6040516104a79190611cca565b60405180910390f35b3480156104bc57600080fd5b506104c5610f09565b6040516104d29190611bb4565b60405180910390f35b6104f560048036038101906104f09190611f26565b610f9b565b6040516105029190611d67565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190611e0c565b6112a5565b60405161053f9190611cca565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190611ce5565b6112c5565b6040516105869b9a99989796959493929190611f66565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190611c6f565b611359565b6040516105c39190611cca565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612011565b61137c565b6040516106009190611d67565b60405180910390f35b60606003805461061890612080565b80601f016020809104026020016040519081016040528092919081815260200182805461064490612080565b80156106915780601f1061066657610100808354040283529160200191610691565b820191906000526020600020905b81548152906001019060200180831161067457829003601f168201915b5050505050905090565b6000806106a6611403565b90506106b381858561140b565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a6000836001015481526020019081526020016000209050816009015442116107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612123565b60405180910390fd5b6000151582600a0160009054906101000a900460ff16151514610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc9061218f565b60405180910390fd5b600080600080600090505b85600401548110156108815785600301600082815260200190815260200160002091508160010160009054906101000a900460ff16156108615781600201548461085a91906121de565b9350610874565b81600201548361087191906121de565b92505b8080600101915050610810565b508183101595508580156109035750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610a11578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006006600081548092919061094490612212565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600185600a0160006101000a81548160ff0219169083151502179055508585600a0160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a7b92919061225a565b60405180910390a1600086610a905782610a92565b835b9050600087610aa15784610aa3565b835b9050600080600090505b8860040154811015610b665788600301600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610b5957600084866002015485610aff9190612283565b610b0991906122f4565b9050610b49308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610b4491906121de565b61141d565b8083610b5591906121de565b9250505b8080600101915050610aad565b5060008183610b759190612325565b90506000811115610bb057610baf308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361141d565b5b60005b600654811015610c795760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610bff610c88565b610c0883610e36565b8d60050154610c179190612283565b610c2191906122f4565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c69573d6000803e3d6000fd5b5050508080600101915050610bb3565b50505050505050505050919050565b6000600254905090565b600080610c9d611403565b9050610caa858285611511565b610cb585858561141d565b60019150509392505050565b60006012905090565b6000600b6000815480929190610cdf90612212565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600001819055507f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c82604051610dba9190611d67565b60405180910390a150919050565b6000600860008581526020019081526020016000209050610deb813385856115a5565b50505050565b603c81565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6201518081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e8a8484611359565b90508015610f02578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610ecf93929190612359565b600060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050505b9392505050565b606060048054610f1890612080565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4490612080565b8015610f915780601f10610f6657610100808354040283529160200191610f91565b820191906000526020600020905b815481529060010190602001808311610f7457829003601f168201915b5050505050905090565b6000803411610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690612402565b60405180910390fd5b603c821015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a9061246e565b60405180910390fd5b62015180821115611069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611060906124da565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90612546565b60405180910390fd5b6009600081548092919061112690612212565b9190505591506000600860008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084816001018190555034816005018190555083816008018190555083426111ad91906121de565b81600901819055508281600001819055506111ec8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346116a6565b611229818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660023461122291906122f4565b60016115a5565b611266818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660023461125f91906122f4565b60006115a5565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516112959190611d67565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff169080600a0160019054906101000a900460ff1690508b565b600080611364611403565b905061137181858561141d565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6114188383836001611728565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361148f5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114869190611eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115015760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114f89190611eb8565b60405180910390fd5b61150c8383836118ff565b505050565b600061151d848461137c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461159f578181101561158f578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161158693929190612359565b60405180910390fd5b61159e84848484036000611728565b5b50505050565b83600901544211156115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906125b2565b60405180910390fd5b6115f783308461141d565b600084600401600081548092919061160e90612212565b91905055905060008560030160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117185760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161170f9190611eb8565b60405180910390fd5b611724600083836118ff565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361179a5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016117919190611eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118039190611eb8565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156118f9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118f09190611d67565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195157806002600082825461194591906121de565b92505081905550611a24565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119dd578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119d493929190612359565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a6d5780600260008282540392505081905550611aba565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b179190611d67565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b5e578082015181840152602081019050611b43565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b8682611b24565b611b908185611b2f565b9350611ba0818560208601611b40565b611ba981611b6a565b840191505092915050565b60006020820190508181036000830152611bce8184611b7b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c0682611bdb565b9050919050565b611c1681611bfb565b8114611c2157600080fd5b50565b600081359050611c3381611c0d565b92915050565b6000819050919050565b611c4c81611c39565b8114611c5757600080fd5b50565b600081359050611c6981611c43565b92915050565b60008060408385031215611c8657611c85611bd6565b5b6000611c9485828601611c24565b9250506020611ca585828601611c5a565b9150509250929050565b60008115159050919050565b611cc481611caf565b82525050565b6000602082019050611cdf6000830184611cbb565b92915050565b600060208284031215611cfb57611cfa611bd6565b5b6000611d0984828501611c5a565b91505092915050565b611d1b81611c39565b82525050565b611d2a81611bfb565b82525050565b6000606082019050611d456000830186611d12565b611d526020830185611d21565b611d5f6040830184611d21565b949350505050565b6000602082019050611d7c6000830184611d12565b92915050565b600080600060608486031215611d9b57611d9a611bd6565b5b6000611da986828701611c24565b9350506020611dba86828701611c24565b9250506040611dcb86828701611c5a565b9150509250925092565b600060ff82169050919050565b611deb81611dd5565b82525050565b6000602082019050611e066000830184611de2565b92915050565b600060208284031215611e2257611e21611bd6565b5b6000611e3084828501611c24565b91505092915050565b611e4281611caf565b8114611e4d57600080fd5b50565b600081359050611e5f81611e39565b92915050565b600080600060608486031215611e7e57611e7d611bd6565b5b6000611e8c86828701611c5a565b9350506020611e9d86828701611c5a565b9250506040611eae86828701611e50565b9150509250925092565b6000602082019050611ecd6000830184611d21565b92915050565b600080600060608486031215611eec57611eeb611bd6565b5b6000611efa86828701611c24565b9350506020611f0b86828701611c5a565b9250506040611f1c86828701611c5a565b9150509250925092565b60008060408385031215611f3d57611f3c611bd6565b5b6000611f4b85828601611c5a565b9250506020611f5c85828601611c5a565b9150509250929050565b600061016082019050611f7c600083018e611d12565b611f89602083018d611d12565b611f96604083018c611d21565b611fa3606083018b611d12565b611fb0608083018a611d12565b611fbd60a0830189611d12565b611fca60c0830188611d12565b611fd760e0830187611d12565b611fe5610100830186611d12565b611ff3610120830185611cbb565b612001610140830184611cbb565b9c9b505050505050505050505050565b6000806040838503121561202857612027611bd6565b5b600061203685828601611c24565b925050602061204785828601611c24565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209857607f821691505b6020821081036120ab576120aa612051565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061210d602183611b2f565b9150612118826120b1565b604082019050919050565b6000602082019050818103600083015261213c81612100565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000612179601883611b2f565b915061218482612143565b602082019050919050565b600060208201905081810360008301526121a88161216c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e982611c39565b91506121f483611c39565b925082820190508082111561220c5761220b6121af565b5b92915050565b600061221d82611c39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224f5761224e6121af565b5b600182019050919050565b600060408201905061226f6000830185611d12565b61227c6020830184611cbb565b9392505050565b600061228e82611c39565b915061229983611c39565b92508282026122a781611c39565b915082820484148315176122be576122bd6121af565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006122ff82611c39565b915061230a83611c39565b92508261231a576123196122c5565b5b828204905092915050565b600061233082611c39565b915061233b83611c39565b9250828203905081811115612353576123526121af565b5b92915050565b600060608201905061236e6000830186611d21565b61237b6020830185611d12565b6123886040830184611d12565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b60006123ec602b83611b2f565b91506123f782612390565b604082019050919050565b6000602082019050818103600083015261241b816123df565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612458601583611b2f565b915061246382612422565b602082019050919050565b600060208201905081810360008301526124878161244b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b60006124c4601483611b2f565b91506124cf8261248e565b602082019050919050565b600060208201905081810360008301526124f3816124b7565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000612530601583611b2f565b915061253b826124fa565b602082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061259c601883611b2f565b91506125a782612566565b602082019050919050565b600060208201905081810360008301526125cb8161258f565b905091905056fea2646970667358221220493bc48ed6781c50ea5b85d36b6f57bf83b3b82cebbd13bf10a0f709ec0a39eb64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106101405760003560e01c806356715761116100b657806395d89b411161006f57806395d89b41146104b05780639fcb294b146104db578063a230c5241461050b578063a233627914610548578063a9059cbb1461058f578063dd62ed3e146105cc57610140565b806356715761146103785780635daf08ca146103a3578063642b5bfb146103e05780636db5c8fd1461040b57806370a0823114610436578063883802741461047357610140565b806317c182171161010857806317c182171461024257806318160ddd1461027f57806323b872dd146102aa578063313ce567146102e75780633ff7544214610312578063561b24631461034f57610140565b806306fdde0314610145578063095ea7b3146101705780630b1e7f83146101ad57806311aee380146101ec57806317906c2e14610217575b600080fd5b34801561015157600080fd5b5061015a610609565b6040516101679190611bb4565b60405180910390f35b34801561017c57600080fd5b5061019760048036038101906101929190611c6f565b61069b565b6040516101a49190611cca565b60405180910390f35b3480156101b957600080fd5b506101d460048036038101906101cf9190611ce5565b6106be565b6040516101e393929190611d30565b60405180910390f35b3480156101f857600080fd5b50610201610728565b60405161020e9190611d67565b60405180910390f35b34801561022357600080fd5b5061022c61072e565b6040516102399190611d67565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611ce5565b610734565b6040516102769190611cca565b60405180910390f35b34801561028b57600080fd5b50610294610c88565b6040516102a19190611d67565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190611d82565b610c92565b6040516102de9190611cca565b60405180910390f35b3480156102f357600080fd5b506102fc610cc1565b6040516103099190611df1565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190611e0c565b610cca565b6040516103469190611d67565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190611e65565b610dc8565b005b34801561038457600080fd5b5061038d610df1565b60405161039a9190611d67565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c59190611ce5565b610df6565b6040516103d79190611eb8565b60405180910390f35b3480156103ec57600080fd5b506103f5610e29565b6040516104029190611d67565b60405180910390f35b34801561041757600080fd5b50610420610e2f565b60405161042d9190611d67565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190611e0c565b610e36565b60405161046a9190611d67565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190611ed3565b610e7e565b6040516104a79190611cca565b60405180910390f35b3480156104bc57600080fd5b506104c5610f09565b6040516104d29190611bb4565b60405180910390f35b6104f560048036038101906104f09190611f26565b610f9b565b6040516105029190611d67565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d9190611e0c565b6112a5565b60405161053f9190611cca565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190611ce5565b6112c5565b6040516105869b9a99989796959493929190611f66565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190611c6f565b611359565b6040516105c39190611cca565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612011565b61137c565b6040516106009190611d67565b60405180910390f35b60606003805461061890612080565b80601f016020809104026020016040519081016040528092919081815260200182805461064490612080565b80156106915780601f1061066657610100808354040283529160200191610691565b820191906000526020600020905b81548152906001019060200180831161067457829003601f168201915b5050505050905090565b6000806106a6611403565b90506106b381858561140b565b600191505092915050565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60065481565b600b5481565b6000806008600084815260200190815260200160002090506000600a6000836001015481526020019081526020016000209050816009015442116107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612123565b60405180910390fd5b6000151582600a0160009054906101000a900460ff16151514610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc9061218f565b60405180910390fd5b600080600080600090505b85600401548110156108815785600301600082815260200190815260200160002091508160010160009054906101000a900460ff16156108615781600201548461085a91906121de565b9350610874565b81600201548361087191906121de565b92505b8080600101915050610810565b508183101595508580156109035750600760008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610a11578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006006600081548092919061094490612212565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600185600a0160006101000a81548160ff0219169083151502179055508585600a0160016101000a81548160ff0219169083151502179055507f926ee3a021d24f18cfab444988fa0338bcaa0f1e0d7c2211c07d10cbad6772948787604051610a7b92919061225a565b60405180910390a1600086610a905782610a92565b835b9050600087610aa15784610aa3565b835b9050600080600090505b8860040154811015610b665788600301600082815260200190815260200160002094508460010160009054906101000a900460ff1615158a151503610b5957600084866002015485610aff9190612283565b610b0991906122f4565b9050610b49308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838960020154610b4491906121de565b61141d565b8083610b5591906121de565b9250505b8080600101915050610aad565b5060008183610b759190612325565b90506000811115610bb057610baf308960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361141d565b5b60005b600654811015610c795760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610bff610c88565b610c0883610e36565b8d60050154610c179190612283565b610c2191906122f4565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c69573d6000803e3d6000fd5b5050508080600101915050610bb3565b50505050505050505050919050565b6000600254905090565b600080610c9d611403565b9050610caa858285611511565b610cb585858561141d565b60019150509392505050565b60006012905090565b6000600b6000815480929190610cdf90612212565b9190505590506000600a60008381526020019081526020016000209050828160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600001819055507f60b94e7764708712b927071922e2d834b79011347c7b80aed74caeeece2eed4c82604051610dba9190611d67565b60405180910390a150919050565b6000600860008581526020019081526020016000209050610deb813385856115a5565b50505050565b603c81565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6201518081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e8a8484611359565b90508015610f02578373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b8152600401610ecf93929190612359565b600060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050505b9392505050565b606060048054610f1890612080565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4490612080565b8015610f915780601f10610f6657610100808354040283529160200191610f91565b820191906000526020600020905b815481529060010190602001808311610f7457829003601f168201915b5050505050905090565b6000803411610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690612402565b60405180910390fd5b603c821015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a9061246e565b60405180910390fd5b62015180821115611069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611060906124da565b60405180910390fd5b6000600a60008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90612546565b60405180910390fd5b6009600081548092919061112690612212565b9190505591506000600860008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084816001018190555034816005018190555083816008018190555083426111ad91906121de565b81600901819055508281600001819055506111ec8260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346116a6565b611229818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660023461122291906122f4565b60016115a5565b611266818360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660023461125f91906122f4565b60006115a5565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a836040516112959190611d67565b60405180910390a1505092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff169080600a0160019054906101000a900460ff1690508b565b600080611364611403565b905061137181858561141d565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6114188383836001611728565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361148f5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114869190611eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115015760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114f89190611eb8565b60405180910390fd5b61150c8383836118ff565b505050565b600061151d848461137c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461159f578181101561158f578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161158693929190612359565b60405180910390fd5b61159e84848484036000611728565b5b50505050565b83600901544211156115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906125b2565b60405180910390fd5b6115f783308461141d565b600084600401600081548092919061160e90612212565b91905055905060008560030160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117185760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161170f9190611eb8565b60405180910390fd5b611724600083836118ff565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361179a5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016117919190611eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118039190611eb8565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156118f9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118f09190611d67565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195157806002600082825461194591906121de565b92505081905550611a24565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119dd578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119d493929190612359565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a6d5780600260008282540392505081905550611aba565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b179190611d67565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b5e578082015181840152602081019050611b43565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b8682611b24565b611b908185611b2f565b9350611ba0818560208601611b40565b611ba981611b6a565b840191505092915050565b60006020820190508181036000830152611bce8184611b7b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c0682611bdb565b9050919050565b611c1681611bfb565b8114611c2157600080fd5b50565b600081359050611c3381611c0d565b92915050565b6000819050919050565b611c4c81611c39565b8114611c5757600080fd5b50565b600081359050611c6981611c43565b92915050565b60008060408385031215611c8657611c85611bd6565b5b6000611c9485828601611c24565b9250506020611ca585828601611c5a565b9150509250929050565b60008115159050919050565b611cc481611caf565b82525050565b6000602082019050611cdf6000830184611cbb565b92915050565b600060208284031215611cfb57611cfa611bd6565b5b6000611d0984828501611c5a565b91505092915050565b611d1b81611c39565b82525050565b611d2a81611bfb565b82525050565b6000606082019050611d456000830186611d12565b611d526020830185611d21565b611d5f6040830184611d21565b949350505050565b6000602082019050611d7c6000830184611d12565b92915050565b600080600060608486031215611d9b57611d9a611bd6565b5b6000611da986828701611c24565b9350506020611dba86828701611c24565b9250506040611dcb86828701611c5a565b9150509250925092565b600060ff82169050919050565b611deb81611dd5565b82525050565b6000602082019050611e066000830184611de2565b92915050565b600060208284031215611e2257611e21611bd6565b5b6000611e3084828501611c24565b91505092915050565b611e4281611caf565b8114611e4d57600080fd5b50565b600081359050611e5f81611e39565b92915050565b600080600060608486031215611e7e57611e7d611bd6565b5b6000611e8c86828701611c5a565b9350506020611e9d86828701611c5a565b9250506040611eae86828701611e50565b9150509250925092565b6000602082019050611ecd6000830184611d21565b92915050565b600080600060608486031215611eec57611eeb611bd6565b5b6000611efa86828701611c24565b9350506020611f0b86828701611c5a565b9250506040611f1c86828701611c5a565b9150509250925092565b60008060408385031215611f3d57611f3c611bd6565b5b6000611f4b85828601611c5a565b9250506020611f5c85828601611c5a565b9150509250929050565b600061016082019050611f7c600083018e611d12565b611f89602083018d611d12565b611f96604083018c611d21565b611fa3606083018b611d12565b611fb0608083018a611d12565b611fbd60a0830189611d12565b611fca60c0830188611d12565b611fd760e0830187611d12565b611fe5610100830186611d12565b611ff3610120830185611cbb565b612001610140830184611cbb565b9c9b505050505050505050505050565b6000806040838503121561202857612027611bd6565b5b600061203685828601611c24565b925050602061204785828601611c24565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209857607f821691505b6020821081036120ab576120aa612051565b5b50919050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061210d602183611b2f565b9150612118826120b1565b604082019050919050565b6000602082019050818103600083015261213c81612100565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000612179601883611b2f565b915061218482612143565b602082019050919050565b600060208201905081810360008301526121a88161216c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e982611c39565b91506121f483611c39565b925082820190508082111561220c5761220b6121af565b5b92915050565b600061221d82611c39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224f5761224e6121af565b5b600182019050919050565b600060408201905061226f6000830185611d12565b61227c6020830184611cbb565b9392505050565b600061228e82611c39565b915061229983611c39565b92508282026122a781611c39565b915082820484148315176122be576122bd6121af565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006122ff82611c39565b915061230a83611c39565b92508261231a576123196122c5565b5b828204905092915050565b600061233082611c39565b915061233b83611c39565b9250828203905081811115612353576123526121af565b5b92915050565b600060608201905061236e6000830186611d21565b61237b6020830185611d12565b6123886040830184611d12565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b60006123ec602b83611b2f565b91506123f782612390565b604082019050919050565b6000602082019050818103600083015261241b816123df565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612458601583611b2f565b915061246382612422565b602082019050919050565b600060208201905081810360008301526124878161244b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b60006124c4601483611b2f565b91506124cf8261248e565b602082019050919050565b600060208201905081810360008301526124f3816124b7565b9050919050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b6000612530601583611b2f565b915061253b826124fa565b602082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b600061259c601883611b2f565b91506125a782612566565b602082019050919050565b600060208201905081810360008301526125cb8161258f565b905091905056fea2646970667358221220493bc48ed6781c50ea5b85d36b6f57bf83b3b82cebbd13bf10a0f709ec0a39eb64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contract-config/Work1.json b/contract-config/Work1.json new file mode 100644 index 0000000..48266c3 --- /dev/null +++ b/contract-config/Work1.json @@ -0,0 +1,305 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Work1", + "sourceName": "contracts/Work1.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price_", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "stakeIndex", + "type": "uint256" + } + ], + "name": "AvailabilityStaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "requestIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approval", + "type": "bool" + } + ], + "name": "WorkApprovalSubmitted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "worker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestIndex", + "type": "uint256" + } + ], + "name": "WorkAssigned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "requestIndex", + "type": "uint256" + } + ], + "name": "WorkEvidenceSubmitted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "acceptAvailability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "stakeIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "extendAvailability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "price", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "stakeIndex", + "type": "uint256" + } + ], + "name": "reclaimAvailability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "requestCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "requestWork", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "requests", + "outputs": [ + { + "internalType": "address", + "name": "customer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "enum WorkStatus", + "name": "status", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "stakeIndex", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approval", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stakeCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "stakes", + "outputs": [ + { + "internalType": "address", + "name": "worker", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "assigned", + "type": "bool" + }, + { + "internalType": "bool", + "name": "reclaimed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestIndex", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approval", + "type": "bool" + } + ], + "name": "submitWorkApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestIndex", + "type": "uint256" + } + ], + "name": "submitWorkEvidence", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001d1438038062001d14833981810160405281019062000037919062000134565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060a0818152505050506200017b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000ad8262000080565b9050919050565b6000620000c182620000a0565b9050919050565b620000d381620000b4565b8114620000df57600080fd5b50565b600081519050620000f381620000c8565b92915050565b6000819050919050565b6200010e81620000f9565b81146200011a57600080fd5b50565b6000815190506200012e8162000103565b92915050565b600080604083850312156200014e576200014d6200007b565b5b60006200015e85828601620000e2565b925050602062000171858286016200011d565b9150509250929050565b60805160a051611b5e620001b6600039600081816103900152610a3301526000818161063b01528181610883015261097e0152611b5e6000f3fe60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c391906110e5565b61027c565b005b6100d261038e565b005b3480156100e057600080fd5b506100e9610484565b6040516100f69190611147565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611162565b61048a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190611162565b610717565b60405161016196959493929190611230565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c91906112bd565b61078d565b005b34801561019f57600080fd5b506101a8610a31565b6040516101b59190611147565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906112fd565b610a55565b005b3480156101f357600080fd5b5061020e60048036038101906102099190611162565b610c1b565b005b34801561021c57600080fd5b50610225610dbf565b6040516102329190611147565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611162565b610dc5565b60405161027395949392919061133d565b60405180910390f35b600082116102bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b6906113ed565b60405180910390fd5b6000600160008154809291906102d49061143c565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426103489190611484565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161037f9190611147565b60405180910390a15050505050565b7f00000000000000000000000000000000000000000000000000000000000000003410156103f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e890611504565b60405180910390fd5b6000600360008154809291906104069061143c565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047882610e35565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611596565b60405180910390fd5b80600201544211610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056f90611628565b60405180910390fd5b8060030160019054906101000a900460ff16156105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190611694565b60405180910390fd5b8060030160009054906101000a900460ff161561061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061390611726565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610698929190611746565b6020604051808303816000875af11580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190611784565b507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161070b9190611147565b60405180910390a15050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156107b8576107b761119e565b5b8160020160009054906101000a900460ff1660038111156107dc576107db61119e565b5b1461081c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610813906117fd565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561085e5761085d61119e565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016108fe919061181d565b6020604051808303816000875af115801561091d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610941919061184d565b90507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc858560405161097492919061187a565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b81526004016109df9291906118a3565b60206040518083038185885af11580156109fd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a22919061184d565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af49061193e565b60405180910390fd5b8060030160019054906101000a900460ff1615610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690611694565b60405180910390fd5b8060030160009054906101000a900460ff1615610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890611726565b60405180910390fd5b8060020154421115610bc6578142610bb99190611484565b8160020181905550610bdf565b818160020154610bd69190611484565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610c0e9190611147565b60405180910390a1505050565b600060026000838152602001908152602001600020905060006003811115610c4657610c4561119e565b5b8160020160009054906101000a900460ff166003811115610c6a57610c6961119e565b5b14610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca1906119aa565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d90611a3c565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610d7e57610d7d61119e565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610db29190611147565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610e3f610ed7565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610ec9929190611746565b60405180910390a150919050565b60008060005b600154811015610f5b5760008082815260200190815260200160002060030160009054906101000a900460ff16610f4e57600080828152602001908152602001600020600201544211610f4e576000808281526020019081526020016000206001015482610f4b9190611484565b91505b8080600101915050610edd565b5060008111610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690611aa8565b60405180910390fd5b60008144610fad9190611af7565b9050600080600090505b6001548110156110455760008082815260200190815260200160002060030160009054906101000a900460ff16611038576000808281526020019081526020016000206002015442116110385760008082815260200190815260200160002060010154826110259190611484565b91508282111561103757809450611045565b5b8080600101915050610fb7565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061107c82611051565b9050919050565b61108c81611071565b811461109757600080fd5b50565b6000813590506110a981611083565b92915050565b6000819050919050565b6110c2816110af565b81146110cd57600080fd5b50565b6000813590506110df816110b9565b92915050565b6000806000606084860312156110fe576110fd61104c565b5b600061110c8682870161109a565b935050602061111d868287016110d0565b925050604061112e868287016110d0565b9150509250925092565b611141816110af565b82525050565b600060208201905061115c6000830184611138565b92915050565b6000602082840312156111785761117761104c565b5b6000611186848285016110d0565b91505092915050565b61119881611071565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106111de576111dd61119e565b5b50565b60008190506111ef826111cd565b919050565b60006111ff826111e1565b9050919050565b61120f816111f4565b82525050565b60008115159050919050565b61122a81611215565b82525050565b600060c082019050611245600083018961118f565b6112526020830188611138565b61125f6040830187611206565b61126c6060830186611138565b6112796080830185611221565b61128660a0830184611138565b979650505050505050565b61129a81611215565b81146112a557600080fd5b50565b6000813590506112b781611291565b92915050565b600080604083850312156112d4576112d361104c565b5b60006112e2858286016110d0565b92505060206112f3858286016112a8565b9150509250929050565b600080604083850312156113145761131361104c565b5b6000611322858286016110d0565b9250506020611333858286016110d0565b9150509250929050565b600060a082019050611352600083018861118f565b61135f6020830187611138565b61136c6040830186611138565b6113796060830185611221565b6113866080830184611221565b9695505050505050565b600082825260208201905092915050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b60006113d7601183611390565b91506113e2826113a1565b602082019050919050565b60006020820190508181036000830152611406816113ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611447826110af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114795761147861140d565b5b600182019050919050565b600061148f826110af565b915061149a836110af565b92508282019050808211156114b2576114b161140d565b5b92915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b60006114ee601083611390565b91506114f9826114b8565b602082019050919050565b6000602082019050818103600083015261151d816114e1565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b6000611580603483611390565b915061158b82611524565b604082019050919050565b600060208201905081810360008301526115af81611573565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000611612602283611390565b915061161d826115b6565b604082019050919050565b6000602082019050818103600083015261164181611605565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b600061167e602083611390565b915061168982611648565b602082019050919050565b600060208201905081810360008301526116ad81611671565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000611710602483611390565b915061171b826116b4565b604082019050919050565b6000602082019050818103600083015261173f81611703565b9050919050565b600060408201905061175b600083018561118f565b6117686020830184611138565b9392505050565b60008151905061177e81611291565b92915050565b60006020828403121561179a5761179961104c565b5b60006117a88482850161176f565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006117e7602083611390565b91506117f2826117b1565b602082019050919050565b60006020820190508181036000830152611816816117da565b9050919050565b6000602082019050611832600083018461118f565b92915050565b600081519050611847816110b9565b92915050565b6000602082840312156118635761186261104c565b5b600061187184828501611838565b91505092915050565b600060408201905061188f6000830185611138565b61189c6020830184611221565b9392505050565b60006040820190506118b86000830185611138565b6118c56020830184611138565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000611928603383611390565b9150611933826118cc565b604082019050919050565b600060208201905081810360008301526119578161191b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000611994601883611390565b915061199f8261195e565b602082019050919050565b600060208201905081810360008301526119c381611987565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000611a26603a83611390565b9150611a31826119ca565b604082019050919050565b60006020820190508181036000830152611a5581611a19565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611a92601a83611390565b9150611a9d82611a5c565b602082019050919050565b60006020820190508181036000830152611ac181611a85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611b02826110af565b9150611b0d836110af565b925082611b1d57611b1c611ac8565b5b82820690509291505056fea2646970667358221220e6e32e9b883fcac7d6bc76f38dfffd5fb185308227b61cc5a76195346f2fa86e64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c8063854b6a4f11610064578063854b6a4f1461016a578063a035b1fe14610193578063b5b20c00146101be578063c4a32591146101e7578063c4a9e11614610210578063d5a44f861461023b5761009c565b8063216ed6ad146100a15780634b8b194c146100ca5780635badbe4c146100d45780638150d507146100ff57806381d12c5814610128575b600080fd5b3480156100ad57600080fd5b506100c860048036038101906100c391906110e5565b61027c565b005b6100d261038e565b005b3480156100e057600080fd5b506100e9610484565b6040516100f69190611147565b60405180910390f35b34801561010b57600080fd5b5061012660048036038101906101219190611162565b61048a565b005b34801561013457600080fd5b5061014f600480360381019061014a9190611162565b610717565b60405161016196959493929190611230565b60405180910390f35b34801561017657600080fd5b50610191600480360381019061018c91906112bd565b61078d565b005b34801561019f57600080fd5b506101a8610a31565b6040516101b59190611147565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906112fd565b610a55565b005b3480156101f357600080fd5b5061020e60048036038101906102099190611162565b610c1b565b005b34801561021c57600080fd5b50610225610dbf565b6040516102329190611147565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611162565b610dc5565b60405161027395949392919061133d565b60405180910390f35b600082116102bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b6906113ed565b60405180910390fd5b6000600160008154809291906102d49061143c565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426103489190611484565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161037f9190611147565b60405180910390a15050505050565b7f00000000000000000000000000000000000000000000000000000000000000003410156103f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e890611504565b60405180910390fd5b6000600360008154809291906104069061143c565b9190505590506000600260008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047882610e35565b81600301819055505050565b60035481565b600080600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611596565b60405180910390fd5b80600201544211610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056f90611628565b60405180910390fd5b8060030160019054906101000a900460ff16156105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190611694565b60405180910390fd5b8060030160009054906101000a900460ff161561061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061390611726565b60405180910390fd5b60018160030160016101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600101546040518363ffffffff1660e01b8152600401610698929190611746565b6020604051808303816000875af11580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190611784565b507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161070b9190611147565b60405180910390a15050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900460ff16908060050154905086565b6000600260008481526020019081526020016000209050600160038111156107b8576107b761119e565b5b8160020160009054906101000a900460ff1660038111156107dc576107db61119e565b5b1461081c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610813906117fd565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561085e5761085d61119e565b5b0217905550828260040160006101000a81548160ff02191690831515021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ff754428360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016108fe919061181d565b6020604051808303816000875af115801561091d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610941919061184d565b90507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc858560405161097492919061187a565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fcb294b846001015483620151806040518463ffffffff1660e01b81526004016109df9291906118a3565b60206040518083038185885af11580156109fd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a22919061184d565b83600501819055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af49061193e565b60405180910390fd5b8060030160019054906101000a900460ff1615610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690611694565b60405180910390fd5b8060030160009054906101000a900460ff1615610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890611726565b60405180910390fd5b8060020154421115610bc6578142610bb99190611484565b8160020181905550610bdf565b818160020154610bd69190611484565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610c0e9190611147565b60405180910390a1505050565b600060026000838152602001908152602001600020905060006003811115610c4657610c4561119e565b5b8160020160009054906101000a900460ff166003811115610c6a57610c6961119e565b5b14610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca1906119aa565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d90611a3c565b60405180910390fd5b60018260020160006101000a81548160ff02191690836003811115610d7e57610d7d61119e565b5b02179055507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc83604051610db29190611147565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16905085565b6000610e3f610ed7565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055507f429f9327062651dbcecaca0d28b9929067489d32d2c1133ec207c965f1f0ab198160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684604051610ec9929190611746565b60405180910390a150919050565b60008060005b600154811015610f5b5760008082815260200190815260200160002060030160009054906101000a900460ff16610f4e57600080828152602001908152602001600020600201544211610f4e576000808281526020019081526020016000206001015482610f4b9190611484565b91505b8080600101915050610edd565b5060008111610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690611aa8565b60405180910390fd5b60008144610fad9190611af7565b9050600080600090505b6001548110156110455760008082815260200190815260200160002060030160009054906101000a900460ff16611038576000808281526020019081526020016000206002015442116110385760008082815260200190815260200160002060010154826110259190611484565b91508282111561103757809450611045565b5b8080600101915050610fb7565b5050505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061107c82611051565b9050919050565b61108c81611071565b811461109757600080fd5b50565b6000813590506110a981611083565b92915050565b6000819050919050565b6110c2816110af565b81146110cd57600080fd5b50565b6000813590506110df816110b9565b92915050565b6000806000606084860312156110fe576110fd61104c565b5b600061110c8682870161109a565b935050602061111d868287016110d0565b925050604061112e868287016110d0565b9150509250925092565b611141816110af565b82525050565b600060208201905061115c6000830184611138565b92915050565b6000602082840312156111785761117761104c565b5b6000611186848285016110d0565b91505092915050565b61119881611071565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106111de576111dd61119e565b5b50565b60008190506111ef826111cd565b919050565b60006111ff826111e1565b9050919050565b61120f816111f4565b82525050565b60008115159050919050565b61122a81611215565b82525050565b600060c082019050611245600083018961118f565b6112526020830188611138565b61125f6040830187611206565b61126c6060830186611138565b6112796080830185611221565b61128660a0830184611138565b979650505050505050565b61129a81611215565b81146112a557600080fd5b50565b6000813590506112b781611291565b92915050565b600080604083850312156112d4576112d361104c565b5b60006112e2858286016110d0565b92505060206112f3858286016112a8565b9150509250929050565b600080604083850312156113145761131361104c565b5b6000611322858286016110d0565b9250506020611333858286016110d0565b9150509250929050565b600060a082019050611352600083018861118f565b61135f6020830187611138565b61136c6040830186611138565b6113796060830185611221565b6113866080830184611221565b9695505050505050565b600082825260208201905092915050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b60006113d7601183611390565b91506113e2826113a1565b602082019050919050565b60006020820190508181036000830152611406816113ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611447826110af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114795761147861140d565b5b600182019050919050565b600061148f826110af565b915061149a836110af565b92508282019050808211156114b2576114b161140d565b5b92915050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b60006114ee601083611390565b91506114f9826114b8565b602082019050919050565b6000602082019050818103600083015261151d816114e1565b9050919050565b7f576f726b65722063616e206f6e6c79207265636c61696d207468656972206f7760008201527f6e20617661696c6162696c697479207374616b65000000000000000000000000602082015250565b6000611580603483611390565b915061158b82611524565b604082019050919050565b600060208201905081810360008301526115af81611573565b9050919050565b7f5374616b65206475726174696f6e20686173206e6f742079657420656c61707360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000611612602283611390565b915061161d826115b6565b604082019050919050565b6000602082019050818103600083015261164181611605565b9050919050565b7f5374616b652068617320616c7265616479206265656e207265636c61696d6564600082015250565b600061167e602083611390565b915061168982611648565b602082019050919050565b600060208201905081810360008301526116ad81611671565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000611710602483611390565b915061171b826116b4565b604082019050919050565b6000602082019050818103600083015261173f81611703565b9050919050565b600060408201905061175b600083018561118f565b6117686020830184611138565b9392505050565b60008151905061177e81611291565b92915050565b60006020828403121561179a5761179961104c565b5b60006117a88482850161176f565b91505092915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006117e7602083611390565b91506117f2826117b1565b602082019050919050565b60006020820190508181036000830152611816816117da565b9050919050565b6000602082019050611832600083018461118f565b92915050565b600081519050611847816110b9565b92915050565b6000602082840312156118635761186261104c565b5b600061187184828501611838565b91505092915050565b600060408201905061188f6000830185611138565b61189c6020830184611221565b9392505050565b60006040820190506118b86000830185611138565b6118c56020830184611138565b9392505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000611928603383611390565b9150611933826118cc565b604082019050919050565b600060208201905081810360008301526119578161191b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000611994601883611390565b915061199f8261195e565b602082019050919050565b600060208201905081810360008301526119c381611987565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000611a26603a83611390565b9150611a31826119ca565b604082019050919050565b60006020820190508181036000830152611a5581611a19565b9050919050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611a92601a83611390565b9150611a9d82611a5c565b602082019050919050565b60006020820190508181036000830152611ac181611a85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611b02826110af565b9150611b0d836110af565b925082611b1d57611b1c611ac8565b5b82820690509291505056fea2646970667358221220e6e32e9b883fcac7d6bc76f38dfffd5fb185308227b61cc5a76195346f2fa86e64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contract-addresses.json b/contract-config/addresses.json similarity index 57% rename from contract-addresses.json rename to contract-config/addresses.json index 9922fce..c548200 100644 --- a/contract-addresses.json +++ b/contract-config/addresses.json @@ -1,7 +1,7 @@ { "localhost": { - "DAO": "0x76Dfe9F47f06112a1b78960bf37d87CfbB6D6133", - "Work1": "0xd2845aE812Ee42cF024fB4C55c052365792aBd78" + "DAO": "0xee46C48314Db1cd91DfaDc4f2f2cb12DE3B0Ec54", + "Work1": "0x37C7d46CC4Ae5a12402811B763998db4248C7069" }, "sepolia": { "DAO": "0x39B7522Ee1A5B13aE5580C40114239D4cE0e7D29", diff --git a/contract-config/package.json b/contract-config/package.json new file mode 100644 index 0000000..a06a93c --- /dev/null +++ b/contract-config/package.json @@ -0,0 +1,11 @@ +{ + "name": "contract-config", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/ethereum/contracts/DAO.sol b/ethereum/contracts/DAO.sol index 61ed4f3..db29827 100644 --- a/ethereum/contracts/DAO.sol +++ b/ethereum/contracts/DAO.sol @@ -22,6 +22,7 @@ struct Stake { struct ValidationPool { uint id; uint postIndex; + address sender; mapping(uint => Stake) stakes; uint stakeCount; uint256 fee; @@ -82,6 +83,7 @@ contract DAO is ERC20("Reputation", "REP") { require(post.author != address(0), "Target post not found"); poolIndex = validationPoolCount++; ValidationPool storage pool = validationPools[poolIndex]; + pool.sender = msg.sender; pool.postIndex = postIndex; pool.fee = msg.value; pool.duration = duration; diff --git a/ethereum/scripts/contract-config.js b/ethereum/scripts/contract-config.js index af46586..f879eef 100644 --- a/ethereum/scripts/contract-config.js +++ b/ethereum/scripts/contract-config.js @@ -1,4 +1,4 @@ -const contractAddresses = require('../../contract-addresses.json'); +const contractAddresses = require('contract-config/addresses.json'); const networks = { localhost: '0x539', diff --git a/ethereum/scripts/deploy.js b/ethereum/scripts/deploy.js index 278f38e..0eb3be5 100644 --- a/ethereum/scripts/deploy.js +++ b/ethereum/scripts/deploy.js @@ -1,10 +1,9 @@ const { ethers } = require('hardhat'); const fs = require('fs'); -const contractAddresses = require('../../contract-addresses.json'); - -const contractAddressesWritePath = '../contract-addresses.json'; +const contractAddresses = require('contract-config/addresses.json'); +const contractAddressesWritePath = '../contract-config/addresses.json'; const network = process.env.HARDHAT_NETWORK; async function main() { @@ -23,6 +22,9 @@ async function main() { fs.writeFileSync(contractAddressesWritePath, JSON.stringify(contractAddresses, null, 2)); console.log('Wrote file', fs.realpathSync(contractAddressesWritePath)); + + fs.copyFileSync('./artifacts/contracts/DAO.sol/DAO.json', '../contract-config/DAO.json'); + fs.copyFileSync('./artifacts/contracts/Work1.sol/Work1.json', '../contract-config/Work1.json'); } // We recommend this pattern to be able to use async/await everywhere diff --git a/ethereum/test/DAO.js b/ethereum/test/DAO.js index 23b86e1..e019abf 100644 --- a/ethereum/test/DAO.js +++ b/ethereum/test/DAO.js @@ -85,6 +85,7 @@ describe('DAO', () => { expect(pool.duration).to.equal(POOL_DURATION); expect(pool.postIndex).to.equal(0); expect(pool.resolved).to.be.false; + expect(pool.sender).to.equal(account1); }); }); diff --git a/ethereum/test/Work1.js b/ethereum/test/Work1.js index c9f458d..f7da3c2 100644 --- a/ethereum/test/Work1.js +++ b/ethereum/test/Work1.js @@ -233,6 +233,9 @@ describe('Work1', () => { const post = await dao.posts(1); expect(post.author).to.equal(account1); expect(post.sender).to.equal(work1.target); + const pool = await dao.validationPools(1); + expect(pool.fee).to.equal(WORK1_PRICE); + expect(pool.sender).to.equal(work1.target); }); it('should be able to submit work disapproval', async () => {