[ { "inputs": [ { "internalType": "contract IERC20", "name": "_hum", "type": "address" }, { "internalType": "contract IERC20", "name": "_ara", "type": "address" }, { "internalType": "address", "name": "_vuhum", "type": "address" }, { "internalType": "contract IMasterChef", "name": "_chef", "type": "address" }, { "internalType": "uint256", "name": "_farmPid", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "AccessControlError", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "ApproveError", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "BurnError", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientRewardtokens", "type": "error" }, { "inputs": [], "name": "InvalidOwner", "type": "error" }, { "inputs": [], "name": "InvalidPoolId", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "MintError", "type": "error" }, { "inputs": [], "name": "NonContractCall", "type": "error" }, { "inputs": [], "name": "NotEnoughRewardBalance", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "OptionalReturn", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "StringsError", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "message", "type": "string" } ], "name": "TransferError", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "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": [], "name": "ClaimVeHumRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "EmergencyWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Harvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" } ], "name": "LogPoolAddition", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "allocPoint", "type": "uint256" } ], "name": "LogSetPool", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": true, "internalType": "uint256", "name": "_araPerBlock", "type": "uint256" } ], "name": "UpdateEmissionRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "pid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawETH", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawErc20", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "WithdrawVeHumRewards", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DENOMINATOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "POOL_PERCENTAGE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_allocPoint", "type": "uint256" } ], "name": "add", "outputs": [], "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": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "ara", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "araPerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "chef", "outputs": [ { "internalType": "contract IMasterChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimVeHumRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositToChef", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "farmPid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "harvestAndDistribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hum", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_user", "type": "address" } ], "name": "pendingARA", "outputs": [ { "internalType": "uint256", "name": "pending", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "poolInfo", "outputs": [ { "internalType": "uint256", "name": "allocPoint", "type": "uint256" }, { "internalType": "uint256", "name": "lastRewardBlock", "type": "uint256" }, { "internalType": "uint256", "name": "accARAPerShare", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_allocPoint", "type": "uint256" } ], "name": "set", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAllocPoint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAmountOfSupplyStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_araPerBlock", "type": "uint256" } ], "name": "updateEmissionRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "updatePool", "outputs": [ { "components": [ { "internalType": "uint256", "name": "allocPoint", "type": "uint256" }, { "internalType": "uint256", "name": "lastRewardBlock", "type": "uint256" }, { "internalType": "uint256", "name": "accARAPerShare", "type": "uint256" } ], "internalType": "struct aHUM.PoolInfo", "name": "pool", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userInfo", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "rewardDebt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vuhum", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawAndDistribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawErc20Tokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawHumRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162002b3b38038062002b3b8339810160408190526200003491620001d0565b6040518060400160405280601281526020017120b930a33490243ab6b6bab9902a37b5b2b760711b815250604051806040016040528060048152602001636148554d60e01b81525081600390816200008d9190620002e9565b5060046200009c8282620002e9565b505050620000b9620000b36200016160201b60201c565b62000165565b6001600160a01b0385161580620000d757506001600160a01b038416155b80620000ea57506001600160a01b038216155b15620001095760405163d92e233d60e01b815260040160405180910390fd5b600e80546001600160a01b039687166001600160a01b0319918216179091556010805494871694821694909417909355600f805494861694841694909417909355600c805491909416911617909155600d55620003b5565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381168114620001cd57600080fd5b50565b600080600080600060a08688031215620001e957600080fd5b8551620001f681620001b7565b60208701519095506200020981620001b7565b60408701519094506200021c81620001b7565b60608701519093506200022f81620001b7565b80925050608086015190509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026f57607f821691505b6020821081036200029057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002e457600081815260208120601f850160051c81016020861015620002bf5750805b601f850160051c820191505b81811015620002e057828155600101620002cb565b5050505b505050565b81516001600160401b0381111562000305576200030562000244565b6200031d816200031684546200025a565b8462000296565b602080601f8311600181146200035557600084156200033c5750858301515b600019600386901b1c1916600185901b178555620002e0565b600085815260208120601f198616915b82811015620003865788860151825594840194600190910190840162000365565b5085821015620003a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61277680620003c56000396000f3fe6080604052600436106102105760003560e01c8062f9beee1461021c57806301ffc9a71461025257806306fdde0314610282578063095ea7b3146102a45780630ba84cd2146102c45780631003e2d2146102e65780631149b660146103065780631526fe271461032657806317caf6f11461036157806318160ddd146103855780631ab06ee51461039a5780631fc8bc5d146103ba57806323b872dd146103da578063248a9ca3146103fa5780632e1a7d4d1461041a5780632f2ff15d1461043a578063313ce5671461045a57806336568abe14610476578063395093511461049657806339e5f4ff146104b657806351eb05a6146104cc57806370a082311461050e578063715018a6146105445780637b0472f014610559578063827907b41461057957806389496de01461058f5780638da5cb5b146105af578063918f8674146105c457806391d14854146105da57806393f1a40b146105fa57806395d89b4114610647578063966244871461065c578063a065915e1461067c578063a217fddf1461069c578063a457c2d7146106b1578063a9059cbb146106d1578063aaaffec5146106f1578063b3344f7d14610707578063c64155441461071d578063d547741f1461073d578063dd62ed3e1461075d578063e2263f261461077d578063f2fde38b14610792578063f5bda1ff146107b2578063fa83a97a146107d2578063fcb8146e146107f257600080fd5b3661021757005b600080fd5b34801561022857600080fd5b5060105461023c906001600160a01b031681565b6040516102499190612383565b60405180910390f35b34801561025e57600080fd5b5061027261026d366004612397565b610812565b6040519015158152602001610249565b34801561028e57600080fd5b50610297610849565b60405161024991906123e5565b3480156102b057600080fd5b506102726102bf36600461242f565b6108db565b3480156102d057600080fd5b506102e46102df366004612459565b6108f3565b005b3480156102f257600080fd5b506102e4610301366004612459565b61092e565b34801561031257600080fd5b506102e4610321366004612472565b610a2c565b34801561033257600080fd5b50610346610341366004612459565b610c83565b60408051938452602084019290925290820152606001610249565b34801561036d57600080fd5b50610377600a5481565b604051908152602001610249565b34801561039157600080fd5b50600254610377565b3480156103a657600080fd5b506102e46103b5366004612472565b610cb6565b3480156103c657600080fd5b50600c5461023c906001600160a01b031681565b3480156103e657600080fd5b506102726103f5366004612494565b610d8a565b34801561040657600080fd5b50610377610415366004612459565b610dae565b34801561042657600080fd5b506102e4610435366004612459565b610dc3565b34801561044657600080fd5b506102e46104553660046124d0565b610e29565b34801561046657600080fd5b5060405160128152602001610249565b34801561048257600080fd5b506102e46104913660046124d0565b610e4a565b3480156104a257600080fd5b506102726104b136600461242f565b610ece565b3480156104c257600080fd5b5061037761036c81565b3480156104d857600080fd5b506104ec6104e7366004612459565b610ef0565b6040805182518152602080840151908201529181015190820152606001610249565b34801561051a57600080fd5b506103776105293660046124fc565b6001600160a01b031660009081526020819052604090205490565b34801561055057600080fd5b506102e4611072565b34801561056557600080fd5b506102e4610574366004612472565b611086565b34801561058557600080fd5b50610377600d5481565b34801561059b57600080fd5b506102e46105aa366004612459565b6110f5565b3480156105bb57600080fd5b5061023c611235565b3480156105d057600080fd5b506103776103e881565b3480156105e657600080fd5b506102726105f53660046124d0565b611244565b34801561060657600080fd5b506106396106153660046124d0565b60086020908152600092835260408084209091529082529020805460019091015482565b604051610249929190612517565b34801561065357600080fd5b5061029761126f565b34801561066857600080fd5b506102e4610677366004612459565b61127e565b34801561068857600080fd5b506103776106973660046124d0565b611312565b3480156106a857600080fd5b50610377600081565b3480156106bd57600080fd5b506102726106cc36600461242f565b611460565b3480156106dd57600080fd5b506102726106ec36600461242f565b6114dc565b3480156106fd57600080fd5b50610377600b5481565b34801561071357600080fd5b5061037760095481565b34801561072957600080fd5b50600e5461023c906001600160a01b031681565b34801561074957600080fd5b506102e46107583660046124d0565b6114ea565b34801561076957600080fd5b50610377610778366004612525565b611506565b34801561078957600080fd5b506102e4611531565b34801561079e57600080fd5b506102e46107ad3660046124fc565b6115cc565b3480156107be57600080fd5b50600f5461023c906001600160a01b031681565b3480156107de57600080fd5b506102e46107ed366004612472565b611607565b3480156107fe57600080fd5b506102e461080d36600461242f565b61179a565b60006001600160e01b03198216637965db0b60e01b148061084357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546108589061254f565b80601f01602080910402602001604051908101604052809291908181526020018280546108849061254f565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050905090565b6000336108e98185856117f3565b5060019392505050565b6108fb611919565b600981905560405181907f232bc60e54c3a684fb69d1cde365a10c51105f4f8ba47a6cd0c5435192010a9c90600090a250565b610936611919565b604080516060810182528281524360208201908152600092820183815260078054600181018255945291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390940293840155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155600a546109e490829061259f565b600a556007546109f6906001906125b2565b6040518281527f38410508059921573ab9ebdca2a5034be738d236366b8f32de4434ea95ed3c819060200160405180910390a250565b6007548210610a4e5760405163015f4fdd60e31b815260040160405180910390fd5b6000610a5983610ef0565b6000848152600860209081526040808320338085529252909120600e5492935091610a91916001600160a01b03909116903086611949565b600e5460105460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610ac79291169087906004016125c5565b6020604051808303816000875af1158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906125de565b5060105460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b5050505082600b54610b77919061259f565b600b55610b8430846119ba565b600c54610b9c9030906001600160a01b0316856117f3565b600c54600d54604051631c57762b60e31b81526001600160a01b039092169163e2bbb15891610bcf918790600401612517565b600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b50508254610c0e925085915061259f565b8155604082015164e8d4a5100090610c269085612600565b610c309190612617565b8160010154610c3f919061259f565b60018201556040518381523390859082907f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b479060200160405180910390a450505050565b60078181548110610c9357600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b610cbe611919565b6007548210610ce05760405163015f4fdd60e31b815260040160405180910390fd5b8060078381548110610cf457610cf4612639565b906000526020600020906003020160000154600a54610d1391906125b2565b610d1d919061259f565b600a819055508060078381548110610d3757610d37612639565b906000526020600020906003020160000181905550817f942cc7e17a17c164bd977f32ab8c54265d5b9d481e4e352bf874f1e568874e7c82604051610d7e91815260200190565b60405180910390a25050565b600033610d98858285611a68565b610da3858585611aad565b506001949350505050565b60009081526005602052604090206001015490565b610dcb611919565b604051339082156108fc029083906000818181858888f19350505050158015610df8573d6000803e3d6000fd5b50604051819033907f566e45b1c8057e725bf62796a7f1d37ae294393cab069725a09daddd1af98b7990600090a350565b610e3282610dae565b610e3b81611c42565b610e458383611c4c565b505050565b6001600160a01b0381163314610ec05760405163050de1ab60e11b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610eca8282611cd2565b5050565b6000336108e9818585610ee18383611506565b610eeb919061259f565b6117f3565b610f1460405180606001604052806000815260200160008152602001600081525090565b6007548210610f365760405163015f4fdd60e31b815260040160405180910390fd5b60078281548110610f4957610f49612639565b60009182526020918290206040805160608101825260039093029091018054835260018101549383018490526002015490820152915043111561106d57600b5415611020576000816020015143610fa091906125b2565b600a548351600954929350600092610fb89085612600565b610fc29190612600565b610fcc9190612617565b905060006103e8610fdf61036c84612600565b610fe99190612617565b600b54909150610ffe64e8d4a5100083612600565b6110089190612617565b8460400151611017919061259f565b60408501525050505b436020820152600780548291908490811061103d5761103d612639565b90600052602060002090600302016000820151816000015560208201518160010155604082015181600201559050505b919050565b61107a611919565b6110846000611d39565b565b60075482106110a85760405163015f4fdd60e31b815260040160405180910390fd5b60006110b383610ef0565b60008481526008602090815260408083203384529091529020600b54919250906110de90849061259f565b600b556110eb3384611d8b565b610b8430846119ba565b60075481106111175760405163015f4fdd60e31b815260040160405180910390fd5b600061112282610ef0565b6000838152600860209081526040808320338452909152808220600c54600d549251631c57762b60e31b815294955090936001600160a01b039091169263e2bbb1589261117492909190600401612517565b600060405180830381600087803b15801561118e57600080fd5b505af11580156111a2573d6000803e3d6000fd5b505050604083015182546000925064e8d4a51000916111c091612600565b6111ca9190612617565b905060008260010154826111de91906125b2565b60018401839055905080156111f7576111f73382611ead565b604051818152859033907f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249549060200160405180910390a35050505050565b6006546001600160a01b031690565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546108589061254f565b611286611919565b601054604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b50506040518392507fae46e49bf0c0efa0f0cb9f0b9a5cfa84989e381dd65e0a7350f286a9d127e7bc9150600090a250565b60075460009083106113375760405163015f4fdd60e31b815260040160405180910390fd5b60006007848154811061134c5761134c612639565b600091825260208083208784526008825260408085206001600160a01b0389168652909252922060026003909202909201908101546001820154919350904311801561139a57506000600b54115b156114295760008360010154436113b191906125b2565b600a5485546009549293506000926113c99085612600565b6113d39190612600565b6113dd9190612617565b905060006103e86113f061036c84612600565b6113fa9190612617565b600b5490915061140f64e8d4a5100083612600565b6114199190612617565b611423908561259f565b93505050505b6001820154825464e8d4a5100090611442908490612600565b61144c9190612617565b61145691906125b2565b9695505050505050565b6000338161146e8286611506565b9050838110156114cf5760405163731aada560e11b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610eb7565b610da382868684036117f3565b6000336108e9818585611aad565b6114f382610dae565b6114fc81611c42565b610e458383611cd2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611539611919565b601060009054906101000a90046001600160a01b03166001600160a01b0316634e71d92d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b50506040517f5d7c572c68017e16c730bd4ba7d7058476c5de62f132595f908bef78aa462986925060009150a1565b6115d4611919565b6001600160a01b0381166115fb5760405163d92e233d60e01b815260040160405180910390fd5b61160481611d39565b50565b60075482106116295760405163015f4fdd60e31b815260040160405180910390fd5b600061163483610ef0565b600084815260086020908152604080832033845290915290819020600c54600d549251630441a3e760e41b815293945090926001600160a01b039091169163441a3e709161168791908790600401612517565b600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b505050506116c33084611d8b565b6116cd33846119ba565b82600b546116db91906125b2565b600b556040820151815460009164e8d4a51000916116f99190612600565b6117039190612617565b9050600082600101548261171791906125b2565b83549091506117279086906125b2565b808455604085015164e8d4a51000916117409190612600565b61174a9190612617565b60018401556117593382611ead565b6040518581523390879082907f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21329060200160405180910390a4505050505050565b6117a2611919565b6117b76001600160a01b038316303384611949565b604051819033906001600160a01b038516907f383f33f5cfc0ea39df2df09b8aa75c13e3b147713e66b8a06d03158fdb01264390600090a45050565b6001600160a01b0383166118565760405163731aada560e11b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610eb7565b6001600160a01b0382166118b85760405163731aada560e11b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610eb7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33611922611235565b6001600160a01b031614611084576040516349e27cff60e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526119b49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f59565b50505050565b6001600160a01b038216611a1157604051636827d5d160e01b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610eb7565b8060026000828254611a23919061259f565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020612721833981519152910160405180910390a35050565b6000611a748484611506565b905060001981146119b45781811015611aa0576040516313be252b60e01b815260040160405180910390fd5b6119b484848484036117f3565b6001600160a01b038316611b1257604051631e30f57d60e31b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610eb7565b6001600160a01b038216611b7557604051631e30f57d60e31b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610eb7565b6001600160a01b03831660009081526020819052604090205481811015611bee57604051631e30f57d60e31b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610eb7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020612721833981519152910160405180910390a36119b4565b6116048133612033565b611c568282611244565b610eca5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c8e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611cdc8282611244565b15610eca5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216611dec576040516303665b4b60e41b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610eb7565b6001600160a01b03821660009081526020819052604090205481811015611e61576040516303665b4b60e41b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610eb7565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020612721833981519152910160405180910390a3505050565b600f546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611ede903090600401612383565b602060405180830381865afa158015611efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1f919061264f565b905080821115611f425760405163688589a760e11b815260040160405180910390fd5b600f54610e45906001600160a01b0316848461208c565b6000611fae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120ab9092919063ffffffff16565b905060008151118015611fd2575080806020019051810190611fd091906125de565b155b15610e455760405163ea9c51f360e01b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610eb7565b61203d8282611244565b610eca5761204a816120c2565b6120558360206120d4565b604051602001612066929190612668565b60408051601f198184030181529082905262461bcd60e51b8252610eb7916004016123e5565b610e458363a9059cbb60e01b848460405160240161197d9291906125c5565b60606120ba8484600085612277565b949350505050565b60606108436001600160a01b03831660145b606060006120e3836002612600565b6120ee90600261259f565b6001600160401b03811115612105576121056126d7565b6040519080825280601f01601f19166020018201604052801561212f576020820181803683370190505b509050600360fc1b8160008151811061214a5761214a612639565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061217957612179612639565b60200101906001600160f81b031916908160001a905350600061219d846002612600565b6121a890600161259f565b90505b6001811115612220576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106121dc576121dc612639565b1a60f81b8282815181106121f2576121f2612639565b60200101906001600160f81b031916908160001a90535060049490941c93612219816126ed565b90506121ab565b5083156122705760405163fb52196f60e01b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610eb7565b9392505050565b60608247101561229a57604051631e9acf1760e31b815260040160405180910390fd5b600080866001600160a01b031685876040516122b69190612704565b60006040518083038185875af1925050503d80600081146122f3576040519150601f19603f3d011682016040523d82523d6000602084013e6122f8565b606091505b509150915061230987838387612314565b979650505050505050565b6060831561235457825160000361234d576001600160a01b0385163b61234d5760405163304619b560e01b815260040160405180910390fd5b50816120ba565b6120ba83838151156123695781518083602001fd5b8060405162461bcd60e51b8152600401610eb791906123e5565b6001600160a01b0391909116815260200190565b6000602082840312156123a957600080fd5b81356001600160e01b03198116811461227057600080fd5b60005b838110156123dc5781810151838201526020016123c4565b50506000910152565b60208152600082518060208401526124048160408501602087016123c1565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461106d57600080fd5b6000806040838503121561244257600080fd5b61244b83612418565b946020939093013593505050565b60006020828403121561246b57600080fd5b5035919050565b6000806040838503121561248557600080fd5b50508035926020909101359150565b6000806000606084860312156124a957600080fd5b6124b284612418565b92506124c060208501612418565b9150604084013590509250925092565b600080604083850312156124e357600080fd5b823591506124f360208401612418565b90509250929050565b60006020828403121561250e57600080fd5b61227082612418565b918252602082015260400190565b6000806040838503121561253857600080fd5b61254183612418565b91506124f360208401612418565b600181811c9082168061256357607f821691505b60208210810361258357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561084357610843612589565b8181038181111561084357610843612589565b6001600160a01b03929092168252602082015260400190565b6000602082840312156125f057600080fd5b8151801515811461227057600080fd5b808202811582820484141761084357610843612589565b60008261263457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266157600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161269a8160178501602088016123c1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516126cb8160288401602088016123c1565b01602801949350505050565b634e487b7160e01b600052604160045260246000fd5b6000816126fc576126fc612589565b506000190190565b600082516127168184602087016123c1565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f98933aac1613ea106a51b2fdbb2a511b8d48d4c2318b390172a39c0005acee464736f6c634300081200330000000000000000000000004aac94985cd83be30164dfe7e9af7c054d7d212100000000000000000000000093aae7a9e0b1c0b71c0186781e4629ba80fac35500000000000000000000000089351beaa4abba563710864051a8c253e7b3e16d0000000000000000000000009c7c2d7892c7ac9147734276073aafd3ba46ece80000000000000000000000000000000000000000000000000000000000000003