0 txs
11 calls
constructor
constructor(address _lifi)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
destinationGas
viewfunction destinationGas() view returns (uint256)
destinationGasReceiver
viewfunction destinationGasReceiver() 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)
lifi
viewfunction lifi() view returns (address)
nextOperationId
viewfunction nextOperationId(address sender) view returns (bytes32)
operationNonce
viewfunction operationNonce(address sender) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin)
migrate
payablefunction migrate(address vaultAddr, uint256 amount, bytes lifiCalldata) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDestinationGas
nonpayablefunction setDestinationGas(uint256 gas)
setDestinationGasReceiver
nonpayablefunction setDestinationGasReceiver(address receiver)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
DestinationGasReceiverSet
event DestinationGasReceiverSet(address receiver)
DestinationGasSet
event DestinationGasSet(uint256 gas)
Initialized
event Initialized(uint64 version)
LiFiFunctionSelectorSet
event LiFiFunctionSelectorSet(bytes4 selector, bool allowed)
MaxDestinationGasSet
event MaxDestinationGasSet(uint256 maxGas)
MigrationInitiated
event MigrationInitiated(bytes32 indexed operationId, address indexed sender, address indexed vaultAddr, uint256 amount, uint256 redeemed, uint256 lifiGas)
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)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AllowanceNotSpent
error AllowanceNotSpent()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExcessiveGasRequest
error ExcessiveGasRequest()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InsufficientDestinationGas
error InsufficientDestinationGas()
InsufficientLiFiGas
error InsufficientLiFiGas()
InvalidAmount
error InvalidAmount()
InvalidCalldata
error InvalidCalldata()
InvalidInitialization
error InvalidInitialization()
InvalidReceiver
error InvalidReceiver()
InvalidVaultAddress
error InvalidVaultAddress()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnauthorizedLiFiFunction
error UnauthorizedLiFiFunction()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525061005e60405180606001604052806023815260200161341d6023913961013060201b60201c565b60a09081525034801561006f575f5ffd5b50604051613440380380613440833981810160405281019061009191906101aa565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100f6576040517f1e4ec46b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050506101d5565b5f600182516020840120035f5260ff1960205f20169050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61017982610150565b9050919050565b6101898161016f565b8114610193575f5ffd5b50565b5f815190506101a481610180565b92915050565b5f602082840312156101bf576101be61014c565b5b5f6101cc84828501610196565b91505092915050565b60805160a05160c0516131fb6102225f395f81816107ce015281816111a401528181611234015261129901525f61059e01525f81816116160152818161166b015261182a01526131fb5ff3fe608060405260043610610138575f3560e01c8063a3246ad3116100aa578063c40498281161006e578063c4049828146104a0578063c4d66de8146104c8578063ca15c873146104f0578063d547741f1461052c578063e184274e14610554578063ee55a2831461057057610192565b8063a3246ad3146103ac578063ad3cb1cc146103e8578063b4aeb99e14610412578063b55346401461043a578063bbc2f1b41461046457610192565b80634f1ef286116100fc5780634f1ef2861461028857806352d1902d146102a457806362202ade146102ce5780639010d07c1461030a57806391d1485414610346578063a217fddf1461038257610192565b806301ffc9a714610196578063248a9ca3146101d25780632f2ff15d1461020e57806336568abe1461023657806346d1cc221461025e57610192565b36610192576101903461014961059a565b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105c690919063ffffffff16565b005b5f5ffd5b3480156101a1575f5ffd5b506101bc60048036038101906101b79190612676565b61068c565b6040516101c991906126bb565b60405180910390f35b3480156101dd575f5ffd5b506101f860048036038101906101f39190612707565b610705565b6040516102059190612741565b60405180910390f35b348015610219575f5ffd5b50610234600480360381019061022f91906127b4565b61072f565b005b348015610241575f5ffd5b5061025c600480360381019061025791906127b4565b610751565b005b348015610269575f5ffd5b506102726107cc565b60405161027f9190612801565b60405180910390f35b6102a2600480360381019061029d9190612956565b6107f0565b005b3480156102af575f5ffd5b506102b861080f565b6040516102c59190612741565b60405180910390f35b3480156102d9575f5ffd5b506102f460048036038101906102ef91906129b0565b610840565b60405161030191906129f3565b60405180910390f35b348015610315575f5ffd5b50610330600480360381019061032b9190612a36565b61088f565b60405161033d9190612801565b60405180910390f35b348015610351575f5ffd5b5061036c600480360381019061036791906127b4565b6108c8565b60405161037991906126bb565b60405180910390f35b34801561038d575f5ffd5b50610396610939565b6040516103a39190612741565b60405180910390f35b3480156103b7575f5ffd5b506103d260048036038101906103cd9190612707565b61093f565b6040516103df9190612b2b565b60405180910390f35b3480156103f3575f5ffd5b506103fc61096e565b6040516104099190612bab565b60405180910390f35b34801561041d575f5ffd5b50610438600480360381019061043391906129b0565b6109a7565b005b348015610445575f5ffd5b5061044e610a37565b60405161045b91906129f3565b60405180910390f35b34801561046f575f5ffd5b5061048a600480360381019061048591906129b0565b610a48565b6040516104979190612741565b60405180910390f35b3480156104ab575f5ffd5b506104c660048036038101906104c19190612bcb565b610aa0565b005b3480156104d3575f5ffd5b506104ee60048036038101906104e991906129b0565b610af6565b005b3480156104fb575f5ffd5b5061051660048036038101906105119190612707565b610d00565b60405161052391906129f3565b60405180910390f35b348015610537575f5ffd5b50610552600480360381019061054d91906127b4565b610d2e565b005b61056e60048036038101906105699190612c53565b610d50565b005b34801561057b575f5ffd5b50610584611444565b6040516105919190612801565b60405180910390f35b5f5f7f000000000000000000000000000000000000000000000000000000000000000090508091505090565b8047101561060d5747816040517fcf479181000000000000000000000000000000000000000000000000000000008152600401610604929190612cc4565b60405180910390fd5b5f5f8373ffffffffffffffffffffffffffffffffffffffff168360405161063390612d18565b5f6040518083038185875af1925050503d805f811461066d576040519150601f19603f3d011682016040523d82523d5f602084013e610672565b606091505b5091509150816106865761068581611475565b5b50505050565b5f7f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106fe57506106fd826114b9565b5b9050919050565b5f5f61070f611532565b9050805f015f8481526020019081526020015f2060010154915050919050565b61073882610705565b61074181611559565b61074b838361156d565b50505050565b6107596115bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107bd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c782826115c4565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6107f8611614565b610801826116fa565b61080b828261170a565b5050565b5f610818611828565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f61084961059a565b6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f6108996118af565b90506108bf83825f015f8781526020019081526020015f206118d690919063ffffffff16565b91505092915050565b5f5f6108d2611532565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f5f1b81565b60605f61094a6118af565b9050610966815f015f8581526020019081526020015f206118ed565b915050919050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f5f1b6109b381611559565b816109bc61059a565b6001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f72d967aa1a730f059716a729f66fa51c43f2f54039414b39f59f7b8197009d82604051610a2b9190612801565b60405180910390a15050565b5f610a4061059a565b5f0154905090565b5f610a9982610a5561059a565b6002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461190c565b9050919050565b5f5f1b610aac81611559565b81610ab561059a565b5f01819055507fb7de3a0797b1f99cd8630cad232b790fb8fbb6b33578ff0dd0a121ab35d10d9482604051610aea91906129f3565b60405180910390a15050565b5f610aff61193e565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610b475750825b90505f60018367ffffffffffffffff16148015610b7a57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610b88575080155b15610bbf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610c0c576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610c71576040517f1e4ec46b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c79611965565b610c8161196f565b610c89611979565b610c9161198b565b610c9d5f5f1b8761156d565b508315610cf8575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610cef9190612d81565b60405180910390a15b505050505050565b5f5f610d0a6118af565b9050610d26815f015f8581526020019081526020015f20611995565b915050919050565b610d3782610705565b610d4081611559565b610d4a83836115c4565b50505050565b610d586119a8565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610dbd576040517f0306120100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8311610df6576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f849050610e2e610e056115bd565b30868473ffffffffffffffffffffffffffffffffffffffff166119fc909392919063ffffffff16565b5f8173ffffffffffffffffffffffffffffffffffffffff16634cdad506866040518263ffffffff1660e01b8152600401610e6891906129f3565b602060405180830381865afa158015610e83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea79190612dae565b9050610f428273ffffffffffffffffffffffffffffffffffffffff16637bde82f28730604051602401610edb929190612dd9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050508373ffffffffffffffffffffffffffffffffffffffff16611a7e90919063ffffffff16565b505f8273ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb19190612e3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fed9190612801565b602060405180830381865afa158015611008573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102c9190612dae565b905082811015611068576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61107161059a565b90505f815f01549050348111156110b4576040517f86f9fd3e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81346110c19190612e93565b90505f81116110fc576040517f7f8a8b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16836001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119f5761119e82846001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105c690919063ffffffff16565b5b6111ea7f0000000000000000000000000000000000000000000000000000000000000000878773ffffffffffffffffffffffffffffffffffffffff16611a939092919063ffffffff16565b61127889898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611ba09092919063ffffffff16565b505f8573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016112d5929190612ec6565b602060405180830381865afa1580156112f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113149190612dae565b1461134b576040517f6e8c7ea200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f836002015f6113596115bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906113a290612eed565b9190505590505f6113ba6113b46115bd565b8361190c565b90508c73ffffffffffffffffffffffffffffffffffffffff166113db6115bd565b73ffffffffffffffffffffffffffffffffffffffff16827f587259b92b95dd191fea15bfaf0f622372e6c64a2f70f5ad1f6561382ec377478f8c8860405161142593929190612f34565b60405180910390a450505050505050505061143e611c6b565b50505050565b5f61144d61059a565b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f815111156114875780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061152b575061152a82611c82565b5b9050919050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b61156a816115656115bd565b611ceb565b50565b5f5f6115776118af565b90505f6115848585611d3c565b905080156115b2576115b084835f015f8881526020019081526020015f20611e3490919063ffffffff16565b505b809250505092915050565b5f33905090565b5f5f6115ce6118af565b90505f6115db8585611e61565b905080156116095761160784835f015f8881526020019081526020015f20611f5990919063ffffffff16565b505b809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614806116c157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116a8611f86565b73ffffffffffffffffffffffffffffffffffffffff1614155b156116f8576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f1b61170681611559565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561177257506040513d601f19601f8201168201806040525081019061176f9190612f7d565b60015b6117b357816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016117aa9190612801565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461181957806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016118109190612741565b60405180910390fd5b6118238383611fd9565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146118ad576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000905090565b5f6118e3835f018361204b565b5f1c905092915050565b60605f6118fb835f01612072565b905060608190508092505050919050565b5f828260405160200161192092919061300d565b60405160208183030381529060405280519060200120905092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61196d6120cb565b565b6119776120cb565b565b6119816120cb565b61198961210b565b565b6119936120cb565b565b5f6119a1825f0161212a565b9050919050565b5f6119b1612139565b90506002815f0154036119f0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815f018190555050565b611a78848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611a3193929190613038565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612160565b50505050565b6060611a8b83835f611ba0565b905092915050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b38484604051602401611ac392919061306d565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611b1184826121fb565b611b9a57611b8f848573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3865f604051602401611b489291906130cd565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612160565b611b998482612160565b5b50505050565b606081471015611be95747826040517fcf479181000000000000000000000000000000000000000000000000000000008152600401611be0929190612cc4565b60405180910390fd5b5f5f8573ffffffffffffffffffffffffffffffffffffffff168486604051611c11919061312e565b5f6040518083038185875af1925050503d805f8114611c4b576040519150601f19603f3d011682016040523d82523d5f602084013e611c50565b606091505b5091509150611c60868383612254565b925050509392505050565b5f611c74612139565b90506001815f018190555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611cf582826108c8565b611d385780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611d2f929190613144565b60405180910390fd5b5050565b5f5f611d46611532565b9050611d5284846108c8565b611e29576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611dc56115bd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611e2e565b5f9150505b92915050565b5f611e59835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6122e1565b905092915050565b5f5f611e6b611532565b9050611e7784846108c8565b15611f4e575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611eea6115bd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611f53565b5f9150505b92915050565b5f611f7e835f018373ffffffffffffffffffffffffffffffffffffffff165f1b612348565b905092915050565b5f611fb27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612444565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fe28261244d565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f8151111561203e576120388282612516565b50612047565b612046612596565b5b5050565b5f825f0182815481106120615761206061316b565b5b905f5260205f200154905092915050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156120bf57602002820191905f5260205f20905b8154815260200190600101908083116120ab575b50505050509050919050565b6120d36125d2565b612109576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6121136120cb565b5f61211c612139565b90506001815f018190555050565b5f815f01805490509050919050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00905090565b5f5f60205f8451602086015f885af18061217f576040513d5f823e3d81fd5b3d92505f519150505f82146121985760018114156121b3565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b156121f557836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016121ec9190612801565b60405180910390fd5b50505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561224957505f821461222d5760018114612248565b5f8673ffffffffffffffffffffffffffffffffffffffff163b115b5b935050505092915050565b6060826122695761226482611475565b6122d9565b5f825114801561228f57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156122d157836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016122c89190612801565b60405180910390fd5b8190506122da565b5b9392505050565b5f6122ec83836125f0565b61233e57825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050612342565b5f90505b92915050565b5f5f836001015f8481526020019081526020015f205490505f8114612439575f6001826123759190612e93565b90505f6001865f018054905061238b9190612e93565b90508082146123f1575f865f0182815481106123aa576123a961316b565b5b905f5260205f200154905080875f0184815481106123cb576123ca61316b565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f0180548061240457612403613198565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061243e565b5f9150505b92915050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036124a857806040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161249f9190612801565b60405180910390fd5b806124d47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612444565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff168460405161253f919061312e565b5f60405180830381855af49150503d805f8114612577576040519150601f19603f3d011682016040523d82523d5f602084013e61257c565b606091505b509150915061258c858383612254565b9250505092915050565b5f3411156125d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6125db61193e565b5f0160089054906101000a900460ff16905090565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61265581612621565b811461265f575f5ffd5b50565b5f813590506126708161264c565b92915050565b5f6020828403121561268b5761268a612619565b5b5f61269884828501612662565b91505092915050565b5f8115159050919050565b6126b5816126a1565b82525050565b5f6020820190506126ce5f8301846126ac565b92915050565b5f819050919050565b6126e6816126d4565b81146126f0575f5ffd5b50565b5f81359050612701816126dd565b92915050565b5f6020828403121561271c5761271b612619565b5b5f612729848285016126f3565b91505092915050565b61273b816126d4565b82525050565b5f6020820190506127545f830184612732565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127838261275a565b9050919050565b61279381612779565b811461279d575f5ffd5b50565b5f813590506127ae8161278a565b92915050565b5f5f604083850312156127ca576127c9612619565b5b5f6127d7858286016126f3565b92505060206127e8858286016127a0565b9150509250929050565b6127fb81612779565b82525050565b5f6020820190506128145f8301846127f2565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61286882612822565b810181811067ffffffffffffffff8211171561288757612886612832565b5b80604052505050565b5f612899612610565b90506128a5828261285f565b919050565b5f67ffffffffffffffff8211156128c4576128c3612832565b5b6128cd82612822565b9050602081019050919050565b828183375f83830152505050565b5f6128fa6128f5846128aa565b612890565b9050828152602081018484840111156129165761291561281e565b5b6129218482856128da565b509392505050565b5f82601f83011261293d5761293c61281a565b5b813561294d8482602086016128e8565b91505092915050565b5f5f6040838503121561296c5761296b612619565b5b5f612979858286016127a0565b925050602083013567ffffffffffffffff81111561299a5761299961261d565b5b6129a685828601612929565b9150509250929050565b5f602082840312156129c5576129c4612619565b5b5f6129d2848285016127a0565b91505092915050565b5f819050919050565b6129ed816129db565b82525050565b5f602082019050612a065f8301846129e4565b92915050565b612a15816129db565b8114612a1f575f5ffd5b50565b5f81359050612a3081612a0c565b92915050565b5f5f60408385031215612a4c57612a4b612619565b5b5f612a59858286016126f3565b9250506020612a6a85828601612a22565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612aa681612779565b82525050565b5f612ab78383612a9d565b60208301905092915050565b5f602082019050919050565b5f612ad982612a74565b612ae38185612a7e565b9350612aee83612a8e565b805f5b83811015612b1e578151612b058882612aac565b9750612b1083612ac3565b925050600181019050612af1565b5085935050505092915050565b5f6020820190508181035f830152612b438184612acf565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612b7d82612b4b565b612b878185612b55565b9350612b97818560208601612b65565b612ba081612822565b840191505092915050565b5f6020820190508181035f830152612bc38184612b73565b905092915050565b5f60208284031215612be057612bdf612619565b5b5f612bed84828501612a22565b91505092915050565b5f5ffd5b5f5ffd5b5f5f83601f840112612c1357612c1261281a565b5b8235905067ffffffffffffffff811115612c3057612c2f612bf6565b5b602083019150836001820283011115612c4c57612c4b612bfa565b5b9250929050565b5f5f5f5f60608587031215612c6b57612c6a612619565b5b5f612c78878288016127a0565b9450506020612c8987828801612a22565b935050604085013567ffffffffffffffff811115612caa57612ca961261d565b5b612cb687828801612bfe565b925092505092959194509250565b5f604082019050612cd75f8301856129e4565b612ce460208301846129e4565b9392505050565b5f81905092915050565b50565b5f612d035f83612ceb565b9150612d0e82612cf5565b5f82019050919050565b5f612d2282612cf8565b9150819050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f612d6b612d66612d6184612d2c565b612d48565b612d35565b9050919050565b612d7b81612d51565b82525050565b5f602082019050612d945f830184612d72565b92915050565b5f81519050612da881612a0c565b92915050565b5f60208284031215612dc357612dc2612619565b5b5f612dd084828501612d9a565b91505092915050565b5f604082019050612dec5f8301856129e4565b612df960208301846127f2565b9392505050565b5f612e0a82612779565b9050919050565b612e1a81612e00565b8114612e24575f5ffd5b50565b5f81519050612e3581612e11565b92915050565b5f60208284031215612e5057612e4f612619565b5b5f612e5d84828501612e27565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9d826129db565b9150612ea8836129db565b9250828203905081811115612ec057612ebf612e66565b5b92915050565b5f604082019050612ed95f8301856127f2565b612ee660208301846127f2565b9392505050565b5f612ef7826129db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f2957612f28612e66565b5b600182019050919050565b5f606082019050612f475f8301866129e4565b612f5460208301856129e4565b612f6160408301846129e4565b949350505050565b5f81519050612f77816126dd565b92915050565b5f60208284031215612f9257612f91612619565b5b5f612f9f84828501612f69565b91505092915050565b5f8160601b9050919050565b5f612fbe82612fa8565b9050919050565b5f612fcf82612fb4565b9050919050565b612fe7612fe282612779565b612fc5565b82525050565b5f819050919050565b613007613002826129db565b612fed565b82525050565b5f6130188285612fd6565b6014820191506130288284612ff6565b6020820191508190509392505050565b5f60608201905061304b5f8301866127f2565b61305860208301856127f2565b61306560408301846129e4565b949350505050565b5f6040820190506130805f8301856127f2565b61308d60208301846129e4565b9392505050565b5f819050919050565b5f6130b76130b26130ad84613094565b612d48565b6129db565b9050919050565b6130c78161309d565b82525050565b5f6040820190506130e05f8301856127f2565b6130ed60208301846130be565b9392505050565b5f81519050919050565b5f613108826130f4565b6131128185612ceb565b9350613122818560208601612b65565b80840191505092915050565b5f61313982846130fe565b915081905092915050565b5f6040820190506131575f8301856127f2565b6131646020830184612732565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d1b04c623c7bd498d76d0ee555986183a8ab993b94a43c6ade5132ee8a74c22e64736f6c634300081d00336d69746f7369732e73746f726167652e4c6946694d6967726174696f6e48656c7065720000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae