10 txs
8 calls
constructor
constructor(address _token, address _owner, uint256[] _durationsInDays, uint256[] _apys)
functions
EMERGENCY_UNSTAKE_PENALTY_BPS
viewfunction EMERGENCY_UNSTAKE_PENALTY_BPS() view returns (uint256)
getRewards
viewfunction getRewards(address _user) view returns (uint256 total)
getSupportedLockDurations
viewfunction getSupportedLockDurations() view returns (uint256[])
owner
viewfunction owner() view returns (address)
pendingRewards
viewfunction pendingRewards(address _user, uint256 _lockDuration) view returns (uint256)
pools
viewfunction pools(uint256) view returns (uint256 apy, bool exists, uint256 totalStaked)
rewardReserve
viewfunction rewardReserve() view returns (uint256)
stakes
viewfunction stakes(address, uint256) view returns (uint256 amount, uint64 startTime, uint64 lastClaim)
supportedLockDurations
viewfunction supportedLockDurations(uint256) view returns (uint256)
token
viewfunction token() view returns (address)
totalStakedAll
viewfunction totalStakedAll() view returns (uint256 total)
addStakingPool
nonpayablefunction addStakingPool(uint256 _lockDuration, uint256 _apy)
claimAllRewards
nonpayablefunction claimAllRewards()
claimRewards
nonpayablefunction claimRewards(uint256 _lockDuration)
depositRewards
nonpayablefunction depositRewards(uint256 _amount)
emergencyUnstake
nonpayablefunction emergencyUnstake(uint256 _lockDuration)
modifyStakingPool
nonpayablefunction modifyStakingPool(uint256 _lockDuration, uint256 _newApy)
renounceOwnership
nonpayablefunction renounceOwnership()
stake
nonpayablefunction stake(uint256 _amount, uint256 _lockDuration)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(uint256 _lockDuration)
withdrawExcessRewards
nonpayablefunction withdrawExcessRewards(uint256 _amount)
events
EmergencyUnstaked
event EmergencyUnstaked(address indexed user, uint256 returnedAmount, uint256 penalty, uint256 indexed lockDuration, uint256 timestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolAdded
event PoolAdded(uint256 indexed lockDuration, uint256 apy)
PoolModified
event PoolModified(uint256 indexed lockDuration, uint256 apy)
RewardsClaimed
event RewardsClaimed(address indexed user, uint256 rewards, uint256 timestamp)
RewardsDeposited
event RewardsDeposited(address indexed from, uint256 amount)
RewardsWithdrawn
event RewardsWithdrawn(address indexed admin, uint256 amount)
Staked
event Staked(address indexed user, uint256 amount, uint256 indexed lockDuration, uint256 timestamp)
ToppedUp
event ToppedUp(address indexed user, uint256 addedAmount, uint256 indexed lockDuration, uint256 timestamp)
Unstaked
event Unstaked(address indexed user, uint256 amount, uint256 rewardsPaid, uint256 indexed lockDuration, uint256 timestamp)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a060405234801562000010575f80fd5b506040516200314438038062003144833981810160405281019062000036919062000692565b825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a1919062000750565b60405180910390fd5b620000bb81620001c460201b60201c565b506001808190555080518251146200010a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010190620007c9565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f5b8251811015620001b9575f62015180848381518110620001655762000164620007e9565b5b602002602001015162000179919062000843565b9050620001aa81848481518110620001965762000195620007e9565b5b60200260200101516200028560201b60201c565b50808060010191505062000140565b505050505062000a03565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8211620002ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c190620008db565b60405180910390fd5b5f81116200030f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003069062000949565b60405180910390fd5b60025f8381526020019081526020015f206001015f9054906101000a900460ff161562000373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036a90620009b7565b60405180910390fd5b60405180606001604052808281526020016001151581526020015f81525060025f8481526020019081526020015f205f820151815f01556020820151816001015f6101000a81548160ff02191690831515021790555060408201518160020155905050600382908060018154018082558091505060019003905f5260205f20015f9091909190915055817f901eb85ad066ced1d2fb2ae0a5a9e7a4e08a8183e432d4f3586c921023641aa9826040516200042e9190620009e8565b60405180910390a25050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000476826200044b565b9050919050565b5f62000489826200046a565b9050919050565b6200049b816200047d565b8114620004a6575f80fd5b50565b5f81519050620004b98162000490565b92915050565b620004ca816200046a565b8114620004d5575f80fd5b50565b5f81519050620004e881620004bf565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200053a82620004f2565b810181811067ffffffffffffffff821117156200055c576200055b62000502565b5b80604052505050565b5f620005706200043a565b90506200057e82826200052f565b919050565b5f67ffffffffffffffff821115620005a0576200059f62000502565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b620005c981620005b5565b8114620005d4575f80fd5b50565b5f81519050620005e781620005be565b92915050565b5f62000603620005fd8462000583565b62000565565b90508083825260208201905060208402830185811115620006295762000628620005b1565b5b835b81811015620006565780620006418882620005d7565b8452602084019350506020810190506200062b565b5050509392505050565b5f82601f830112620006775762000676620004ee565b5b815162000689848260208601620005ed565b91505092915050565b5f805f8060808587031215620006ad57620006ac62000443565b5b5f620006bc87828801620004a9565b9450506020620006cf87828801620004d8565b935050604085015167ffffffffffffffff811115620006f357620006f262000447565b5b620007018782880162000660565b925050606085015167ffffffffffffffff81111562000725576200072462000447565b5b620007338782880162000660565b91505092959194509250565b6200074a816200046a565b82525050565b5f602082019050620007655f8301846200073f565b92915050565b5f82825260208201905092915050565b7f4172726179206c656e677468206d69736d6174636800000000000000000000005f82015250565b5f620007b16015836200076b565b9150620007be826200077b565b602082019050919050565b5f6020820190508181035f830152620007e281620007a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200084f82620005b5565b91506200085c83620005b5565b92508282026200086c81620005b5565b9150828204841483151762000886576200088562000816565b5b5092915050565b7f4c6f636b3d3000000000000000000000000000000000000000000000000000005f82015250565b5f620008c36006836200076b565b9150620008d0826200088d565b602082019050919050565b5f6020820190508181035f830152620008f481620008b5565b9050919050565b7f4150593d300000000000000000000000000000000000000000000000000000005f82015250565b5f620009316005836200076b565b91506200093e82620008fb565b602082019050919050565b5f6020820190508181035f830152620009628162000923565b9050919050565b7f45786973747300000000000000000000000000000000000000000000000000005f82015250565b5f6200099f6006836200076b565b9150620009ac8262000969565b602082019050919050565b5f6020820190508181035f830152620009d08162000991565b9050919050565b620009e281620005b5565b82525050565b5f602082019050620009fd5f830184620009d7565b92915050565b6080516126f062000a545f395f81816105ab01528181610a6001528181610b7201528181610fe701528181611101015281816112fe01528181611461015281816115ae015261183c01526126f05ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80637b0472f0116100b65780639a24a6661161007a5780639a24a66614610338578063ac4afa3814610356578063cab64bcd14610388578063d5a8ef2f146103a6578063f2fde38b146103c2578063fc0c546a146103de57610140565b80637b0472f0146102a85780638435a318146102c45780638bdf67f2146102e05780638da5cb5b146102fc5780638f2093ce1461031a57610140565b8063387782671161010857806338778267146101be578063584b62a1146101dc5780636099ecb21461020e57806360d340e31461023e578063715018a61461026e57806379ee54f71461027857610140565b8063012ce501146101445780630962ef79146101605780630b83a7271461017c5780632e17de781461018657806336a79f00146101a2575b5f80fd5b61015e60048036038101906101599190611cd8565b6103fc565b005b61017a60048036038101906101759190611cd8565b610652565b005b610184610705565b005b6101a0600480360381019061019b9190611cd8565b610862565b005b6101bc60048036038101906101b79190611cd8565b610b06565b005b6101c6610c17565b6040516101d39190611dba565b60405180910390f35b6101f660048036038101906101f19190611e34565b610c6d565b60405161020593929190611ea3565b60405180910390f35b61022860048036038101906102239190611e34565b610cc5565b6040516102359190611ed8565b60405180910390f35b61025860048036038101906102539190611cd8565b610de2565b6040516102659190611ed8565b60405180910390f35b610276610e02565b005b610292600480360381019061028d9190611ef1565b610e15565b60405161029f9190611ed8565b60405180910390f35b6102c260048036038101906102bd9190611f1c565b610e6e565b005b6102de60048036038101906102d99190611f1c565b6111a6565b005b6102fa60048036038101906102f59190611cd8565b6112a4565b005b61030461139c565b6040516103119190611f69565b60405180910390f35b6103226113c3565b60405161032f9190611ed8565b60405180910390f35b610340611425565b60405161034d9190611ed8565b60405180910390f35b610370600480360381019061036b9190611cd8565b61142b565b60405161037f93929190611f9c565b60405180910390f35b61039061145d565b60405161039d9190611ed8565b60405180910390f35b6103c060048036038101906103bb9190611f1c565b611512565b005b6103dc60048036038101906103d79190611ef1565b611528565b005b6103e66115ac565b6040516103f3919061202c565b60405180910390f35b6104046115d0565b5f60025f8381526020019081526020015f209050806001015f9054906101000a900460ff16610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9061209f565b60405180910390fd5b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f2090505f815f015490505f8111610500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f790612107565b60405180910390fd5b5f6127106105dc836105129190612152565b61051c91906121c0565b90505f818361052b91906121f0565b905082856002015f82825461054091906121f0565b925050819055505f845f01819055505f8460010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f846001015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105ef33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116169092919063ffffffff16565b853373ffffffffffffffffffffffffffffffffffffffff167fde202002964f181ef89308d3fda15d7fa2b920bfcadb45c617d9abcb0a82d9d383854260405161063a93929190612223565b60405180910390a3505050505061064f611695565b50565b61065a6115d0565b5f610665338361169e565b90505f81116106a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a0906122a2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e32582426040516106f19291906122c0565b60405180910390a250610702611695565b50565b61070d6115d0565b5f805b6003805490508110156107c4575f60038281548110610732576107316122e7565b5b905f5260205f20015490505f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2090505f815f01540361079d5750506107b7565b6107a7338361169e565b846107b29190612314565b935050505b8080600101915050610710565b505f8111610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe906122a2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e325824260405161084f9291906122c0565b60405180910390a250610860611695565b565b61086a6115d0565b5f60025f8381526020019081526020015f209050806001015f9054906101000a900460ff166108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c59061209f565b60405180910390fd5b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f2090505f815f015490505f8111610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d90612107565b60405180910390fd5b83826001015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff166109939190612314565b4210156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90612391565b60405180910390fd5b5f6109e0338661169e565b905081846002015f8282546109f591906121f0565b925050819055505f835f01819055505f8360010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f836001015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610aa433837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116169092919063ffffffff16565b843373ffffffffffffffffffffffffffffffffffffffff167fdcfd2b4017d03f7e541021db793b2f9b31e4acdee005f789e52853c390e3e962848442604051610aef93929190612223565b60405180910390a350505050610b03611695565b50565b610b0e61188b565b610b166115d0565b5f610b1f61145d565b905080821115610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b906123f9565b60405180910390fd5b610bb6610b6f61139c565b837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116169092919063ffffffff16565b610bbe61139c565b73ffffffffffffffffffffffffffffffffffffffff167f8a43c4352486ec339f487f64af78ca5cbf06cd47833f073d3baf3a193e50316183604051610c039190611ed8565b60405180910390a250610c14611695565b50565b60606003805480602002602001604051908101604052809291908181526020018280548015610c6357602002820191905f5260205f20905b815481526020019060010190808311610c4f575b5050505050905090565b6004602052815f5260405f20602052805f5260405f205f9150915050805f015490806001015f9054906101000a900467ffffffffffffffff16908060010160089054906101000a900467ffffffffffffffff16905083565b5f8060025f8481526020019081526020015f209050806001015f9054906101000a900460ff16610cf8575f915050610ddc565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f2090505f815f015403610d5b575f92505050610ddc565b5f8160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1642610d8a91906121f0565b90505f8103610d9e575f9350505050610ddc565b6301e133806064610daf9190612152565b81845f0154845f0154610dc29190612152565b610dcc9190612152565b610dd691906121c0565b93505050505b92915050565b60038181548110610df1575f80fd5b905f5260205f20015f915090505481565b610e0a61188b565b610e135f611912565b565b5f805f90505b600380549050811015610e6857610e4e8360038381548110610e4057610e3f6122e7565b5b905f5260205f200154610cc5565b82610e599190612314565b91508080600101915050610e1b565b50919050565b610e766115d0565b5f8211610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90612461565b60405180910390fd5b5f60025f8381526020019081526020015f209050806001015f9054906101000a900460ff16610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061209f565b60405180910390fd5b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f2090505f815f0154111561108257610f80338461169e565b5083826002015f828254610f949190612314565b9250508190555083815f015f828254610fad9190612314565b92505081905550428160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061102c3330867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166119d3909392919063ffffffff16565b823373ffffffffffffffffffffffffffffffffffffffff167ff3edc1e93d0c36c5583529beaed1de757c7cc2524014b1b97cdee207395b4eb386426040516110759291906122c0565b60405180910390a3611198565b83826002015f8282546110959190612314565b9250508190555083815f018190555042816001015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550428160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506111463330867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166119d3909392919063ffffffff16565b823373ffffffffffffffffffffffffffffffffffffffff167fb4caaf29adda3eefee3ad552a8e85058589bf834c7466cae4ee58787f70589ed864260405161118f9291906122c0565b60405180910390a35b50506111a2611695565b5050565b6111ae61188b565b60025f8381526020019081526020015f206001015f9054906101000a900460ff1661120e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611205906124c9565b60405180910390fd5b5f8111611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612531565b60405180910390fd5b8060025f8481526020019081526020015f205f0181905550817fd255ccd95fa86304cfb933bc9d174ebc0acb5e0a28c9c1de52f6fc035c48c5b0826040516112989190611ed8565b60405180910390a25050565b6112ac61188b565b6112b46115d0565b5f81116112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90612461565b60405180910390fd5b6113433330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166119d3909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fb8b27d0db504fa5d914f1fd330347096e88d5ff94b6c612d32797e7c12a8f66f826040516113899190611ed8565b60405180910390a2611399611695565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f90505b6003805490508110156114215760025f600383815481106113ed576113ec6122e7565b5b905f5260205f20015481526020019081526020015f2060020154826114129190612314565b915080806001019150506113c9565b5090565b6105dc81565b6002602052805f5260405f205f91509050805f015490806001015f9054906101000a900460ff16908060020154905083565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114b89190611f69565b602060405180830381865afa1580156114d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f79190612563565b90506115016113c3565b8161150c91906121f0565b91505090565b61151a61188b565b6115248282611a55565b5050565b61153061188b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a0575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016115979190611f69565b60405180910390fd5b6115a981611912565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026001540361160c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b611690838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161164992919061258e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bff565b505050565b60018081905550565b5f8060025f8481526020019081526020015f209050806001015f9054906101000a900460ff16611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa9061209f565b60405180910390fd5b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f2090505f815f015403611766575f92505050611885565b5f6117718686610cc5565b90505f81036117b057428260010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f9350505050611885565b5f6117b961145d565b90505f81036117f957428360010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f945050505050611885565b8082116118065781611808565b805b9450428360010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061188087867f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116169092919063ffffffff16565b505050505b92915050565b611893611c9a565b73ffffffffffffffffffffffffffffffffffffffff166118b161139c565b73ffffffffffffffffffffffffffffffffffffffff1614611910576118d4611c9a565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016119079190611f69565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a4f848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611a08939291906125b5565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bff565b50505050565b5f8211611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90612634565b60405180910390fd5b5f8111611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090612531565b60405180910390fd5b60025f8381526020019081526020015f206001015f9054906101000a900460ff1615611b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b319061269c565b60405180910390fd5b60405180606001604052808281526020016001151581526020015f81525060025f8481526020019081526020015f205f820151815f01556020820151816001015f6101000a81548160ff02191690831515021790555060408201518160020155905050600382908060018154018082558091505060019003905f5260205f20015f9091909190915055817f901eb85ad066ced1d2fb2ae0a5a9e7a4e08a8183e432d4f3586c921023641aa982604051611bf39190611ed8565b60405180910390a25050565b5f8060205f8451602086015f885af180611c1e576040513d5f823e3d81fd5b3d92505f519150505f8214611c37576001811415611c52565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15611c9457836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611c8b9190611f69565b60405180910390fd5b50505050565b5f33905090565b5f80fd5b5f819050919050565b611cb781611ca5565b8114611cc1575f80fd5b50565b5f81359050611cd281611cae565b92915050565b5f60208284031215611ced57611cec611ca1565b5b5f611cfa84828501611cc4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611d3581611ca5565b82525050565b5f611d468383611d2c565b60208301905092915050565b5f602082019050919050565b5f611d6882611d03565b611d728185611d0d565b9350611d7d83611d1d565b805f5b83811015611dad578151611d948882611d3b565b9750611d9f83611d52565b925050600181019050611d80565b5085935050505092915050565b5f6020820190508181035f830152611dd28184611d5e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e0382611dda565b9050919050565b611e1381611df9565b8114611e1d575f80fd5b50565b5f81359050611e2e81611e0a565b92915050565b5f8060408385031215611e4a57611e49611ca1565b5b5f611e5785828601611e20565b9250506020611e6885828601611cc4565b9150509250929050565b611e7b81611ca5565b82525050565b5f67ffffffffffffffff82169050919050565b611e9d81611e81565b82525050565b5f606082019050611eb65f830186611e72565b611ec36020830185611e94565b611ed06040830184611e94565b949350505050565b5f602082019050611eeb5f830184611e72565b92915050565b5f60208284031215611f0657611f05611ca1565b5b5f611f1384828501611e20565b91505092915050565b5f8060408385031215611f3257611f31611ca1565b5b5f611f3f85828601611cc4565b9250506020611f5085828601611cc4565b9150509250929050565b611f6381611df9565b82525050565b5f602082019050611f7c5f830184611f5a565b92915050565b5f8115159050919050565b611f9681611f82565b82525050565b5f606082019050611faf5f830186611e72565b611fbc6020830185611f8d565b611fc96040830184611e72565b949350505050565b5f819050919050565b5f611ff4611fef611fea84611dda565b611fd1565b611dda565b9050919050565b5f61200582611fda565b9050919050565b5f61201682611ffb565b9050919050565b6120268161200c565b82525050565b5f60208201905061203f5f83018461201d565b92915050565b5f82825260208201905092915050565b7f496e76616c696420706f6f6c00000000000000000000000000000000000000005f82015250565b5f612089600c83612045565b915061209482612055565b602082019050919050565b5f6020820190508181035f8301526120b68161207d565b9050919050565b7f4e6f7468696e67207374616b65640000000000000000000000000000000000005f82015250565b5f6120f1600e83612045565b91506120fc826120bd565b602082019050919050565b5f6020820190508181035f83015261211e816120e5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61215c82611ca5565b915061216783611ca5565b925082820261217581611ca5565b9150828204841483151761218c5761218b612125565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6121ca82611ca5565b91506121d583611ca5565b9250826121e5576121e4612193565b5b828204905092915050565b5f6121fa82611ca5565b915061220583611ca5565b925082820390508181111561221d5761221c612125565b5b92915050565b5f6060820190506122365f830186611e72565b6122436020830185611e72565b6122506040830184611e72565b949350505050565b7f4e6f2072657761726473000000000000000000000000000000000000000000005f82015250565b5f61228c600a83612045565b915061229782612258565b602082019050919050565b5f6020820190508181035f8301526122b981612280565b9050919050565b5f6040820190506122d35f830185611e72565b6122e06020830184611e72565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61231e82611ca5565b915061232983611ca5565b925082820190508082111561234157612340612125565b5b92915050565b7f4c6f636b656400000000000000000000000000000000000000000000000000005f82015250565b5f61237b600683612045565b915061238682612347565b602082019050919050565b5f6020820190508181035f8301526123a88161236f565b9050919050565b7f416d6f756e74206578636565647320617661696c61626c6520726577617264735f82015250565b5f6123e3602083612045565b91506123ee826123af565b602082019050919050565b5f6020820190508181035f830152612410816123d7565b9050919050565b7f416d6f756e743d300000000000000000000000000000000000000000000000005f82015250565b5f61244b600883612045565b915061245682612417565b602082019050919050565b5f6020820190508181035f8301526124788161243f565b9050919050565b7f506f6f6c206d697373696e6700000000000000000000000000000000000000005f82015250565b5f6124b3600c83612045565b91506124be8261247f565b602082019050919050565b5f6020820190508181035f8301526124e0816124a7565b9050919050565b7f4150593d300000000000000000000000000000000000000000000000000000005f82015250565b5f61251b600583612045565b9150612526826124e7565b602082019050919050565b5f6020820190508181035f8301526125488161250f565b9050919050565b5f8151905061255d81611cae565b92915050565b5f6020828403121561257857612577611ca1565b5b5f6125858482850161254f565b91505092915050565b5f6040820190506125a15f830185611f5a565b6125ae6020830184611e72565b9392505050565b5f6060820190506125c85f830186611f5a565b6125d56020830185611f5a565b6125e26040830184611e72565b949350505050565b7f4c6f636b3d3000000000000000000000000000000000000000000000000000005f82015250565b5f61261e600683612045565b9150612629826125ea565b602082019050919050565b5f6020820190508181035f83015261264b81612612565b9050919050565b7f45786973747300000000000000000000000000000000000000000000000000005f82015250565b5f612686600683612045565b915061269182612652565b602082019050919050565b5f6020820190508181035f8301526126b38161267a565b905091905056fea2646970667358221220d1be72f73380b2a6c2375d2a619b0e774d3fba51defe3b235b0229bcf007a43d64736f6c63430008170033000000000000000000000000ac2c0505b953d8679230b564c1bf1836673e311a00000000000000000000000017d04da70f6aa6e94185b5ab274712ec05c1ca000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000fa000000000000000000000000000000000000000000000000000000000000015e00000000000000000000000000000000000000000000000000000000000001f4