713 txs
704 calls
constructor
constructor(address admin, address stakeAsset)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
rewardAsset
viewfunction rewardAsset() view returns (address)
rewardSource
viewfunction rewardSource() view returns (address)
rewardsPerAsset
viewfunction rewardsPerAsset() view returns (uint128 accumulated, uint128 lastUpdated)
stakeAsset
viewfunction stakeAsset() view returns (address)
STAKING_ADMIN_ROLE
viewfunction STAKING_ADMIN_ROLE() view returns (bytes32)
stakingConfig
viewfunction stakingConfig(bytes32 configHash) view returns (tuple)
stakingPositions
viewfunction stakingPositions(address user) view returns (tuple[])
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
unlockTime
viewfunction unlockTime(address user, uint256 positionIndex) view returns (uint256)
createStakingConfig
nonpayablefunction createStakingConfig(uint32 lockPeriod, uint24 scoreMultiple) returns (bytes32 configHash)
deleteStakingConfig
nonpayablefunction deleteStakingConfig(bytes32 configHash)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
stake
nonpayablefunction stake(uint256 amount, bytes32 configHash) returns (uint256 positionIndex)
unstake
nonpayablefunction unstake(uint256 positionIndex)
unstakeAll
nonpayablefunction unstakeAll()
updateStakingConfig
nonpayablefunction updateStakingConfig(bytes32 configHash, uint32 lockPeriod, uint24 scoreMultiple)
events
AccountRewardsUpdated
event AccountRewardsUpdated(address indexed account, uint128 accumulated, uint128 checkpoint)
Claimed
event Claimed(address indexed user, uint256 amount, address token)
RewardsPerAssetUpdated
event RewardsPerAssetUpdated(address indexed asset, uint128 accumulated)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Staked
event Staked(address indexed user, uint256 amount, bytes32 configHash, uint96 indexed extraData)
StakingConfigCreated
event StakingConfigCreated(bytes32 indexed configHash, uint32 lockPeriod, uint24 scoreMultiple)
StakingConfigDeleted
event StakingConfigDeleted(bytes32 indexed configHash)
StakingConfigUpdated
event StakingConfigUpdated(bytes32 indexed configHash, uint32 lockPeriod, uint24 scoreMultiple)
Unstaked
event Unstaked(address indexed user, uint256 amount, uint256 timestamp, bytes32 configHash, uint96 indexed extraData)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ActivePositionsExist
error ActivePositionsExist()
AllPositionsStillLocked
error AllPositionsStillLocked()
CannotStakeZero
error CannotStakeZero()
ConfigExists
error ConfigExists()
ConfigInUse
error ConfigInUse()
ConfigNotFound
error ConfigNotFound()
InvalidLockPeriod
error InvalidLockPeriod()
InvalidPosition
error InvalidPosition()
InvalidRewardMultiple
error InvalidRewardMultiple()
InvalidStakeAsset
error InvalidStakeAsset()
NothingToClaim
error NothingToClaim()
PositionStillLocked
error PositionStillLocked()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TransferFailed
error TransferFailed()
creation bytecode
0x60c060405234801561000f575f80fd5b506040516129aa3803806129aa83398101604081905261002e91610156565b600580546001600160a01b03191690555f60808190526001600160a01b03821660a05261005b908361008e565b506100867f24791c44c040514a5d2580696fc45e7d3cb6c9fa65bf3db2e4755362d6c155b58361008e565b505050610187565b5f8281526006602090815260408083206001600160a01b038516845290915281205460ff16610132575f8381526006602090815260408083206001600160a01b03861684529091529020805460ff191660011790556100ea3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610135565b505f5b92915050565b80516001600160a01b0381168114610151575f80fd5b919050565b5f8060408385031215610167575f80fd5b6101708361013b565b915061017e6020840161013b565b90509250929050565b60805160a0516127d16101d95f395f818161031b0152818161179901526117da01525f81816101d4015281816111fa015281816112a40152818161136401528181611f73015261229101526127d15ff3fe608060405234801561000f575f80fd5b506004361061016e575f3560e01c80634ce306ae116100d257806383c592cf11610088578063a217fddf11610063578063a217fddf1461042f578063d547741f14610436578063f5c61f3c14610449575f80fd5b806383c592cf146103b757806391d14854146103ca5780639cfbc0021461040f575f80fd5b806380cd916d116100b857806380cd916d146103165780638146a7b51461033d5780638148580d14610397575f80fd5b80634ce306ae146102a6578063789f9039146102b9575f80fd5b8063250f2b54116101275780632f2ff15d1161010d5780632f2ff15d1461027857806335322f371461028b57806336568abe14610293575f80fd5b8063250f2b54146102505780632e17de7814610263575f80fd5b80630ac6702a116101575780630ac6702a146101cf57806315aef88a1461021b578063248a9ca31461022e575f80fd5b806301ffc9a71461017257806304f67aa11461019a575b5f80fd5b61018561018036600461240b565b61045c565b60405190151581526020015b60405180910390f35b6101c17f24791c44c040514a5d2580696fc45e7d3cb6c9fa65bf3db2e4755362d6c155b581565b604051908152602001610191565b6101f67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101c1610229366004612472565b6104f4565b6101c161023c36600461249a565b5f9081526006602052604090206001015490565b6101c161025e3660046124d6565b610506565b61027661027136600461249a565b610545565b005b610276610286366004612507565b610552565b61027661057c565b6102766102a1366004612507565b610587565b6102766102b436600461249a565b6105e5565b6003546102ed906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610191565b6101f67f000000000000000000000000000000000000000000000000000000000000000081565b61035061034b36600461249a565b61061c565b60408051825163ffffffff16815260208084015162ffffff16908201529181015177ffffffffffffffffffffffffffffffffffffffffffffffff1690820152606001610191565b6103aa6103a5366004612528565b6106af565b6040516101919190612541565b6101c16103c53660046125ca565b6106ba565b6101856103d8366004612507565b5f91825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6005546101f69073ffffffffffffffffffffffffffffffffffffffff1681565b6101c15f81565b610276610444366004612507565b6106c6565b6102766104573660046125ea565b6106ea565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806104ee57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f6104ff838361071f565b9392505050565b5f7f24791c44c040514a5d2580696fc45e7d3cb6c9fa65bf3db2e4755362d6c155b5610531816107fe565b61053b8484610808565b91505b5092915050565b61054f33826109c2565b50565b5f8281526006602052604090206001015461056c816107fe565b6105768383610b0c565b50505050565b61058533610c09565b565b73ffffffffffffffffffffffffffffffffffffffff811633146105d6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e08282610cdc565b505050565b7f24791c44c040514a5d2580696fc45e7d3cb6c9fa65bf3db2e4755362d6c155b561060f816107fe565b61061882610d99565b5050565b60408051606080820183525f808352602080840182905283850182905284518084018652828152808201839052850182905285825281815290849020845192830185525463ffffffff81168352640100000000810462ffffff1691830191909152670100000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1692810192909252906104ee565b60606104ee82610e6b565b5f6104ff338484610f4c565b5f828152600660205260409020600101546106e0816107fe565b6105768383610cdc565b7f24791c44c040514a5d2580696fc45e7d3cb6c9fa65bf3db2e4755362d6c155b5610714816107fe565b610576848484610f61565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020526040812054821061077c576040517fce7e065e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054849081106107b2576107b2612623565b5f91825260208083206002909202909101805483529082905260409091208054600183015492935090916107ef9163ffffffff908116911661267d565b63ffffffff1695945050505050565b61054f813361105b565b5f8162ffffff165f03610847576040517f94f43c3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805163ffffffff8516602082015262ffffff841691810191909152606001604051602081830303815290604052805190602001209050610888816110e7565b156108bf576040517fa64c4b6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608101825263ffffffff85811680835262ffffff86811660208086018281525f8789018181528a825281845290899020975188549251915177ffffffffffffffffffffffffffffffffffffffffffffffff16670100000000000000027fff000000000000000000000000000000000000000000000000ffffffffffffff92909616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000090931697169690961717949094169190911790935583519081529081019190915282917f1f897f5dd756ae4da0b7a2daa17175941aed9bd0abe6235b355060179f151eba91015b60405180910390a292915050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260409020548110610a1f576040517fce7e065e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f908152600160205260408120805483908110610a5557610a55612623565b905f5260205f20906002020190505f610a6e848461071f565b905080421015610aaa576040517f7a63085c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff1615610ad157610ad18461111a565b600182015464010000000090046fffffffffffffffffffffffffffffffff16610afa85856113bc565b610b05308683611762565b5050505050565b5f82815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610c02575f83815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610ba03390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016104ee565b505f6104ee565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260016020526040812080549091819003610c6a576040517fce7e065e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8354811015610ca057610c80858261071f565b9150428211610c9857610c9385826109c2565b610c6d565b600101610c6d565b508254829003610576576040517fc16c8fb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610c02575f83815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016104ee565b610da281611802565b5f8181526020819052604090208054670100000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1615610e0d576040517f0402b2ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526020819052604080822080547fff000000000000000000000000000000000000000000000000000000000000001690555183917fa2c09b52625e558f147f77dd356162db885c6372891504e73e8be03ef3ab93f791a25050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f41575f84815260209081902060408051608081018252600286029092018054835260019081015463ffffffff81168486015264010000000081046fffffffffffffffffffffffffffffffff1692840192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1660608301529083529092019101610eaf565b505050509050919050565b5f610f5984848484611859565b949350505050565b610f6a83611802565b5f8381526020819052604090208054670100000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff1615610fd5576040517f9b4ead1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805463ffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000909116811764010000000062ffffff851690810291909117835560408051928352602083019190915285917feb0410a256ed770b5a11511cc63680b9b021ae166f0ea7f3199f61f7fe85333e910160405180910390a250505050565b5f82815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610618576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5f8181526020819052604081208054640100000000900462ffffff16820361111157505f92915050565b50600192915050565b5f6111248261187d565b516fffffffffffffffffffffffffffffffff16905080156106185761114881611a6e565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600260205260408120805490919061118e9084906fffffffffffffffffffffffffffffffff1661269a565b82546fffffffffffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055506005546040517f1916558700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906319165587906024015f604051808303815f87803b158015611244575f80fd5b505af1158015611256573d5f803e3d5ffd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303815f875af11580156112ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131091906126c3565b611346576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805182815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301528416917f7e6632ca16a0ac6cf28448500b1a17d96c8b8163ad4c4a9b44ef5386cc02779e910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526001602090815260408083206002909252822081549192909183908590811061140257611402612623565b5f91825260208083206001600290930201918201548254845290839052604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77ffffffffffffffffffffffffffffffffffffffffffffffff67010000000000000080840482169290920116027fff000000000000000000000000000000000000000000000000ffffffffffffff909116179055825484528320549193506fffffffffffffffffffffffffffffffff640100000000918290041692916114d49162ffffff910416836126e2565b84549091508190859060109061151190849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1661269a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508060045f82825461155891906126f9565b9091555050600183015483546040805185815263ffffffff8416602082015290810191909152740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff8916907f0f2cb5fe61b517242b07d2e2e23637c8ca16443a54b51bf11b83c3da2c83762b9060600160405180910390a3845485906115fb906001906126f9565b8154811061160b5761160b612623565b905f5260205f20906002020185878154811061162957611629612623565b5f91825260209091208254600290920201908155600191820180549290910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000811663ffffffff909416938417825582546fffffffffffffffffffffffffffffffff6401000000009182900416027fffffffffffffffffffffffff00000000000000000000000000000000000000009091169093179290921780835590546bffffffffffffffffffffffff7401000000000000000000000000000000000000000091829004160273ffffffffffffffffffffffffffffffffffffffff909116179055845485908061171e5761171e61270c565b5f8281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020181815560010155905550505050505050565b3073ffffffffffffffffffffffffffffffffffffffff8416036117c0576105e073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383611ac7565b6105e073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016848484611b48565b5f8181526020819052604081208054909164010000000090910462ffffff169003610618576040517f9453734600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6118638561187d565b5061187085858585611b8e565b9050610f59853086611762565b604080516060810182525f80825260208201819052918101829052906118a1611e89565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260026020908152604091829020825160608101845281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091048116828501526001909201548216938101849052918401519394509092169003611929579392505050565b61197d61197882602001516fffffffffffffffffffffffffffffffff1683604001516fffffffffffffffffffffffffffffffff16855f01516fffffffffffffffffffffffffffffffff16611fbc565b611a6e565b8151829061198c908390612739565b6fffffffffffffffffffffffffffffffff90811690915283518116604084810191825273ffffffffffffffffffffffffffffffffffffffff88165f81815260026020908152908390208751828901518716700100000000000000000000000000000000029087169081178255945160019091018054919096167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116811790955582519384528301939093529192507f35eff10a433f1efa0c44fa69871b597343ac0880ba08e25c68a082ab8d939442910160405180910390a29392505050565b5f6fffffffffffffffffffffffffffffffff821115611ac3576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260806004820152602481018390526044016110de565b5090565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526105e091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611fe4565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526105769186918216906323b872dd90608401611b01565b5f611b9883611802565b835f03611bd1576040517f6a76ff9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602090815260408083206002835292819020815160808101909252868252918391908101611c1b42612083565b63ffffffff168152602001611c2f89611a6e565b6fffffffffffffffffffffffffffffffff90811682526bffffffffffffffffffffffff8089166020938401528454600181810187555f9687529584902085516002909202019081559284015192850180546040860151606090960151909216740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff95909316640100000000027fffffffffffffffffffffffff000000000000000000000000000000000000000090921663ffffffff9094169390931717929092169190911790558254611d0c91906126f9565b5f86815260208190526040812080547fff000000000000000000000000000000000000000000000000ffffffffffffff81166701000000000000009182900477ffffffffffffffffffffffffffffffffffffffffffffffff90811660010116909102179081905591945090611d8e90640100000000900462ffffff16886126e2565b90508060045f828254611da19190612762565b9091555050815481908390601090611de090849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612739565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846bffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f70c40da6189e6b935c97e1b55a620bdb6763496372124b975ae60b4b26307d088989604051611e76929190918252602082015260400190565b60405180910390a3505050949350505050565b604080518082019091525f8082526020820152604080518082019091526003546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201525f611ee4826120cc565b905080602001516fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff1603611f1f5792915050565b80516020808301516fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002921691821760035560405191825273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016917fab86ab8e512baae7e83651f7349e28f4860e4d51c5944e13ac9605e63d5bb57d91016109b4565b5f670de0b6b3a7640000611fd084846126f9565b611fda90866126e2565b610f599190612775565b5f8060205f8451602086015f885af180612003576040513d5f823e3d81fd5b50505f513d9150811561201a578060011415612034565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610576576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016110de565b5f63ffffffff821115611ac3576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260206004820152602481018390526044016110de565b604080518082019091525f808252602082015260055473ffffffffffffffffffffffffffffffffffffffff16612100575090565b60408051808201825283516fffffffffffffffffffffffffffffffff9081168252602080860151909116818301526004805460055485517fbe9a655500000000000000000000000000000000000000000000000000000000815295519495919473ffffffffffffffffffffffffffffffffffffffff909116935f93859363be9a655593818301939290918290030181865afa1580156121a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c591906127ad565b9050804210156121d9575091949350505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612223573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224791906127ad565b90505f61225483836126f9565b6040517f810ec23b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015267ffffffffffffffff8516602483015286169063810ec23b90604401602060405180830381865afa1580156122ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231291906127ad565b61231c9190612775565b90505f82421061232c578261232e565b425b90505f89602001516fffffffffffffffffffffffffffffffff168261235391906126f9565b9050805f0361236a57509598975050505050505050565b61237382611a6e565b6fffffffffffffffffffffffffffffffff1660208901525f8790036123a057509598975050505050505050565b6123e987846123b784670de0b6b3a76400006126e2565b6123c191906126e2565b6123cb9190612775565b8b5161197891906fffffffffffffffffffffffffffffffff16612762565b6fffffffffffffffffffffffffffffffff168852509598975050505050505050565b5f6020828403121561241b575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104ff575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461246d575f80fd5b919050565b5f8060408385031215612483575f80fd5b61248c8361244a565b946020939093013593505050565b5f602082840312156124aa575f80fd5b5035919050565b803563ffffffff8116811461246d575f80fd5b803562ffffff8116811461246d575f80fd5b5f80604083850312156124e7575f80fd5b6124f0836124b1565b91506124fe602084016124c4565b90509250929050565b5f8060408385031215612518575f80fd5b823591506124fe6020840161244a565b5f60208284031215612538575f80fd5b6104ff8261244a565b602080825282518282018190525f919060409081850190868401855b828110156125bd578151805185528681015163ffffffff1687860152858101516fffffffffffffffffffffffffffffffff16868601526060908101516bffffffffffffffffffffffff16908501526080909301929085019060010161255d565b5091979650505050505050565b5f80604083850312156125db575f80fd5b50508035926020909101359150565b5f805f606084860312156125fc575f80fd5b8335925061260c602085016124b1565b915061261a604085016124c4565b90509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff81811683821601908082111561053e5761053e612650565b6fffffffffffffffffffffffffffffffff82811682821603908082111561053e5761053e612650565b5f602082840312156126d3575f80fd5b815180151581146104ff575f80fd5b80820281158282048414176104ee576104ee612650565b818103818111156104ee576104ee612650565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b6fffffffffffffffffffffffffffffffff81811683821601908082111561053e5761053e612650565b808201808211156104ee576104ee612650565b5f826127a8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f602082840312156127bd575f80fd5b505191905056fea164736f6c6343000819000a00000000000000000000000044223e94f04a47642c75052e66a0080b8a418ba200000000000000000000000084a9aae8fcc085dbe11524f570716d89b772f430