UNPKG

@realitio/realitio-contracts

Version:

Collection of smart contracts for the Realitio fact verification platform

1,152 lines 2.75 MB
{ "contractName": "RealitioERC20", "abi": [ { "constant": false, "inputs": [], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "template_hashes", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "question_claims", "outputs": [ { "name": "payee", "type": "address" }, { "name": "last_bond", "type": "uint256" }, { "name": "queued_funds", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "arbitrator_question_fees", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "commitments", "outputs": [ { "name": "reveal_ts", "type": "uint32" }, { "name": "is_revealed", "type": "bool" }, { "name": "revealed_answer", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "questions", "outputs": [ { "name": "content_hash", "type": "bytes32" }, { "name": "arbitrator", "type": "address" }, { "name": "opening_ts", "type": "uint32" }, { "name": "timeout", "type": "uint32" }, { "name": "finalize_ts", "type": "uint32" }, { "name": "is_pending_arbitration", "type": "bool" }, { "name": "bounty", "type": "uint256" }, { "name": "best_answer", "type": "bytes32" }, { "name": "history_hash", "type": "bytes32" }, { "name": "bond", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "templates", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "arbitrator", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "LogSetQuestionFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "template_id", "type": "uint256" }, { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "question_text", "type": "string" } ], "name": "LogNewTemplate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "template_id", "type": "uint256" }, { "indexed": false, "name": "question", "type": "string" }, { "indexed": true, "name": "content_hash", "type": "bytes32" }, { "indexed": false, "name": "arbitrator", "type": "address" }, { "indexed": false, "name": "timeout", "type": "uint32" }, { "indexed": false, "name": "opening_ts", "type": "uint32" }, { "indexed": false, "name": "nonce", "type": "uint256" }, { "indexed": false, "name": "created", "type": "uint256" } ], "name": "LogNewQuestion", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": false, "name": "bounty_added", "type": "uint256" }, { "indexed": false, "name": "bounty", "type": "uint256" }, { "indexed": true, "name": "user", "type": "address" } ], "name": "LogFundAnswerBounty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "answer", "type": "bytes32" }, { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": false, "name": "history_hash", "type": "bytes32" }, { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "bond", "type": "uint256" }, { "indexed": false, "name": "ts", "type": "uint256" }, { "indexed": false, "name": "is_commitment", "type": "bool" } ], "name": "LogNewAnswer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": true, "name": "user", "type": "address" }, { "indexed": true, "name": "answer_hash", "type": "bytes32" }, { "indexed": false, "name": "answer", "type": "bytes32" }, { "indexed": false, "name": "nonce", "type": "uint256" }, { "indexed": false, "name": "bond", "type": "uint256" } ], "name": "LogAnswerReveal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": true, "name": "user", "type": "address" } ], "name": "LogNotifyOfArbitrationRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": true, "name": "answer", "type": "bytes32" } ], "name": "LogFinalize", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "question_id", "type": "bytes32" }, { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "LogClaim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "LogWithdraw", "type": "event" }, { "constant": false, "inputs": [ { "name": "_token", "type": "address" } ], "name": "setToken", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "fee", "type": "uint256" } ], "name": "setQuestionFee", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "content", "type": "string" } ], "name": "createTemplate", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "content", "type": "string" }, { "name": "question", "type": "string" }, { "name": "arbitrator", "type": "address" }, { "name": "timeout", "type": "uint32" }, { "name": "opening_ts", "type": "uint32" }, { "name": "nonce", "type": "uint256" } ], "name": "createTemplateAndAskQuestion", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "template_id", "type": "uint256" }, { "name": "question", "type": "string" }, { "name": "arbitrator", "type": "address" }, { "name": "timeout", "type": "uint32" }, { "name": "opening_ts", "type": "uint32" }, { "name": "nonce", "type": "uint256" } ], "name": "askQuestion", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "template_id", "type": "uint256" }, { "name": "question", "type": "string" }, { "name": "arbitrator", "type": "address" }, { "name": "timeout", "type": "uint32" }, { "name": "opening_ts", "type": "uint32" }, { "name": "nonce", "type": "uint256" }, { "name": "tokens", "type": "uint256" } ], "name": "askQuestionERC20", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "tokens", "type": "uint256" } ], "name": "fundAnswerBountyERC20", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "answer", "type": "bytes32" }, { "name": "max_previous", "type": "uint256" }, { "name": "tokens", "type": "uint256" } ], "name": "submitAnswerERC20", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "answer_hash", "type": "bytes32" }, { "name": "max_previous", "type": "uint256" }, { "name": "_answerer", "type": "address" }, { "name": "tokens", "type": "uint256" } ], "name": "submitAnswerCommitmentERC20", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "answer", "type": "bytes32" }, { "name": "nonce", "type": "uint256" }, { "name": "bond", "type": "uint256" } ], "name": "submitAnswerReveal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "requester", "type": "address" }, { "name": "max_previous", "type": "uint256" } ], "name": "notifyOfArbitrationRequest", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "answer", "type": "bytes32" }, { "name": "answerer", "type": "address" } ], "name": "submitAnswerByArbitrator", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "isFinalized", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getFinalAnswer", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "resultFor", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "content_hash", "type": "bytes32" }, { "name": "arbitrator", "type": "address" }, { "name": "min_timeout", "type": "uint32" }, { "name": "min_bond", "type": "uint256" } ], "name": "getFinalAnswerIfMatches", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_id", "type": "bytes32" }, { "name": "history_hashes", "type": "bytes32[]" }, { "name": "addrs", "type": "address[]" }, { "name": "bonds", "type": "uint256[]" }, { "name": "answers", "type": "bytes32[]" } ], "name": "claimWinnings", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "question_ids", "type": "bytes32[]" }, { "name": "lengths", "type": "uint256[]" }, { "name": "hist_hashes", "type": "bytes32[]" }, { "name": "addrs", "type": "address[]" }, { "name": "bonds", "type": "uint256[]" }, { "name": "answers", "type": "bytes32[]" } ], "name": "claimMultipleAndWithdrawBalance", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getContentHash", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getArbitrator", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getOpeningTS", "outputs": [ { "name": "", "type": "uint32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getTimeout", "outputs": [ { "name": "", "type": "uint32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getFinalizeTS", "outputs": [ { "name": "", "type": "uint32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "isPendingArbitration", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getBounty", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getBestAnswer", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getHistoryHash", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "question_id", "type": "bytes32" } ], "name": "getBond", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405260006002553480156200001657600080fd5b506200008d606060405190810160405280603f81526020017f7b227469746c65223a20222573222c202274797065223a2022626f6f6c222c2081526020017f2263617465676f7279223a20222573222c20226c616e67223a20222573227d0081525062000308640100000000026401000000009004565b506200012a608060405190810160405280604f81526020017f7b227469746c65223a20222573222c202274797065223a202275696e74222c2081526020017f22646563696d616c73223a2031382c202263617465676f7279223a202225732281526020017f2c20226c616e67223a20222573227d000000000000000000000000000000000081525062000308640100000000026401000000009004565b50620001c7608060405190810160405280605a81526020017f7b227469746c65223a20222573222c202274797065223a202273696e676c652d81526020017f73656c656374222c20226f7574636f6d6573223a205b25735d2c20226361746581526020017f676f7279223a20222573222c20226c616e67223a20222573227d00000000000081525062000308640100000000026401000000009004565b5062000264608060405190810160405280605c81526020017f7b227469746c65223a20222573222c202274797065223a20226d756c7469706c81526020017f652d73656c656374222c20226f7574636f6d6573223a205b25735d2c2022636181526020017f7465676f7279223a20222573222c20226c616e67223a20222573227d0000000081525062000308640100000000026401000000009004565b5062000301608060405190810160405280604381526020017f7b227469746c65223a20222573222c202274797065223a20226461746574696d81526020017f65222c202263617465676f7279223a20222573222c20226c616e67223a20222581526020017f73227d000000000000000000000000000000000000000000000000000000000081525062000308640100000000026401000000009004565b506200051f565b6000806002549050436003600083815260200190815260200160002081905550826040516020018082805190602001908083835b6020831015156200036357805182526020820191506020810190506020830392506200033c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515620003ce5780518252602082019150602081019050602083039250620003a7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206004600083815260200190815260200160002081600019169055503373ffffffffffffffffffffffffffffffffffffffff16817fb87fb721c0a557bb8dff89a86796466931d82ba530a66a239263eb8735ade2e4856040518080602001828103825283818151815260200191508051906020019080838360005b838110156200049257808201518184015260208101905062000475565b50505050905090810190601f168015620004c05780820380516001836020036101000a031916815260200191505b509250505060405180910390a3620004f1600182620005006401000000000262005354179091906401000000009004565b60028190555080915050919050565b60008082840190508381101515156200051557fe5b8091505092915050565b6163a3806200052f6000396000f3006080604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631101a0fd146101d2578063128b7a471461030f57806312a203c31461034a578063144fa6d7146103df5780632417395c146104225780632518904c1461046757806326d6c97b146104d857806328828b1e1461051d5780632f998a6f146106d25780633ccfd60b146107255780634dc266b41461073c5780634df6ca2a1461078f5780634e60f883146107bc57806351577ea914610805578063590158a7146108525780636fa42742146108d157806370a0823114610928578063762c38fd1461097f5780637f8d429e14610a5857806382ffa9f714610aa1578063839df94514610aee57806383bf460914610b595780638d552d4614610bd6578063924532fb14610c2357806395addb9014610c6c5780639e63fa6a14610d5c5780639f1025c614610dad578063a1130d0414610dfe578063a462fb7b14610f13578063ac7b2a5f14610f60578063acae8f4e14610fd3578063bc52565214611024578063d09cc57e14611065578063d4876b9f146110b2578063f6a94ecb14611195578063fc0c546a146111f0578063fe92049d14611247575b600080fd5b3480156101de57600080fd5b5061030d6004803603810190808035600019169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506112a6565b005b34801561031b57600080fd5b5061034860048036038101908080356000191690602001909291908035906020019092919050505061176b565b005b34801561035657600080fd5b506103c160048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919080359060200190929190505050611b75565b60405180826000191660001916815260200191505060405180910390f35b3480156103eb57600080fd5b50610420600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ee6565b005b34801561042e57600080fd5b506104516004803603810190808035600019169060200190929190505050612014565b6040518082815260200191505060405180910390f35b34801561047357600080fd5b50610496600480360381019080803560001916906020019092919050505061203c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e457600080fd5b506105076004803603810190808035600019169060200190929190505050612084565b6040518082815260200191505060405180910390f35b34801561052957600080fd5b506106d06004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506120ac565b005b3480156106de57600080fd5b5061072360048036038101908080356000191690602001909291908035600019169060200190929190803590602001909291908035906020019092919050505061232a565b005b34801561073157600080fd5b5061073a6128a0565b005b34801561074857600080fd5b5061078d600480360381019080803560001916906020019092919080356000191690602001909291908035906020019092919080359060200190929190505050612a84565b005b34801561079b57600080fd5b506107ba600480360381019080803590602001909291905050506130fd565b005b3480156107c857600080fd5b506107e7600480360381019080803590602001909291905050506131af565b60405180826000191660001916815260200191505060405180910390f35b34801561081157600080fd5b5061083460048036038101908080356000191690602001909291905050506131c7565b60405180826000191660001916815260200191505060405180910390f35b34801561085e57600080fd5b5061088160048036038101908080356000191690602001909291905050506131ef565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b3480156108dd57600080fd5b50610912600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613239565b6040518082815260200191505060405180910390f35b34801561093457600080fd5b50610969600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613251565b6040518082815260200191505060405180910390f35b34801561098b57600080fd5b50610a3a60048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190803563ffffffff16906020019092919080359060200190929190505050613269565b60405180826000191660001916815260200191505060405180910390f35b348015610a6457600080fd5b50610a8760048036038101908080356000191690602001909291905050506136a0565b604051808215151515815260200191505060405180910390f35b348015610aad57600080fd5b50610ad06004803603810190808035600019169060200190929190505050613739565b60405180826000191660001916815260200191505060405180910390f35b348015610afa57600080fd5b50610b1d6004803603810190808035600019169060200190929190505050613761565b604051808463ffffffff1663ffffffff168152602001831515151581526020018260001916600019168152602001935050505060405180910390f35b348015610b6557600080fd5b50610bc0600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506137a8565b6040518082815260200191505060405180910390f35b348015610be257600080fd5b50610c056004803603810190808035600019169060200190929190505050613989565b60405180826000191660001916815260200191505060405180910390f35b348015610c2f57600080fd5b50610c5260048036038101908080356000191690602001909291905050506139b1565b604051808215151515815260200191505060405180910390f35b348015610c7857600080fd5b50610c9b60048036038101908080356000191690602001909291905050506139e6565b604051808b600019166000191681526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018963ffffffff1663ffffffff1681526020018863ffffffff1663ffffffff1681526020018763ffffffff1663ffffffff16815260200186151515158152602001858152602001846000191660001916815260200183600019166000191681526020018281526020019a505050505050505050505060405180910390f35b348015610d6857600080fd5b50610d8b6004803603810190808035600019169060200190929190505050613a97565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610db957600080fd5b50610ddc6004803603810190808035600019169060200190929190505050613acf565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610e0a57600080fd5b50610ef5600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190803563ffffffff16906020019092919080359060200190929190505050613b07565b60405180826000191660001916815260200191505060405180910390f35b348015610f1f57600080fd5b50610f426004803603810190808035600019169060200190929190505050613b30565b60405180826000191660001916815260200191505060405180910390f35b348015610f6c57600080fd5b50610fd16004803603810190808035600019169060200190929190803560001916906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613bd7565b005b348015610fdf57600080fd5b506110026004803603810190808035600019169060200190929190505050614206565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561103057600080fd5b5061104f6004803603810190808035906020019092919050505061423e565b6040518082815260200191505060405180910390f35b34801561107157600080fd5b506110946004803603810190808035600019169060200190929190505050614256565b60405180826000191660001916815260200191505060405180910390f35b3480156110be57600080fd5b5061117760048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190803563ffffffff16906020019092919080359060200190929190803590602001909291905050506142fd565b60405180826000191660001916815260200191505060405180910390f35b3480156111a157600080fd5b506111ee6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061473e565b005b3480156111fc57600080fd5b50611205614d5c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561125357600080fd5b506112a460048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614d81565b005b60008060008060008060008b6112bb816136a0565b151561132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7175657374696f6e206d7573742062652066696e616c697a656400000000000081525060200191505060405180910390fd5b60008c511115156113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f6174206c65617374206f6e6520686973746f7279206861736820656e7472792081526020017f6d7573742062652070726f76696465640000000000000000000000000000000081525060400191505060405180910390fd5b600660008e6000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750600660008e60001916600019168152602001908152602001600020600101549650600660008e60001916600019168152602001908152602001600020600201549550600560008e60001916600019168152602001908152602001600020600501549450600560008e60001916600019168152602001908152602001600020600401549350600092505b8b518310156115bf5761150a858d858151811015156114b357fe5b906020019060200201518b868151811015156114cb57fe5b906020019060200201518d878151811015156114e357fe5b906020019060200201518f888151811015156114fb57fe5b9060200190602002015161505d565b915061151f878761535490919063ffffffff16565b95506115768d85888b8f8881518110151561153657fe5b906020019060200201518f8981518110151561154e57fe5b906020019060200201518f8a81518110151561156657fe5b9060200190602002015189615372565b8099508197505050898381518110151561158c57fe5b9060200190602002015196508b838151811015156115a657fe5b9060200190602002015194508280600101935050611498565b60006001026000191685600019161415156116c257600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151561161a576116158d89886155a9565b600095505b87600660008f6000191660001916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600660008f600019166000191681526020019081526020016000206001018190555085600660008f6000191660001916815260200190815260200160002060020181905550611735565b6116df8d896116da8a8a61535490919063ffffffff16565b6155a9565b600660008e60001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550505b84600560008f60001916600019168152602001908152602001600020600501816000191690555050505050505050505050505050565b81600080600060056000856000191660001916815260200190815260200160002060010160189054906101000a900463ffffffff1663ffffffff1611151561181b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7175657374696f6e206d7573742065786973740000000000000000000000000081525060200191505060405180910390fd5b60056000846000191660001916815260200190815260200160002060020160009054906101000a900460ff161515156118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f7175657374696f6e206d757374206e6f742062652070656e64696e672061726281526020017f6974726174696f6e00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600560008460001916600019168152602001908152602001600020600101601c9054906101000a900463ffffffff169150600063ffffffff168263ffffffff16148061193957504263ffffffff168263ffffffff16115b15156119d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f66696e616c697a6174696f6e20646561646c696e65206d757374206e6f74206881526020017f617665207061737365640000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60056000846000191660001916815260200190815260200160002060010160149054906101000a900463ffffffff16905060008163ffffffff161480611a2557504263ffffffff168163ffffffff1611155b1515611a99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f70656e696e672064617465206d75737420686176652070617373656400000081525060200191505060405180910390fd5b611aa284615696565b611ad3846005600088600019166000191681526020019081526020016000206003015461535490919063ffffffff16565b600560008760001916600019168152602001908152602001600020600301819055503373ffffffffffffffffffffffffffffffffffffffff1685600019167f54d68405b79f2aa4fd4e8db7b67844ad254cf8f208aac476c2894134a9deab6686600560008a6000191660001916815260200190815260200160002060030154604051808381526020018281526020019250505060405180910390a35050505050565b600085611b81816136a0565b1515611bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7175657374696f6e206d7573742062652066696e616c697a656400000000000081525060200191505060405180910390fd5b60056000886000191660001916815260200190815260200160002060000154600019168660001916141515611c92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f636f6e74656e742068617368206d757374206d6174636800000000000000000081525060200191505060405180910390fd5b60056000886000191660001916815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515611d73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f61726269747261746f72206d757374206d61746368000000000000000000000081525060200191505060405180910390fd5b60056000886000191660001916815260200190815260200160002060010160189054906101000a900463ffffffff1663ffffffff168463ffffffff1611151515611e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f74696d656f7574206d757374206265206c6f6e6720656e6f756768000000000081525060200191505060405180910390fd5b600560008860001916600019168152602001908152602001600020600601548311151515611ebb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f626f6e64206d757374206265206869676820656e6f756768000000000000000081525060200191505060405180910390fd5b6005600088600019166000191681526020019081526020016000206004015491505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f546f6b656e2063616e206f6e6c7920626520696e697469616c697a6564206f6e81526020017f636500000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008360001916600019168152602001908152602001600020600301549050919050565b600060056000836000191660001916815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008360001916600019168152602001908152602001600020600601549050919050565b60008060008060608060608060008098505b8e51891015612311578e898151811015156120d557fe5b9060200190602002015196508d898151811015156120ef57fe5b9060200190602002015195508560405190808252806020026020018201604052801561212a5781602001602082028038833980820191505090505b5094508560405190808252806020026020018201604052801561215c5781602001602082028038833980820191505090505b5093508560405190808252806020026020018201604052801561218e5781602001602082028038833980820191505090505b509250856040519080825280602002602001820160405280156121c05781602001602082028038833980820191505090505b509150600090505b858110156122f7578c888151811015156121de57fe5b9060200190602002015185828151811015156121f657fe5b9060200190602002019060001916908160001916815250508b8881518110151561221c57fe5b90602001906020020151848281518110151561223457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508a8881518110151561227e57fe5b90602001906020020151838281518110151561229657fe5b906020019060200201818152505089888151811015156122b257fe5b9060200190602002015182828151811015156122ca57fe5b906020019060200201906000191690816000191681525050878060010198505080806001019150506121c8565b61230487868686866112a6565b88806001019950506120be565b6123196128a0565b505050505050505050505050505050565b83600080600060056000856000191660001916815260200190815260200160002060010160189054906101000a900463ffffffff1663ffffffff161115156123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7175657374696f6e206d7573742065786973740000000000000000000000000081525060200191505060405180910390fd5b60056000846000191660001916815260200190815260200160002060020160009054906101000a900460ff161515156124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f7175657374696f6e206d757374206e6f742062652070656e64696e672061726281526020017f6974726174696f6e00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600560008460001916600019168152602001908152602001600020600101601c9054906101000a900463ffffffff169150600063ffffffff168263ffffffff1614806124f857504263ffffffff168263ffffffff16115b1515612592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f66696e616c697a6174696f6e20646561646c696e65206d757374206e6f74206881526020017f617665207061737365640000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60056000846000191660001916815260200190815260200160002060010160149054906101000a900463ffffffff16905060008163ffffffff1614806125e457504263ffffffff168163ffffffff1611155b1515612658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f70656e696e672064617465206d75737420686176652070617373656400000081525060200191505060405180910390fd5b86846000811115156126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f626f6e64206d75737420626520706f736974697665000000000000000000000081525060200191505060405180910390fd5b61270460026005600085600019166000191681526020019081526020016000206006015461598190919063ffffffff16565b81101515156127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f626f6e64206d75737420626520646f75626c65206174206c656173742070726581526020017f76696f757320626f6e640000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8887600081111561284357806005600084600019166000191681526020019081526020016000206006015411151515612842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f626f6e64206d75737420657863656564206d61785f70726576696f757300000081525060200191505060405180910390fd5b5b61284c88615696565b61285a8b8b338b60006159bc565b6128938b8b600560008f6000191660001916815260200190815260200160002060010160189054906101000a900463ffffffff16615bd4565b5050505050505050505050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156129ed57600080fd5b505af1158015612a01573d6000803e3d6000fd5b505050506040513d6020811015612a1757600080fd5b81019080805190602001909291905050501515612a3357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab708826040518082815260200191505060405180910390a250565b60008085600080600060056000856000191660001916815260200190815260200160002060010160189054906101000a900463ffffffff1663ffffffff16111515612b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7175657374696f6e206d7573742065786973740000000000000000000000000081525060200191505060405180910390fd5b600560008460001916600019168152602001908152602001600020600101601c9054906101000a900463ffffffff169150600063ffffffff168263ffffffff161480612b8e57504263ffffffff168263ffffffff16115b1515612c28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f66696e616c697a6174696f6e206465616c696e65206d757374206e6f7420686181526020017f766520706173736564000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60056000846000191660001916815260200190815260200160002060010160149054906101000a900463ffffffff16905060008163ffffffff161480612c7a57504263ffffffff168163ffffffff1611155b1515612cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f70656e696e672064617465206d75737420686176652070617373656400000081525060200191505060405180910390fd5b8787604051602001808360001916600019168152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612d535780518252602082019150602081019050602083039250612d2e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209450888587604051602001808460001916600019168152602001836000191660001916815260200182815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083101515612df75780518252602082019150602081019050602083039250612dd2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020935060076000856000191660001916815260200190815260200160002060000160049054906101000a900460ff16151515612eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f636f6d6d69746d656e74206d757374206e6f742068617665206265656e20726581526020017f7665616c6564207965740000000000000000000000000000000000000000000081525060400191505060405180910390fd5b4263ffffffff1660076000866000191660001916815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16111515612fc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f72657665616c20646561646c696e65206d757374206e6f74206861766520706181526020017f737365640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b876007600086600019166000191681526020019081526020016000206001018160001916905550600160076000866000191660001916815260200190815260200160002060000160046101000a81548160ff021916908315150217905550600560008a6000191660001916815260200190815260200160002060060154861415613082576130818989600560008d6000191660001916815260200190815260200160002060010160189054906101000a900463ff