0 txs
31 calls
constructor
constructor()
functions
asset
viewfunction asset() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAccountingValidityPeriod
viewfunction getAccountingValidityPeriod() view returns (uint64)
getCooldownPeriod
viewfunction getCooldownPeriod() view returns (uint64)
getLastUpdatedTimestamp
viewfunction getLastUpdatedTimestamp() view returns (uint64)
getMaxAccountingChangeThreshold
viewfunction getMaxAccountingChangeThreshold() view returns (uint64)
getMultiSig
viewfunction getMultiSig() view returns (address)
getNextAccountingNonce
viewfunction getNextAccountingNonce() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getVault
viewfunction getVault() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isOperator
viewfunction isOperator(address account) view returns (bool)
maxAllocation
purefunction maxAllocation() pure returns (uint256)
maxWithdraw
viewfunction maxWithdraw() view returns (uint256)
paused
viewfunction paused() view returns (bool)
strategyType
purefunction strategyType() pure returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalAllocatedValue
viewfunction totalAllocatedValue() view returns (uint256)
adjustTotalAssets
nonpayablefunction adjustTotalAssets(int256 diff, uint256 accountingNonce_)
allocateFunds
nonpayablefunction allocateFunds(bytes data) returns (uint256)
deallocateFunds
nonpayablefunction deallocateFunds(bytes data) returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin, address vault_, address multiSig_, uint64 maxAccountingChangeThreshold_, uint64 accountingValidityPeriod_, uint64 cooldownPeriod_)
initialize
nonpayablefunction initialize(address admin, address vault_)
onWithdraw
nonpayablefunction onWithdraw(uint256 assets) returns (uint256)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
rescueToken
nonpayablefunction rescueToken(address token, uint256 amount)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAccountingValidityPeriod
nonpayablefunction setAccountingValidityPeriod(uint64 accountingValidityPeriod_)
setCooldownPeriod
nonpayablefunction setCooldownPeriod(uint64 cooldownPeriod_)
setMaxAccountingChangeThreshold
nonpayablefunction setMaxAccountingChangeThreshold(uint64 maxAccountingChangeThreshold_)
setMaxWithdraw
nonpayablefunction setMaxWithdraw(uint256 maxWithdraw_)
setMultiSig
nonpayablefunction setMultiSig(address multiSig_)
unpause
nonpayablefunction unpause()
unpauseAndAdjustTotalAssets
nonpayablefunction unpauseAndAdjustTotalAssets(int256 diff)
events
AccountingChangeTooLarge
event AccountingChangeTooLarge(uint256 accountingNonce, int256 diff, uint256 oldAccounting, uint64 maxAccountingChangeThreshold)
AdjustTotalAssets
event AdjustTotalAssets(uint256 accountingNonce, uint256 totalAssets, int256 diff)
AllocateFunds
event AllocateFunds(uint256 amount)
AssetsForwarded
event AssetsForwarded(address indexed multiSig, address asset, uint256 amount)
AssetsRetrieved
event AssetsRetrieved(address indexed multiSig, address asset, uint256 amount)
CooldownPeriodNotPassed
event CooldownPeriodNotPassed(uint256 accountingNonce, uint256 currentTimestamp, uint256 coolDownTimestamp)
DeallocateFunds
event DeallocateFunds(uint256 amount)
Initialized
event Initialized(uint64 version)
MaxAccountingChangeThresholdSet
event MaxAccountingChangeThresholdSet(uint64 oldMaxAccountingChangeThreshold, uint64 maxAccountingChangeThreshold)
MaxWithdrawUpdated
event MaxWithdrawUpdated(uint256 oldMaxWithdraw, uint256 newMaxWithdraw)
MultiSigSet
event MultiSigSet(address indexed multiSig, address indexed newMultiSig)
Paused
event Paused(address account)
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)
SetAccountingValidityPeriod
event SetAccountingValidityPeriod(uint64 oldAccountingValidityPeriod, uint64 accountingValidityPeriod)
SetCooldownPeriod
event SetCooldownPeriod(uint64 oldCooldownPeriod, uint64 cooldownPeriod)
StrategyWithdraw
event StrategyWithdraw(uint256 amount)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AccountingValidityPeriodExpired
error AccountingValidityPeriodExpired()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InsufficientAllocatedAmount
error InsufficientAllocatedAmount()
InsufficientBalance
error InsufficientBalance()
InsufficientUnderlyingBalance
error InsufficientUnderlyingBalance()
InvalidAccountingNonce
error InvalidAccountingNonce(uint256 provided, uint256 expected)
InvalidAccountingValidityPeriod
error InvalidAccountingValidityPeriod()
InvalidAsset
error InvalidAsset()
InvalidCooldownPeriod
error InvalidCooldownPeriod()
InvalidInitialization
error InvalidInitialization()
InvalidMaxAccountingChangeThreshold
error InvalidMaxAccountingChangeThreshold()
InvalidMultiSigAddress
error InvalidMultiSigAddress()
MaxWithdrawAmountExceeded
error MaxWithdrawAmountExceeded()
NotAdminOrOperator
error NotAdminOrOperator()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnauthorizedVault
error UnauthorizedVault()
ZeroAdminAddress
error ZeroAdminAddress()
ZeroVaultAddress
error ZeroVaultAddress()
creation bytecode
0x6080604052348015600e575f5ffd5b506015601f565b601b601f565b60cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615606e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460cc5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61235b806100dc5f395ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c806371c66b2f1161011f5780639b3ba79f116100a9578063c3fa49ed11610079578063c3fa49ed146104a8578063cd53cfc0146104bb578063d547741f146104ce578063da1dded2146104e1578063dcd9bb42146104f4575f5ffd5b80639b3ba79f1461048a578063a217fddf14610491578063a626d2c014610498578063ac7a1b5b146104a0575f5ffd5b80638456cb59116100ef5780638456cb591461042c5780638b9a95f0146104345780638d928af8146104475780638f5d2a471461046457806391d1485414610477575f5ffd5b806371c66b2f146103de578063720f1ecf146103f15780637defd5b0146103f957806382ccd3301461041d575f5ffd5b80633f4ba83a116101a0578063571058c911610170578063571058c9146103605780635a6f0974146103735780635c975abb1461039757806366e992e5146103ae5780636d70f7ae146103cb575f5ffd5b80633f4ba83a1461032a578063485cc955146103325780634b6d39f514610345578063538a018f14610358575f5ffd5b80632e07ebef116101e65780632e07ebef146102885780632f2ff15d146102c057806333f3d628146102d357806336568abe146102e657806338d52e0f146102f9575f5ffd5b806301ffc9a7146102175780630abe7cf21461023f578063248a9ca314610260578063284d30ef14610273575b5f5ffd5b61022a610225366004611e9c565b610507565b60405190151581526020015b60405180910390f35b61025261024d366004611eca565b61053d565b604051908152602001610236565b61025261026e366004611f36565b610624565b610286610281366004611f61565b610644565b005b5f5160206123065f395f51905f5254600160c01b90046001600160401b03165b6040516001600160401b039091168152602001610236565b6102866102ce366004611f7c565b6106ef565b6102866102e1366004611faa565b610711565b6102866102f4366004611f7c565b6107f4565b5f5160206122065f395f51905f52546001600160a01b03165b6040516001600160a01b039091168152602001610236565b61028661082c565b610286610340366004611fd4565b61084e565b610252610353366004611f36565b61095c565b610252610ab0565b61028661036e366004612000565b610ac1565b5f5160206123065f395f51905f5254600160801b90046001600160401b03166102a8565b5f5160206122c65f395f51905f525460ff1661022a565b5f5160206121e65f395f51905f52546001600160a01b0316610312565b61022a6103d9366004611f61565b610b63565b6102866103ec366004611f36565b610b7b565b610252610ba3565b5f5160206123065f395f51905f5254600160401b90046001600160401b03166102a8565b60016040516102369190612020565b610286610bac565b61028661044236600461205c565b610bcb565b5f5160206122665f395f51905f52546001600160a01b0316610312565b610252610472366004611eca565b610beb565b61022a610485366004611f7c565b610cd9565b5f19610252565b6102525f81565b6102a8610d0f565b610252610d2e565b6102866104b6366004612075565b610d66565b6102866104c936600461205c565b610fa7565b6102866104dc366004611f7c565b610fc7565b6102866104ef36600461205c565b610fe3565b610286610502366004611f36565b611003565b5f6001600160e01b03198216637965db0b60e01b148061053757506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f5160206122665f395f51905f52545f905f5160206122065f395f51905f52906001600160a01b031633146105855760405163c732d64360e01b815260040160405180910390fd5b61058d61108e565b83355f8190036105a0575f92505061061d565b5f6105ab86866110c0565b5f5160206122665f395f51905f52545f5160206122065f395f51905f528054929350916105e5916001600160a01b039182169116846110d4565b6040518281527f1faf3d9c618bed77212a3240e0e9b020166ff88aef2f46f33d02aa0e96d8d7549060200160405180910390a1509250505b5092915050565b5f9081525f5160206122a65f395f51905f52602052604090206001015490565b5f5160206122e65f395f51905f5261065b81611133565b6001600160a01b0382166106825760405163a757747360e01b815260040160405180910390fd5b5f5160206121e65f395f51905f5280546040516001600160a01b038581169216907f6167377f50136c6b8f3f82fb3f98e74367ffc53466a2a5d971379880b22b299a905f90a380546001600160a01b0319166001600160a01b03939093169290921790915550565b905090565b6106f882610624565b61070181611133565b61070b838361113d565b50505050565b5f5160206122e65f395f51905f5261072881611133565b5f5160206122065f395f51905f5280546001600160a01b039081169085160361076457604051636448d6e960e11b815260040160405180910390fd5b5f831561077157836107d7565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa1580156107b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d791906120eb565b90506107ed6001600160a01b03861633836110d4565b5050505050565b6001600160a01b038116331461081d5760405163334bd91960e11b815260040160405180910390fd5b61082782826111de565b505050565b5f5160206122e65f395f51905f5261084381611133565b61084b611257565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108925750825b90505f826001600160401b031660011480156108ad5750303b155b9050811580156108bb575080155b156108d95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561090357845460ff60401b1916600160401b1785555b61090d87876112b6565b831561095357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f5160206122665f395f51905f52545f905f5160206122065f395f51905f52906001600160a01b031633146109a45760405163c732d64360e01b815260040160405180910390fd5b6109ac61108e565b5f306001600160a01b031663ac7a1b5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0d91906120eb565b905080841115610a305760405163f4b30e3d60e01b815260040160405180910390fd5b5f610a3a856114c5565b5f5160206122665f395f51905f52545f5160206122065f395f51905f52805492935091610a74916001600160a01b039182169116846110d4565b6040518281527f88ca0f9ed7d03f5fa5d342b501a9c986b7f57eb2eec3e27f506581df69fa6eba9060200160405180910390a150949350505050565b5f610ab961108e565b6106ea6114cf565b610ac961108e565b610ae05f5160206122e65f395f51905f5233610cd9565b158015610b015750610aff5f5160206122865f395f51905f5233610cd9565b155b15610b1f57604051632f29343560e21b815260040160405180910390fd5b5f5160206122265f395f51905f52545f5160206121e65f395f51905f5290610b4a90849084906114eb565b610b5657610827611569565b610827836115b1565b5050565b5f6105375f5160206122865f395f51905f5283610cd9565b5f5160206122e65f395f51905f52610b9281611133565b610b9a611257565b610b5f826115b1565b5f6106ea611686565b5f5160206122e65f395f51905f52610bc381611133565b61084b611569565b5f5160206122e65f395f51905f52610be281611133565b610b5f826116a2565b5f5160206122665f395f51905f52545f905f5160206122065f395f51905f52906001600160a01b03163314610c335760405163c732d64360e01b815260040160405180910390fd5b610c3b61108e565b83355f819003610c4e575f92505061061d565b5f5160206122665f395f51905f52545f5160206122065f395f51905f52805490916001600160a01b0390811691610c88911682308661177f565b5f610c9388886117b8565b90507f4acff7563ac8976619e6e3bde61670bf348624aaa726c74fc854b294c1022fc681604051610cc691815260200190565b60405180910390a1979650505050505050565b5f9182525f5160206122a65f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f6106ea5f5160206123065f395f51905f52546001600160401b031690565b5f5f5160206122065f395f51905f5281610d466114cf565b905080826002015411610d5d578160020154610d5f565b805b9250505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610daa5750825b90505f826001600160401b03166001148015610dc55750303b155b905081158015610dd3575080155b15610df15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e1b57845460ff60401b1916600160401b1785555b6001600160a01b038916610e425760405163a757747360e01b815260040160405180910390fd5b866001600160401b0316866001600160401b031610610e7457604051631a3c1dd960e01b815260040160405180910390fd5b612710886001600160401b03161115610ea057604051632a1a41c760e11b815260040160405180910390fd5b610eaa8b8b6112b6565b5f5160206121e65f395f51905f5280546001600160a01b0319166001600160a01b038b161790555f5160206123065f395f51905f528054426001600160401b039081166fffffffffffffffffffffffffffffffff1990921691909117600160401b89831602176fffffffffffffffffffffffffffffffff16600160801b8b8316026001600160c01b031617600160c01b918a16919091021790555f5f5160206122465f395f51905f52558315610f9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b5f5160206122e65f395f51905f52610fbe81611133565b610b5f8261187f565b610fd082610624565b610fd981611133565b61070b83836111de565b5f5160206122e65f395f51905f52610ffa81611133565b610b5f82611952565b5f5160206122e65f395f51905f5261101a81611133565b7fe84a5801edbad7de8e77ad0d2d730a53019bf3035b3c2f0ee45940fd7a54790254604080519182526020820184905280515f5160206122065f395f51905f52927f12f3285d99fbf02a9fce23217a6db80c9879409d8f63b8c899a14d9af2fa5bd092908290030190a16002019190915550565b5f5160206122c65f395f51905f525460ff16156110be5760405163d93c066560e01b815260040160405180910390fd5b565b5f82356110cc81611a08565b949350505050565b6040516001600160a01b0383811660248301526044820183905261082791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611af2565b61084b8133611b5e565b5f5f5160206122a65f395f51905f526111568484610cd9565b6111d5575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561118b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610537565b5f915050610537565b5f5f5160206122a65f395f51905f526111f78484610cd9565b156111d5575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610537565b61125f611b97565b5f5160206122c65f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b0382166112dd57604051633ef39b8160e01b815260040160405180910390fd5b6001600160a01b0381166113045760405163d580689d60e01b815260040160405180910390fd5b61130c611bc6565b611314611bce565b61134b5f5160206122e65f395f51905f527f49b7c355ee8dfdc3844a0a6ab0416bc138e431dce5f425a931f37dae4734a2c2611bde565b6113825f5160206122865f395f51905f527f3d8297e3c8430647e1e7d0ca623bec7373d0463f7cced5ea3c1a17aab327cacc611bde565b6113ac7f49b7c355ee8dfdc3844a0a6ab0416bc138e431dce5f425a931f37dae4734a2c28361113d565b506113d77f3d8297e3c8430647e1e7d0ca623bec7373d0463f7cced5ea3c1a17aab327cacc8361113d565b506113ef5f5160206122865f395f51905f528361113d565b506114075f5160206122e65f395f51905f528361113d565b505f5160206122665f395f51905f5280546001600160a01b0319166001600160a01b038316908117909155604080516338d52e0f60e01b815290515f5160206122065f395f51905f5292916338d52e0f9160048083019260209291908290030181865afa15801561147a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149e9190612102565b81546001600160a01b0319166001600160a01b03919091161781555f196002909101555050565b5f61053782611a08565b5f6114d8611c3e565b505f5160206122265f395f51905f525490565b5f5160206122465f395f51905f52545f905f5160206123065f395f51905f5290611516906001612131565b841461155557838160010154600161152e9190612131565b6040516322f3309360e21b8152600481019290925260248201526044015b60405180910390fd5b611560858585611c8a565b95945050505050565b61157161108e565b5f5160206122c65f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611298565b5f5160206121e65f395f51905f525f6115c8611dda565b90505f831215611622575f6115dc84612144565b90508260010154811115611603576040516354ed247f60e11b815260040160405180910390fd5b80836001015f828254611616919061215e565b9091555061163b915050565b82826001015f8282546116359190612131565b90915550505b600182015460408051838152602081019290925281018490527f8c1c6041daf16715638d5256eec7f2aa8c09e434082aa218bc672a060d048c599060600160405180910390a1505050565b5f5160206122465f395f51905f52545f906106ea906001612131565b5f5160206123065f395f51905f5280546116ce90603c90600160c01b90046001600160401b0316612171565b6001600160401b0316826001600160401b0316111561170057604051631a3c1dd960e01b815260040160405180910390fd5b8054604080516001600160401b03600160401b909304831680825292851660208201527f4117ef72b6a5230c2c127e663fca910584e67b65d83d4e3faaa85c9a6eda0a1b910160405180910390a15080546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b6040516001600160a01b03848116602483015283811660448301526064820183905261070b9186918216906323b872dd90608401611101565b5f6117c161108e565b82356117cb611c3e565b5f5160206122265f395f51905f5280545f5160206121e65f395f51905f529183915f906117f9908490612131565b909155505080545f5160206122065f395f51905f5280549091611829916001600160a01b039081169116856110d4565b81548154604080516001600160a01b0392831681526020810187905291909216917f2aefe94e9f22ace9635204ccf0eafa36414786bbe73cd101dd685e7e3243ac22910160405180910390a25090949350505050565b5f5160206123065f395f51905f5280546118ab90603c90600160401b90046001600160401b0316612190565b6001600160401b0316826001600160401b031610156118dd57604051630f6e048360e01b815260040160405180910390fd5b8054604080516001600160401b03600160c01b909304831680825292851660208201527fefe70e2e199c8f9c5de58455603a92f3acf4b3c83e39631ab400331fd79403f9910160405180910390a15080546001600160401b03909216600160c01b026001600160c01b03909216919091179055565b612710816001600160401b0316111561197e57604051632a1a41c760e11b815260040160405180910390fd5b5f5160206123065f395f51905f528054604080516001600160401b03600160801b9093048316808252928516602082015281517fb701a276a79d671a93936b0e3d66ae7e0349731cc83b7d7fc018c42edeebc63b929181900390910190a15080546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b5f611a1161108e565b611a19611c3e565b5f5160206122265f395f51905f52545f5160206121e65f395f51905f5290831115611a57576040516354ed247f60e11b815260040160405180910390fd5b82816001015f828254611a6a919061215e565b909155505080545f5160206122065f395f51905f5280549091611a9b916001600160a01b039081169116308761177f565b81548154604080516001600160a01b0392831681526020810188905291909216917f4b877d3364731a78d59c956309ce67d09a95cd2a7083a019c569869e42512f44910160405180910390a283925050505b919050565b5f5f60205f8451602086015f885af180611b11576040513d5f823e3d81fd5b50505f513d91508115611b28578060011415611b35565b6001600160a01b0384163b155b1561070b57604051635274afe760e01b81526001600160a01b038516600482015260240161154c565b611b688282610cd9565b610b5f5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161154c565b5f5160206122c65f395f51905f525460ff166110be57604051638dfc202b60e01b815260040160405180910390fd5b6110be611e33565b611bd6611e33565b6110be611e7c565b5f5160206122a65f395f51905f525f611bf684610624565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f5160206123065f395f51905f5280546001600160401b03600160c01b8204811691611c6b91164261215e565b111561084b57604051639cb9a65560e01b815260040160405180910390fd5b5f5160206123065f395f51905f5280545f91908290611cbb906001600160401b03600160401b820481169116612190565b6001600160401b031690504281111580611d1057604080518781524260208201529081018390527f582d12129a0eb0ff969b4b669970dd16ee9ce86907c0380149752e1e065c66529060600160405180910390a15b5f5f8812611d1e5787611d27565b611d2788612144565b90505f611d35876001612131565b611d41612710846121af565b611d4b91906121c6565b8554909150600160801b90046001600160401b031681111580611dc2578554604080518b8152602081018d90529081018a9052600160801b9091046001600160401b031660608201527f6552c9f8f0fe170310fa445b980eeab451675a32e7367d4a2e7a66c6bc0450d19060800160405180910390a15b838015611dcc5750805b9a9950505050505050505050565b5f5160206123065f395f51905f52805467ffffffffffffffff1916426001600160401b03161781555f5160206122465f395f51905f5280545f92916001918490611e25908490612131565b909155505060010154919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166110be57604051631afcd79f60e31b815260040160405180910390fd5b611e84611e33565b5f5160206122c65f395f51905f52805460ff19169055565b5f60208284031215611eac575f5ffd5b81356001600160e01b031981168114611ec3575f5ffd5b9392505050565b5f5f60208385031215611edb575f5ffd5b82356001600160401b03811115611ef0575f5ffd5b8301601f81018513611f00575f5ffd5b80356001600160401b03811115611f15575f5ffd5b856020828401011115611f26575f5ffd5b6020919091019590945092505050565b5f60208284031215611f46575f5ffd5b5035919050565b6001600160a01b038116811461084b575f5ffd5b5f60208284031215611f71575f5ffd5b8135611ec381611f4d565b5f5f60408385031215611f8d575f5ffd5b823591506020830135611f9f81611f4d565b809150509250929050565b5f5f60408385031215611fbb575f5ffd5b8235611fc681611f4d565b946020939093013593505050565b5f5f60408385031215611fe5575f5ffd5b8235611ff081611f4d565b91506020830135611f9f81611f4d565b5f5f60408385031215612011575f5ffd5b50508035926020909101359150565b602081016003831061204057634e487b7160e01b5f52602160045260245ffd5b91905290565b80356001600160401b0381168114611aed575f5ffd5b5f6020828403121561206c575f5ffd5b611ec382612046565b5f5f5f5f5f5f60c0878903121561208a575f5ffd5b863561209581611f4d565b955060208701356120a581611f4d565b945060408701356120b581611f4d565b93506120c360608801612046565b92506120d160808801612046565b91506120df60a08801612046565b90509295509295509295565b5f602082840312156120fb575f5ffd5b5051919050565b5f60208284031215612112575f5ffd5b8151611ec381611f4d565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105375761053761211d565b5f600160ff1b82016121585761215861211d565b505f0390565b818103818111156105375761053761211d565b6001600160401b0382811682821603908111156105375761053761211d565b6001600160401b0381811683821601908111156105375761053761211d565b80820281158282048414176105375761053761211d565b5f826121e057634e487b7160e01b5f52601260045260245ffd5b50049056fecb7da0d8897752a6df968d7ec6cb8f24f19b693fff4548ee51892258c2c21a00e84a5801edbad7de8e77ad0d2d730a53019bf3035b3c2f0ee45940fd7a547900cb7da0d8897752a6df968d7ec6cb8f24f19b693fff4548ee51892258c2c21a015ce5a25f3602968dae3457825179f308a81a0ae9fafb34e4d83f623ffdb37f01e84a5801edbad7de8e77ad0d2d730a53019bf3035b3c2f0ee45940fd7a54790197667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033008eed360e86e418207f03bdbfeed36c97a429754d5b20cf2ba92a94b5e65c2bb75ce5a25f3602968dae3457825179f308a81a0ae9fafb34e4d83f623ffdb37f00a2646970667358221220d9bcee55c2fc108ad027decd31bf3840d5dc0fcfe260618f194584d54f99a29264736f6c634300081b0033