0 txs
1 call
constructor
constructor()
functions
ADMIN_DELEGATE_ROLE
viewfunction ADMIN_DELEGATE_ROLE() view returns (bytes32)
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
circleTokenMessenger
viewfunction circleTokenMessenger() view returns (address)
controller
viewfunction controller() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
fundVault
viewfunction fundVault() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isAdmin
viewfunction isAdmin(address _sender) view returns (bool)
isDelegateAdmin
viewfunction isDelegateAdmin(address _sender) view returns (bool)
isOperator
viewfunction isOperator(address _sender) view returns (bool)
isSigner
viewfunction isSigner(address _sender) view returns (bool)
OPERATOR
viewfunction OPERATOR() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
SIGNER
viewfunction SIGNER() view returns (bytes32)
srcDomainId
viewfunction srcDomainId() view returns (uint32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
transferMitter
viewfunction transferMitter() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
usdc
viewfunction usdc() view returns (address)
claimFundCCTPToFundVault
nonpayablefunction claimFundCCTPToFundVault(tuple _claimCCTP)
claimFundCCTPToUser
nonpayablefunction claimFundCCTPToUser(tuple _claimCCTP)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin_, address moneyfiFundVault_, address controller_, address circleTokenMessenger_, address transferMitter_, address usdc_, uint32 srcDomainId_)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setController
nonpayablefunction setController(address _controller)
setDomainCCTPId
nonpayablefunction setDomainCCTPId(uint256 _domainId, bool _value)
setDstDomainToReceiverToValidation
nonpayablefunction setDstDomainToReceiverToValidation(uint32 _domainId, bytes32 _receiver, bool _newValue)
setDstDomainToValidation
nonpayablefunction setDstDomainToValidation(uint32 _domainId, bool _newValue)
setFundVault
nonpayablefunction setFundVault(address _fundVault)
setSourceDomainId
nonpayablefunction setSourceDomainId(uint32 _newSrcDomainId)
takeTransportDeposit
payablefunction takeTransportDeposit(tuple _depositParam) payable
takeTransportWithdraw
payablefunction takeTransportWithdraw(tuple _withdrawParam) payable
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ExecuteReceiveFundCrossChainFailed
event ExecuteReceiveFundCrossChainFailed(bytes32 indexed guid, bytes composeMsg, address indexed depositor, address depositedTokenAddress, uint256 amount, uint256 srcId, uint256 executedAt)
ExecuteTransferFundFromRouterToFundVaultCrossChain
event ExecuteTransferFundFromRouterToFundVaultCrossChain(address indexed depositor, address indexed depositToken, uint256 amount, uint256 executedAt)
Initialized
event Initialized(uint64 version)
LzCompose
event LzCompose(address sender, address _from, bytes32 _guid, bytes _message, address _executor, bytes _extraData, uint256 lzComposeAt)
LzComposeLogs
event LzComposeLogs(string message)
ReceiveFundCrossChainFailed
event ReceiveFundCrossChainFailed(address router, bytes message)
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)
TakeTransport
event TakeTransport(address indexed _token, uint32 _dstChainId, uint256 _amount, address indexed _receiver, bytes _composeMsg, uint128 _composeGasLimit)
TakeTransportCCTP
event TakeTransportCCTP(address indexed depositor, address indexed depositedToken, address crossChainDexSender, bytes32 receiver, bytes coordinationMessage, uint256 actualAmountBridgeCrossChain, uint256 distributionFee, uint32 srcDomainId, uint32 domainDstChainId, uint64 nonce, uint256 emittedAt)
TestReceiver
event TestReceiver(address strategyAddress, address depositor, address depositedTokenAddress, uint256 amount, bytes externalCallData)
TransferFundFromDexCrossChainToFundVault
event TransferFundFromDexCrossChainToFundVault(address depositor, address tokenAddress, bytes coordinationMessage, bytes attestation, bytes messageCCTTP, uint32 srcDomainId, uint64 nonce, uint256 actualClaimAmount, uint256 claimedFee, uint256 emittedAt)
TransferFundFromDexCrossChainToFundVault
event TransferFundFromDexCrossChainToFundVault(address depositor, address tokenAddress, uint256 amount, uint256 depositedAt)
TransferFundFromDexCrossChainToUser
event TransferFundFromDexCrossChainToUser(address depositor, address tokenAddress, bytes attestation, bytes messageCCTTP, uint32 srcDomainId, uint64 nonce, uint256 actualClaimAmount, uint256 claimedFee, uint256 emittedAt)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyClaimed
error AlreadyClaimed()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance()
InsufficientValue
error InsufficientValue(uint256 value, uint256 exptected)
InvalidAddress
error InvalidAddress(address addr)
InvalidAdminRole
error InvalidAdminRole()
InvalidAmount
error InvalidAmount(uint256 amount)
InvalidAtLeastOperatorRole
error InvalidAtLeastOperatorRole()
InvalidChainId
error InvalidChainId(uint256 chainId)
InvalidDelegateRole
error InvalidDelegateRole()
InvalidDepositedToken
error InvalidDepositedToken(address depositedToken, address expectedDepositedToken)
InvalidDepositor
error InvalidDepositor(address depositor, address expectedDepositor)
InvalidDomainCCTPId
error InvalidDomainCCTPId()
InvalidInitialization
error InvalidInitialization()
InvalidLzEndpoint
error InvalidLzEndpoint(address lzEndpoint)
InvalidMintReceiver
error InvalidMintReceiver()
InvalidOriginComposeMsg
error InvalidOriginComposeMsg()
InvalidPayloadHash
error InvalidPayloadHash(bytes payloadHash, bytes32 guid)
InvalidRouter
error InvalidRouter()
InvalidSender
error InvalidSender(address sender)
InvalidSignerRole
error InvalidSignerRole()
InvalidSlippage
error InvalidSlippage(uint256 slippage)
InvalidStargatePool
error InvalidStargatePool(address pool)
InvalidTargetChainAmount
error InvalidTargetChainAmount(uint256 amount, uint256 targetMinAmount, uint256 expectedAmount)
InvalidTokenAddress
error InvalidTokenAddress(address token)
NotInitializing
error NotInitializing()
RequiredAddressNotNull
error RequiredAddressNotNull()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenNotSupportBridgeToTargetChain
error TokenNotSupportBridgeToTargetChain(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f6b6100f95f395f8181611ae201528181611b0b0152611c6a0152612f6b5ff3fe60806040526004361061020f575f3560e01c80639010d07c11610116578063ad3cb1cc116100a4578063d547741f1161006b578063d547741f1461066e578063e17d3a661461068d578063f4293c73146106ac578063f77c4791146106cb578063f7800e69146106ea57005b8063ad3cb1cc1461059c578063aef837c4146105d9578063c5f29ae414610611578063c62db06b14610630578063ca15c8731461064f57005b8063a16a95f3116100e8578063a16a95f314610500578063a217fddf1461051f578063a3246ad314610532578063abb853ea1461055e578063ad2f38071461057d57005b80639010d07c1461048357806391d14854146104a257806392eefe9b146104c1578063983d2737146104e057005b80633e413bee1161019e578063582abd1211610165578063582abd12146103e65780636d70f7ae1461040657806375b238fc146104255780637df73e27146104455780638c1577c91461046457005b80633e413bee14610356578063452945b81461038d5780634f1ef286146103ac578063501c1915146103bf57806352d1902d146103d257005b8063248a9ca3116101e2578063248a9ca3146102b857806324d7806c146102e65780632f2ff15d14610305578063363710f81461032457806336568abe1461033757005b80622454c21461021857806301ffc9a7146102375780630952ff541461026b578063100cc38e1461029957005b3661021657005b005b348015610223575f80fd5b5061021661023236600461263e565b610709565b348015610242575f80fd5b50610256610251366004612739565b610aa7565b60405190151581526020015b60405180910390f35b348015610276575f80fd5b5061028b5f80516020612edf83398151915281565b604051908152602001610262565b3480156102a4575f80fd5b506102166102b336600461276d565b610ad1565b3480156102c3575f80fd5b5061028b6102d23660046127a4565b5f9081526020819052604090206001015490565b3480156102f1575f80fd5b506102566103003660046127bb565b610b1e565b348015610310575f80fd5b5061021661031f3660046127d6565b610b36565b6102166103323660046127f9565b610b60565b348015610342575f80fd5b506102166103513660046127d6565b610e37565b348015610361575f80fd5b50600454610375906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610398575f80fd5b50600354610375906001600160a01b031681565b6102166103ba3660046128e6565b610e6f565b6102166103cd366004612932565b610e8e565b3480156103dd575f80fd5b5061028b61114f565b3480156103f1575f80fd5b5061028b5f80516020612ebf83398151915281565b348015610411575f80fd5b506102566104203660046127bb565b61116a565b348015610430575f80fd5b5061028b5f80516020612eff83398151915281565b348015610450575f80fd5b5061025661045f3660046127bb565b611182565b34801561046f575f80fd5b50600254610375906001600160a01b031681565b34801561048e575f80fd5b5061037561049d3660046129d6565b61119a565b3480156104ad575f80fd5b506102566104bc3660046127d6565b6111b8565b3480156104cc575f80fd5b506102166104db3660046127bb565b6111e0565b3480156104eb575f80fd5b5061028b5f80516020612f3f83398151915281565b34801561050b575f80fd5b5061025661051a3660046127bb565b611228565b34801561052a575f80fd5b5061028b5f81565b34801561053d575f80fd5b5061055161054c3660046127a4565b611240565b60405161026291906129f6565b348015610569575f80fd5b506102166105783660046127bb565b611259565b348015610588575f80fd5b5061021661059736600461263e565b6112a1565b3480156105a7575f80fd5b506105cc604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102629190612a6f565b3480156105e4575f80fd5b506006546105fc90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610262565b34801561061c575f80fd5b5061021661062b366004612a81565b611621565b34801561063b575f80fd5b5061021661064a366004612ac0565b611678565b34801561065a575f80fd5b5061028b6106693660046127a4565b6116c4565b348015610679575f80fd5b506102166106883660046127d6565b6116da565b348015610698575f80fd5b506102166106a7366004612adb565b6116fe565b3480156106b7575f80fd5b506102166106c6366004612afe565b611743565b3480156106d6575f80fd5b50600654610375906001600160a01b031681565b3480156106f5575f80fd5b50600554610375906001600160a01b031681565b6107123361116a565b61072f57604051631784501560e11b815260040160405180910390fd5b60208101518151604080840151905160089061074c908490612b8f565b9081526020016040518091039020836040516107689190612b8f565b908152604080516020928190038301902060a08701516001600160401b03165f908152925290205460ff16156107b157604051630c8d9eab60e31b815260040160405180910390fd5b60016008836040516107c39190612b8f565b9081526020016040518091039020846040516107df9190612b8f565b90815260408051918290036020908101832060a08901516001600160401b03165f9081529152908120805493151560ff1990941693909317909255600480546370a0823160e01b835230918301919091526001600160a01b0316906370a0823190602401602060405180830381865afa15801561085e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108829190612ba5565b600354604051630afd9fa560e31b81529192506001600160a01b0316906357ecfd28906108b59087908790600401612bbc565b6020604051808303815f875af11580156108d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f59190612be0565b50600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610941573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109659190612ba5565b90505f6109728383612c0f565b9050866080015181111561099657608087015161098f9082612c0f565b905061099e565b608087018190525b8015610a2c576005546004805460608a015160405163745e87f760e01b81526001600160a01b039283169381019390935281166024830152604482018490529091169063745e87f7906064016020604051808303815f875af1158015610a06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2a9190612ba5565b505b606087015160045460065460a08a015160808b01516040517fe729fd64e8f04f49b90abf2609e82fca7e60afd2251122c0f4d55775062009b595610a969590946001600160a01b03909116938b938d938f93600160a01b900463ffffffff1692918b914290612c22565b60405180910390a150505050505050565b5f6001600160e01b03198216635a05180f60e01b1480610acb5750610acb826119d1565b92915050565b610ada33611228565b610af75760405163dade674960e01b815260040160405180910390fd5b63ffffffff919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610acb5f80516020612eff833981519152836111b8565b5f82815260208190526040902060010154610b5081611a05565b610b5a8383611a12565b50505050565b60065f9054906101000a90046001600160a01b03166001600160a01b03166348db35096040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd49190612cb3565b6001600160a01b0316336001600160a01b031614610c055760405163466d7fef60e01b815260040160405180910390fd5b60045481516001600160a01b03908116911614610c4857805160405163a51fc05560e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f805f805f8560e00151806020019051810190610c659190612cce565b63ffffffff85165f908152600760205260409020549499509297509095509350915060ff16610ca75760405163c02c3d0d60e01b815260040160405180910390fd5b63ffffffff85165f908152600a602052604090205460ff1615610d045763ffffffff85165f90815260096020908152604080832085845290915290205460ff16610d0457604051631e1db45960e11b815260040160405180910390fd5b60808601518651610d24916001600160a01b039091169033903090611a45565b6002546080870151600480546040516337e9a82760e11b81529182019290925263ffffffff88166024820152604481018590526001600160a01b0391821660648201525f929190911690636fd3504e906084016020604051808303815f875af1158015610d93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db79190612d7b565b9050836001600160a01b031687606001516001600160a01b03167f433a998057186afabfeeb10a228b14404dd446f76b828602684335b7fe3dbf923086868c608001518b600660149054906101000a900463ffffffff168e8a42604051610e2699989796959493929190612d96565b60405180910390a350505050505050565b6001600160a01b0381163314610e605760405163334bd91960e11b815260040160405180910390fd5b610e6a8282611aac565b505050565b610e77611ad7565b610e8082611b7d565b610e8a8282611ba3565b5050565b60065f9054906101000a90046001600160a01b03166001600160a01b03166348db35096040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f029190612cb3565b6001600160a01b0316336001600160a01b031614610f335760405163466d7fef60e01b815260040160405180910390fd5b60045481516001600160a01b03908116911614610f7157805160405163a51fc05560e01b81526001600160a01b039091166004820152602401610c3f565b5f805f805f8560800151806020019051810190610f8e9190612cce565b63ffffffff85165f908152600760205260409020549499509297509095509350915060ff16610fd05760405163c02c3d0d60e01b815260040160405180910390fd5b63ffffffff85165f908152600a602052604090205460ff161561102d5763ffffffff85165f90815260096020908152604080832085845290915290205460ff1661102d57604051631e1db45960e11b815260040160405180910390fd5b6040860151865161104d916001600160a01b039091169033903090611a45565b6002546040878101516004805492516337e9a82760e11b81529081019190915263ffffffff88166024820152604481018590526001600160a01b0391821660648201525f929190911690636fd3504e906084016020604051808303815f875af11580156110bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e09190612d7b565b9050836001600160a01b031687602001516001600160a01b03167f433a998057186afabfeeb10a228b14404dd446f76b828602684335b7fe3dbf923086868c604001518b600660149054906101000a900463ffffffff168e8a42604051610e2699989796959493929190612d96565b5f611158611c5f565b505f80516020612f1f83398151915290565b5f610acb5f80516020612f3f833981519152836111b8565b5f610acb5f80516020612ebf833981519152836111b8565b5f8281526001602052604081206111b19083611ca8565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6111e933610b1e565b61120657604051632d4d7bb360e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f610acb5f80516020612edf833981519152836111b8565b5f818152600160205260409020606090610acb90611cb3565b61126233610b1e565b61127f57604051632d4d7bb360e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6112aa3361116a565b6112c757604051631784501560e11b815260040160405180910390fd5b6020810151815160408084015190516008906112e4908490612b8f565b9081526020016040518091039020836040516113009190612b8f565b908152604080516020928190038301902060a08701516001600160401b03165f908152925290205460ff161561134957604051630c8d9eab60e31b815260040160405180910390fd5b600160088360405161135b9190612b8f565b9081526020016040518091039020846040516113779190612b8f565b90815260408051918290036020908101832060a08901516001600160401b03165f9081529152908120805493151560ff1990941693909317909255600480546370a0823160e01b835230918301919091526001600160a01b0316906370a0823190602401602060405180830381865afa1580156113f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141a9190612ba5565b600354604051630afd9fa560e31b81529192506001600160a01b0316906357ecfd289061144d9087908790600401612bbc565b6020604051808303815f875af1158015611469573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148d9190612be0565b50600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fd9190612ba5565b90505f61150a8383612c0f565b9050866080015181111561152e5760808701516115279082612c0f565b9050611536565b608087018190525b80156115b85760048054606089015160405163a9059cbb60e01b81526001600160a01b039182169381019390935260248301849052169063a9059cbb906044016020604051808303815f875af1158015611592573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b69190612be0565b505b606087015160045460065460a08a015160808b01516040517f85f2bc45e979d2711fac5f9bf5cde557d7ebb40582470f191c211f65c7b011c595610a969590946001600160a01b03909116938c938e93600160a01b90930463ffffffff16928a91904290612e08565b61162a3361116a565b61164757604051631784501560e11b815260040160405180910390fd5b63ffffffff929092165f90815260096020908152604080832093835292905220805460ff1916911515919091179055565b61168133611228565b61169e5760405163dade674960e01b815260040160405180910390fd5b6006805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f818152600160205260408120610acb90611cbf565b5f828152602081905260409020600101546116f481611a05565b610b5a8383611aac565b61170733611228565b6117245760405163dade674960e01b815260040160405180910390fd5b5f91825260076020526040909120805460ff1916911515919091179055565b5f61174c611cc8565b805490915060ff600160401b82041615906001600160401b03165f811580156117725750825b90505f826001600160401b0316600114801561178d5750303b155b90508115801561179b575080155b156117b95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117e357845460ff60401b1916600160401b1785555b6001600160a01b038c16158061180057506001600160a01b038b16155b8061181257506001600160a01b038a16155b156118305760405163706e379b60e11b815260040160405180910390fd5b6118398c611cf0565b8860025f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508760035f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508660045f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508a60055f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508960065f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555085600660146101000a81548163ffffffff021916908363ffffffff16021790555061195f60025f9054906101000a90046001600160a01b03165f1960045f9054906101000a90046001600160a01b03166001600160a01b0316611dd39092919063ffffffff16565b60055460045461197d916001600160a01b0391821691165f19611dd3565b83156119c357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f6001600160e01b03198216637965db0b60e01b1480610acb57506301ffc9a760e01b6001600160e01b0319831614610acb565b611a0f8133611e5a565b50565b5f80611a1e8484611e93565b905080156111b1575f848152600160205260409020611a3d9084611f22565b509392505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610b5a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f36565b5f80611ab88484611fa2565b905080156111b1575f848152600160205260409020611a3d908461200b565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b5d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b515f80516020612f1f833981519152546001600160a01b031690565b6001600160a01b031614155b15611b7b5760405163703e46dd60e11b815260040160405180910390fd5b565b611b8633611228565b611a0f5760405163dade674960e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfd575060408051601f3d908101601f19168201909252611bfa91810190612ba5565b60015b611c2557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c3f565b5f80516020612f1f8339815191528114611c5557604051632a87526960e21b815260048101829052602401610c3f565b610e6a838361201f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b7b5760405163703e46dd60e11b815260040160405180910390fd5b5f6111b18383612074565b60605f6111b18361209a565b5f610acb825490565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610acb565b611d075f80516020612f3f83398151915282611a12565b50611d1f5f80516020612eff83398151915282611a12565b50611d375f80516020612edf83398151915282611a12565b50611d4f5f80516020612ebf83398151915282611a12565b50611d675f80516020612eff833981519152806120f3565b611d8b5f80516020612edf8339815191525f80516020612eff8339815191526120f3565b611daf5f80516020612f3f8339815191525f80516020612edf8339815191526120f3565b611a0f5f80516020612ebf8339815191525f80516020612edf8339815191526120f3565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015611e20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e449190612ba5565b9050610b5a8484611e558585612e83565b61213d565b611e6482826111b8565b610e8a5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c3f565b5f611e9e83836111b8565b611f1b575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611ed33390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610acb565b505f610acb565b5f6111b1836001600160a01b0384166121cc565b5f8060205f8451602086015f885af180611f55576040513d5f823e3d81fd5b50505f513d91508115611f6c578060011415611f79565b6001600160a01b0384163b155b15610b5a57604051635274afe760e01b81526001600160a01b0385166004820152602401610c3f565b5f611fad83836111b8565b15611f1b575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610acb565b5f6111b1836001600160a01b038416612211565b612028826122f4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561206c57610e6a8282612357565b610e8a6123c9565b5f825f01828154811061208957612089612e96565b905f5260205f200154905092915050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156120e757602002820191905f5260205f20905b8154815260200190600101908083116120d3575b50505050509050919050565b5f82815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261218e84826123e8565b610b5a576040516001600160a01b0384811660248301525f60448301526121c291869182169063095ea7b390606401611a7a565b610b5a8482611f36565b5f818152600183016020526040812054611f1b57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610acb565b5f81815260018301602052604081205480156122eb575f612233600183612c0f565b85549091505f9061224690600190612c0f565b90508082146122a5575f865f01828154811061226457612264612e96565b905f5260205f200154905080875f01848154811061228457612284612e96565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806122b6576122b6612eaa565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610acb565b5f915050610acb565b806001600160a01b03163b5f0361232957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c3f565b5f80516020612f1f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516123739190612b8f565b5f60405180830381855af49150503d805f81146123ab576040519150601f19603f3d011682016040523d82523d5f602084013e6123b0565b606091505b50915091506123c0858383612431565b95945050505050565b3415611b7b5760405163b398979f60e01b815260040160405180910390fd5b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612427575081156124195780600114612427565b5f866001600160a01b03163b115b9695505050505050565b606082612446576124418261248d565b6111b1565b815115801561245d57506001600160a01b0384163b155b1561248657604051639996b31560e01b81526001600160a01b0385166004820152602401610c3f565b5092915050565b80511561249d5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156124ec576124ec6124b6565b60405290565b60405161010081016001600160401b03811182821017156124ec576124ec6124b6565b60405160a081016001600160401b03811182821017156124ec576124ec6124b6565b604051601f8201601f191681016001600160401b038111828210171561255f5761255f6124b6565b604052919050565b5f6001600160401b0382111561257f5761257f6124b6565b50601f01601f191660200190565b5f82601f83011261259c575f80fd5b81356125af6125aa82612567565b612537565b8181528460208386010111156125c3575f80fd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b0381168114611a0f575f80fd5b80356125fe816125df565b919050565b6001600160401b0381168114611a0f575f80fd5b80356125fe81612603565b63ffffffff81168114611a0f575f80fd5b80356125fe81612622565b5f6020828403121561264e575f80fd5b81356001600160401b03811115612663575f80fd5b820160e08185031215612674575f80fd5b61267c6124ca565b81356001600160401b03811115612691575f80fd5b61269d8682850161258d565b82525060208201356001600160401b038111156126b8575f80fd5b6126c48682850161258d565b60208301525060408201356001600160401b038111156126e2575f80fd5b6126ee8682850161258d565b604083015250612700606083016125f3565b60608201526080828101359082015261271b60a08301612617565b60a082015261272c60c08301612633565b60c0820152949350505050565b5f60208284031215612749575f80fd5b81356001600160e01b0319811681146111b1575f80fd5b8015158114611a0f575f80fd5b5f806040838503121561277e575f80fd5b823561278981612622565b9150602083013561279981612760565b809150509250929050565b5f602082840312156127b4575f80fd5b5035919050565b5f602082840312156127cb575f80fd5b81356111b1816125df565b5f80604083850312156127e7575f80fd5b823591506020830135612799816125df565b5f60208284031215612809575f80fd5b81356001600160401b0381111561281e575f80fd5b82016101008185031215612830575f80fd5b6128386124f2565b612841826125f3565b815261284f602083016125f3565b6020820152612860604083016125f3565b6040820152612871606083016125f3565b60608201526080828101359082015260a0808301359082015260c08201356001600160401b038111156128a2575f80fd5b6128ae8682850161258d565b60c08301525060e08201356001600160401b038111156128cc575f80fd5b6128d88682850161258d565b60e083015250949350505050565b5f80604083850312156128f7575f80fd5b8235612902816125df565b915060208301356001600160401b0381111561291c575f80fd5b6129288582860161258d565b9150509250929050565b5f60208284031215612942575f80fd5b81356001600160401b03811115612957575f80fd5b820160a08185031215612968575f80fd5b612970612515565b813561297b816125df565b8152602082013561298b816125df565b6020820152604082810135908201526060808301359082015260808201356001600160401b038111156129bc575f80fd5b6129c88682850161258d565b608083015250949350505050565b5f80604083850312156129e7575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612a365783516001600160a01b0316835260209384019390920191600101612a0f565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111b16020830184612a41565b5f805f60608486031215612a93575f80fd5b8335612a9e81612622565b9250602084013591506040840135612ab581612760565b809150509250925092565b5f60208284031215612ad0575f80fd5b81356111b181612622565b5f8060408385031215612aec575f80fd5b82359150602083013561279981612760565b5f805f805f805f60e0888a031215612b14575f80fd5b8735612b1f816125df565b96506020880135612b2f816125df565b95506040880135612b3f816125df565b94506060880135612b4f816125df565b93506080880135612b5f816125df565b925060a0880135612b6f816125df565b915060c0880135612b7f81612622565b8091505092959891949750929550565b5f82518060208501845e5f920191825250919050565b5f60208284031215612bb5575f80fd5b5051919050565b604081525f612bce6040830185612a41565b82810360208401526123c08185612a41565b5f60208284031215612bf0575f80fd5b81516111b181612760565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610acb57610acb612bfb565b6001600160a01b038b811682528a166020820152610140604082018190525f90612c4e9083018b612a41565b8281036060840152612c60818b612a41565b90508281036080840152612c74818a612a41565b63ffffffff9890981660a084015250506001600160401b039490941660c085015260e08401929092526101008301526101209091015295945050505050565b5f60208284031215612cc3575f80fd5b81516111b1816125df565b5f805f805f60a08688031215612ce2575f80fd5b8551612ced81612622565b602087015160408801519196509450612d05816125df565b6060870151608088015191945092506001600160401b03811115612d27575f80fd5b8601601f81018813612d37575f80fd5b8051612d456125aa82612567565b818152896020838501011115612d59575f80fd5b8160208401602083015e5f602083830101528093505050509295509295909350565b5f60208284031215612d8b575f80fd5b81516111b181612603565b60018060a01b038a16815288602082015261012060408201525f612dbe61012083018a612a41565b905087606083015286608083015263ffffffff861660a083015263ffffffff851660c08301526001600160401b03841660e0830152826101008301529a9950505050505050505050565b6001600160a01b038a8116825289166020820152610120604082018190525f90612e349083018a612a41565b8281036060840152612e46818a612a41565b63ffffffff98909816608084015250506001600160401b039490941660a085015260c084019290925260e083015261010090910152949350505050565b80820180821115610acb57610acb612bfb565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffdfe6c8d7f768a6bb4aafe85e8a2f5a9680355239c7e14646ed62b044e39de154512c171260023d22a25a00a2789664c9334017843b831138c8ef03cc8897e5873d7f23ec0bb4210edd5cba85afd05127efcd2fc6a781bfed49188da1081670b22d8360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622a164736f6c634300081a000a