0 txs
0 calls
constructor
constructor(address _token, address _endpoint, address _owner)
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
allowInitializePath
viewfunction allowInitializePath(tuple origin) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
endpoint
viewfunction endpoint() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isComposeMsgSender
viewfunction isComposeMsgSender(tuple, bytes, address _sender) view returns (bool)
nextNonce
viewfunction nextNonce(uint32, bytes32) view returns (uint64 nonce)
oAppVersion
purefunction oAppVersion() pure returns (uint64 senderVersion, uint64 receiverVersion)
owner
viewfunction owner() view returns (address)
peers
viewfunction peers(uint32 eid) view returns (bytes32 peer)
quote
viewfunction quote(uint32 _dstEid, uint256 _amount, bytes _targetData, bytes _options, bool _payInLzToken) view returns (tuple fee)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
USDC_ADDRESS
viewfunction USDC_ADDRESS() view returns (address)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
lzReceive
payablefunction lzReceive(tuple _origin, bytes32 _guid, bytes _message, address _executor, bytes _extraData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
send
payablefunction send(uint32 _dstEid, uint256 _amount, bytes _targetData, bytes _options) payable
setDelegate
nonpayablefunction setDelegate(address _delegate)
setPeer
nonpayablefunction setPeer(uint32 _eid, bytes32 _peer)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(uint256 amount)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PeerSet
event PeerSet(uint32 eid, bytes32 peer)
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)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidDelegate
error InvalidDelegate()
InvalidEndpointCall
error InvalidEndpointCall()
LzTokenUnavailable
error LzTokenUnavailable()
NoPeer
error NoPeer(uint32 eid)
NotEnoughNative
error NotEnoughNative(uint256 msgValue)
OnlyEndpoint
error OnlyEndpoint(address addr)
OnlyPeer
error OnlyPeer(uint32 eid, bytes32 sender)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162003da538038062003da583398181016040528101906200003791906200050b565b8181818184600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b15760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a8919062000578565b60405180910390fd5b620000c2816200026660201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200015e576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60805173ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016200019b919062000578565b600060405180830381600087803b158015620001b657600080fd5b505af1158015620001cb573d6000803e3d6000fd5b505050505050505082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002296000801b336200032a60201b60201c565b506200025c7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336200032a60201b60201c565b5050505062000595565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006200033e83836200042e60201b60201c565b620004235760016002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003bf6200049960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905062000428565b600090505b92915050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004d382620004a6565b9050919050565b620004e581620004c6565b8114620004f157600080fd5b50565b6000815190506200050581620004da565b92915050565b600080600060608486031215620005275762000526620004a1565b5b60006200053786828701620004f4565b93505060206200054a86828701620004f4565b92505060406200055d86828701620004f4565b9150509250925092565b6200057281620004c6565b82525050565b60006020820190506200058f600083018462000567565b92915050565b6080516137ca620005db600039600081816106d40152818161093c015281816109c801528181610bca01528181610ddf01528181611539015261163401526137ca6000f3fe60806040526004361061014b5760003560e01c8063769887bd116100b6578063bb09d9b71161006f578063bb09d9b714610489578063bb0b6a53146104b4578063ca5eb5e1146104f1578063d547741f1461051a578063f2fde38b14610543578063ff7bd03d1461056c5761014b565b8063769887bd1461033f5780637d25a05e1461037c57806382413eac146103b95780638da5cb5b146103f657806391d1485414610421578063a217fddf1461045e5761014b565b80632f2ff15d116101085780632f2ff15d146102575780633400288b1461028057806336568abe146102a95780635e280f11146102d2578063715018a6146102fd57806375b238fc146103145761014b565b806301ffc9a7146101505780630e4cba701461018d57806313137d65146101a957806317442b70146101c5578063248a9ca3146101f15780632e1a7d4d1461022e575b600080fd5b34801561015c57600080fd5b506101776004803603810190610172919061238b565b6105a9565b60405161018491906123d3565b60405180910390f35b6101a760048036038101906101a291906124c5565b610623565b005b6101c360048036038101906101be9190612624565b6106bb565b005b3480156101d157600080fd5b506101da6107dd565b6040516101e8929190612703565b60405180910390f35b3480156101fd57600080fd5b506102186004803603810190610213919061272c565b6107ec565b6040516102259190612768565b60405180910390f35b34801561023a57600080fd5b5061025560048036038101906102509190612783565b61080c565b005b34801561026357600080fd5b5061027e600480360381019061027991906127b0565b610887565b005b34801561028c57600080fd5b506102a760048036038101906102a291906127f0565b6108a9565b005b3480156102b557600080fd5b506102d060048036038101906102cb91906127b0565b6108bf565b005b3480156102de57600080fd5b506102e761093a565b6040516102f4919061288f565b60405180910390f35b34801561030957600080fd5b5061031261095e565b005b34801561032057600080fd5b50610329610972565b6040516103369190612768565b60405180910390f35b34801561034b57600080fd5b5061036660048036038101906103619190612a17565b610996565b6040516103739190612b0b565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906127f0565b610aa4565b6040516103b09190612b26565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190612b41565b610aac565b6040516103ed91906123d3565b60405180910390f35b34801561040257600080fd5b5061040b610ae7565b6040516104189190612bc4565b60405180910390f35b34801561042d57600080fd5b50610448600480360381019061044391906127b0565b610b10565b60405161045591906123d3565b60405180910390f35b34801561046a57600080fd5b50610473610b7b565b6040516104809190612768565b60405180910390f35b34801561049557600080fd5b5061049e610b82565b6040516104ab9190612bc4565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190612bdf565b610ba8565b6040516104e89190612768565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612c0c565b610bc0565b005b34801561052657600080fd5b50610541600480360381019061053c91906127b0565b610c56565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612c0c565b610c78565b005b34801561057857600080fd5b50610593600480360381019061058e9190612c39565b610cfe565b6040516105a091906123d3565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061061c575061061b82610d3f565b5b9050919050565b600085858560405160200161063a93929190612cb3565b60405160208183030381529060405290506106b1878285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506040518060400160405280348152602001600081525033610da9565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461074b57336040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081526004016107429190612bc4565b60405180910390fd5b866020013561076b8860000160208101906107669190612bdf565b610ec5565b146107c5578660000160208101906107839190612bdf565b87602001356040517fc26bebcc0000000000000000000000000000000000000000000000000000000081526004016107bc929190612cf4565b60405180910390fd5b6107d487878787878787610f3a565b50505050505050565b60008060016002915091509091565b600060026000838152602001908152602001600020600101549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610836816110bb565b6108833383600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110cf9092919063ffffffff16565b5050565b610890826107ec565b610899816110bb565b6108a3838361114e565b50505050565b6108b1611240565b6108bb82826112c7565b5050565b6108c7611328565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461092b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109358282611330565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610966611240565b6109706000611423565b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b61099e6122d1565b60008686866040516020016109b593929190612cb3565b60405160208183030381529060405290507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808b63ffffffff168152602001610a228c610ec5565b8152602001848152602001878152602001861515815250306040518363ffffffff1660e01b8152600401610a57929190612e46565b6040805180830381865afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190612ee0565b9150509695505050505050565b600092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b610bc8611240565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b8152600401610c219190612bc4565b600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b5050505050565b610c5f826107ec565b610c68816110bb565b610c728383611330565b50505050565b610c80611240565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf25760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ce99190612bc4565b60405180910390fd5b610cfb81611423565b50565b6000816020013560016000846000016020810190610d1c9190612bdf565b63ffffffff1663ffffffff16815260200190815260200160002054149050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610db16122eb565b6000610dc084600001516114e7565b9050600084602001511115610ddd57610ddc8460200151611535565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001610e3a8c610ec5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401610e76929190612e46565b60806040518083038185885af1158015610e94573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eb99190612fb2565b91505095945050505050565b600080600160008463ffffffff1663ffffffff1681526020019081526020016000205490506000801b8103610f3157826040517ff6ff4fb7000000000000000000000000000000000000000000000000000000008152600401610f289190612fdf565b60405180910390fd5b80915050919050565b600060608686810190610f4d9190612ffa565b809250819350505060008082806020019051810190610f6c9190613104565b91509150610fbd8285600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661167f9092919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610fe5919061319c565b6000604051808303816000865af19150503d8060008114611022576040519150601f19603f3d011682016040523d82523d6000602084013e611027565b606091505b5091509150816110ac57611070816040518060400160405280600d81526020017f546f6f6246696e616e63653a200000000000000000000000000000000000000081525061178e565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a39190613208565b60405180910390fd5b50505050505050505050505050565b6110cc816110c7611328565b611bee565b50565b611149838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161110292919061322a565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c3f565b505050565b600061115a8383610b10565b6112355760016002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111d2611328565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061123a565b600090505b92915050565b611248611328565b73ffffffffffffffffffffffffffffffffffffffff16611266610ae7565b73ffffffffffffffffffffffffffffffffffffffff16146112c557611289611328565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016112bc9190612bc4565b60405180910390fd5b565b80600160008463ffffffff1663ffffffff168152602001908152602001600020819055507f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b828260405161131c929190612cf4565b60405180910390a15050565b600033905090565b600061133c8383610b10565b156114185760006002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b5611328565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141d565b600090505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081341461152d57346040517f9f7041200000000000000000000000000000000000000000000000000000000081526004016115249190613253565b60405180910390fd5b819050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c69190613283565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361162e576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167b337f0000000000000000000000000000000000000000000000000000000000000000848473ffffffffffffffffffffffffffffffffffffffff16611cd6909392919063ffffffff16565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040516024016116b092919061322a565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506116fe8482611d58565b6117885761177d848573ffffffffffffffffffffffffffffffffffffffff1663095ea7b38660006040516024016117369291906132eb565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c3f565b6117878482611c3f565b5b50505050565b6060604483511015801561180157507f0800000000000000000000000000000000000000000000000000000000000000836000815181106117d2576117d1613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b801561186c57507fc3000000000000000000000000000000000000000000000000000000000000008360018151811061183d5761183c613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80156118d757507f7900000000000000000000000000000000000000000000000000000000000000836002815181106118a8576118a7613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b801561194257507fa0000000000000000000000000000000000000000000000000000000000000008360038151811061191357611912613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156119ca5760606044840190508051604461195d9190613372565b845110156119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906133f2565b60405180910390fd5b82816040516020016119b39291906134e6565b604051602081830303815290604052915050611be8565b60248351148015611a3a57507f4e0000000000000000000000000000000000000000000000000000000000000083600081518110611a0b57611a0a613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8015611aa557507f480000000000000000000000000000000000000000000000000000000000000083600181518110611a7657611a75613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8015611b1057507f7b0000000000000000000000000000000000000000000000000000000000000083600281518110611ae157611ae0613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8015611b7b57507f710000000000000000000000000000000000000000000000000000000000000083600381518110611b4c57611b4b613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15611bbb5760006024840151905082611b9382611e1f565b604051602001611ba492919061356c565b604051602081830303815290604052915050611be8565b81611bc584611e50565b604051602001611bd69291906135f2565b60405160208183030381529060405290505b92915050565b611bf88282610b10565b611c3b5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611c3292919061362c565b60405180910390fd5b5050565b6000611c6a828473ffffffffffffffffffffffffffffffffffffffff1661211a90919063ffffffff16565b90506000815114158015611c8f575080806020019051810190611c8d919061366a565b155b15611cd157826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611cc89190612bc4565b60405180910390fd5b505050565b611d52848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611d0b93929190613697565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c3f565b50505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1684604051611d82919061319c565b6000604051808303816000865af19150503d8060008114611dbf576040519150601f19603f3d011682016040523d82523d6000602084013e611dc4565b606091505b5091509150818015611df25750600081511480611df1575080806020019051810190611df0919061366a565b5b5b8015611e15575060008573ffffffffffffffffffffffffffffffffffffffff163b115b9250505092915050565b6060611e4982604051602001611e3591906136ef565b604051602081830303815290604052611e50565b9050919050565b606060006f3031323334353637383961626364656660801b9050600060028451611e7a919061370a565b6002611e869190613372565b67ffffffffffffffff811115611e9f57611e9e6128c0565b5b6040519080825280601f01601f191660200182016040528015611ed15781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611f0957611f08613314565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611f6d57611f6c613314565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b845181101561210f57826004868381518110611fbe57611fbd613314565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff166010811061200457612003613314565b5b1a60f81b826002836002612018919061370a565b6120229190613372565b8151811061203357612032613314565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f60f81b86838151811061207b5761207a613314565b5b602001015160f81c60f81b1660f81c60ff166010811061209e5761209d613314565b5b1a60f81b8260038360026120b2919061370a565b6120bc9190613372565b815181106120cd576120cc613314565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806121079061374c565b915050611f9f565b508092505050919050565b606061212883836000612130565b905092915050565b60608147101561217757306040517fcd78605900000000000000000000000000000000000000000000000000000000815260040161216e9190612bc4565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516121a0919061319c565b60006040518083038185875af1925050503d80600081146121dd576040519150601f19603f3d011682016040523d82523d6000602084013e6121e2565b606091505b50915091506121f28683836121fd565b925050509392505050565b6060826122125761220d8261228c565b612284565b6000825114801561223a575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561227c57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016122739190612bc4565b60405180910390fd5b819050612285565b5b9392505050565b60008151111561229f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016123196122d1565b81525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61236881612333565b811461237357600080fd5b50565b6000813590506123858161235f565b92915050565b6000602082840312156123a1576123a0612329565b5b60006123af84828501612376565b91505092915050565b60008115159050919050565b6123cd816123b8565b82525050565b60006020820190506123e860008301846123c4565b92915050565b600063ffffffff82169050919050565b612407816123ee565b811461241257600080fd5b50565b600081359050612424816123fe565b92915050565b6000819050919050565b61243d8161242a565b811461244857600080fd5b50565b60008135905061245a81612434565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261248557612484612460565b5b8235905067ffffffffffffffff8111156124a2576124a1612465565b5b6020830191508360018202830111156124be576124bd61246a565b5b9250929050565b600080600080600080608087890312156124e2576124e1612329565b5b60006124f089828a01612415565b965050602061250189828a0161244b565b955050604087013567ffffffffffffffff8111156125225761252161232e565b5b61252e89828a0161246f565b9450945050606087013567ffffffffffffffff8111156125515761255061232e565b5b61255d89828a0161246f565b92509250509295509295509295565b600080fd5b6000606082840312156125875761258661256c565b5b81905092915050565b6000819050919050565b6125a381612590565b81146125ae57600080fd5b50565b6000813590506125c08161259a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f1826125c6565b9050919050565b612601816125e6565b811461260c57600080fd5b50565b60008135905061261e816125f8565b92915050565b600080600080600080600060e0888a03121561264357612642612329565b5b60006126518a828b01612571565b97505060606126628a828b016125b1565b965050608088013567ffffffffffffffff8111156126835761268261232e565b5b61268f8a828b0161246f565b955095505060a06126a28a828b0161260f565b93505060c088013567ffffffffffffffff8111156126c3576126c261232e565b5b6126cf8a828b0161246f565b925092505092959891949750929550565b600067ffffffffffffffff82169050919050565b6126fd816126e0565b82525050565b600060408201905061271860008301856126f4565b61272560208301846126f4565b9392505050565b60006020828403121561274257612741612329565b5b6000612750848285016125b1565b91505092915050565b61276281612590565b82525050565b600060208201905061277d6000830184612759565b92915050565b60006020828403121561279957612798612329565b5b60006127a78482850161244b565b91505092915050565b600080604083850312156127c7576127c6612329565b5b60006127d5858286016125b1565b92505060206127e68582860161260f565b9150509250929050565b6000806040838503121561280757612806612329565b5b600061281585828601612415565b9250506020612826858286016125b1565b9150509250929050565b6000819050919050565b600061285561285061284b846125c6565b612830565b6125c6565b9050919050565b60006128678261283a565b9050919050565b60006128798261285c565b9050919050565b6128898161286e565b82525050565b60006020820190506128a46000830184612880565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128f8826128af565b810181811067ffffffffffffffff82111715612917576129166128c0565b5b80604052505050565b600061292a61231f565b905061293682826128ef565b919050565b600067ffffffffffffffff821115612956576129556128c0565b5b61295f826128af565b9050602081019050919050565b82818337600083830152505050565b600061298e6129898461293b565b612920565b9050828152602081018484840111156129aa576129a96128aa565b5b6129b584828561296c565b509392505050565b600082601f8301126129d2576129d1612460565b5b81356129e284826020860161297b565b91505092915050565b6129f4816123b8565b81146129ff57600080fd5b50565b600081359050612a11816129eb565b92915050565b60008060008060008060a08789031215612a3457612a33612329565b5b6000612a4289828a01612415565b9650506020612a5389828a0161244b565b955050604087013567ffffffffffffffff811115612a7457612a7361232e565b5b612a8089828a0161246f565b9450945050606087013567ffffffffffffffff811115612aa357612aa261232e565b5b612aaf89828a016129bd565b9250506080612ac089828a01612a02565b9150509295509295509295565b612ad68161242a565b82525050565b604082016000820151612af26000850182612acd565b506020820151612b056020850182612acd565b50505050565b6000604082019050612b206000830184612adc565b92915050565b6000602082019050612b3b60008301846126f4565b92915050565b60008060008060a08587031215612b5b57612b5a612329565b5b6000612b6987828801612571565b945050606085013567ffffffffffffffff811115612b8a57612b8961232e565b5b612b968782880161246f565b93509350506080612ba98782880161260f565b91505092959194509250565b612bbe816125e6565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600060208284031215612bf557612bf4612329565b5b6000612c0384828501612415565b91505092915050565b600060208284031215612c2257612c21612329565b5b6000612c308482850161260f565b91505092915050565b600060608284031215612c4f57612c4e612329565b5b6000612c5d84828501612571565b91505092915050565b612c6f8161242a565b82525050565b600082825260208201905092915050565b6000612c928385612c75565b9350612c9f83858461296c565b612ca8836128af565b840190509392505050565b6000604082019050612cc86000830186612c66565b8181036020830152612cdb818486612c86565b9050949350505050565b612cee816123ee565b82525050565b6000604082019050612d096000830185612ce5565b612d166020830184612759565b9392505050565b612d26816123ee565b82525050565b612d3581612590565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d75578082015181840152602081019050612d5a565b60008484015250505050565b6000612d8c82612d3b565b612d968185612d46565b9350612da6818560208601612d57565b612daf816128af565b840191505092915050565b612dc3816123b8565b82525050565b600060a083016000830151612de16000860182612d1d565b506020830151612df46020860182612d2c565b5060408301518482036040860152612e0c8282612d81565b91505060608301518482036060860152612e268282612d81565b9150506080830151612e3b6080860182612dba565b508091505092915050565b60006040820190508181036000830152612e608185612dc9565b9050612e6f6020830184612bb5565b9392505050565b600080fd5b600081519050612e8a81612434565b92915050565b600060408284031215612ea657612ea5612e76565b5b612eb06040612920565b90506000612ec084828501612e7b565b6000830152506020612ed484828501612e7b565b60208301525092915050565b600060408284031215612ef657612ef5612329565b5b6000612f0484828501612e90565b91505092915050565b600081519050612f1c8161259a565b92915050565b612f2b816126e0565b8114612f3657600080fd5b50565b600081519050612f4881612f22565b92915050565b600060808284031215612f6457612f63612e76565b5b612f6e6060612920565b90506000612f7e84828501612f0d565b6000830152506020612f9284828501612f39565b6020830152506040612fa684828501612e90565b60408301525092915050565b600060808284031215612fc857612fc7612329565b5b6000612fd684828501612f4e565b91505092915050565b6000602082019050612ff46000830184612ce5565b92915050565b6000806040838503121561301157613010612329565b5b600061301f8582860161244b565b925050602083013567ffffffffffffffff8111156130405761303f61232e565b5b61304c858286016129bd565b9150509250929050565b6000613061826125c6565b9050919050565b61307181613056565b811461307c57600080fd5b50565b60008151905061308e81613068565b92915050565b60006130a76130a28461293b565b612920565b9050828152602081018484840111156130c3576130c26128aa565b5b6130ce848285612d57565b509392505050565b600082601f8301126130eb576130ea612460565b5b81516130fb848260208601613094565b91505092915050565b6000806040838503121561311b5761311a612329565b5b60006131298582860161307f565b925050602083015167ffffffffffffffff81111561314a5761314961232e565b5b613156858286016130d6565b9150509250929050565b600081905092915050565b600061317682612d3b565b6131808185613160565b9350613190818560208601612d57565b80840191505092915050565b60006131a8828461316b565b915081905092915050565b600081519050919050565b600082825260208201905092915050565b60006131da826131b3565b6131e481856131be565b93506131f4818560208601612d57565b6131fd816128af565b840191505092915050565b6000602082019050818103600083015261322281846131cf565b905092915050565b600060408201905061323f6000830185612bb5565b61324c6020830184612c66565b9392505050565b60006020820190506132686000830184612c66565b92915050565b60008151905061327d816125f8565b92915050565b60006020828403121561329957613298612329565b5b60006132a78482850161326e565b91505092915050565b6000819050919050565b60006132d56132d06132cb846132b0565b612830565b61242a565b9050919050565b6132e5816132ba565b82525050565b60006040820190506133006000830185612bb5565b61330d60208301846132dc565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061337d8261242a565b91506133888361242a565b92508282019050808211156133a05761339f613343565b5b92915050565b7f496e76616c69642072657665727420726561736f6e0000000000000000000000600082015250565b60006133dc6015836131be565b91506133e7826133a6565b602082019050919050565b6000602082019050818103600083015261340b816133cf565b9050919050565b600081905092915050565b6000613428826131b3565b6134328185613412565b9350613442818560208601612d57565b80840191505092915050565b7f4572726f72280000000000000000000000000000000000000000000000000000600082015250565b6000613484600683613412565b915061348f8261344e565b600682019050919050565b7f2900000000000000000000000000000000000000000000000000000000000000600082015250565b60006134d0600183613412565b91506134db8261349a565b600182019050919050565b60006134f2828561341d565b91506134fd82613477565b9150613509828461341d565b9150613514826134c3565b91508190509392505050565b7f50616e6963280000000000000000000000000000000000000000000000000000600082015250565b6000613556600683613412565b915061356182613520565b600682019050919050565b6000613578828561341d565b915061358382613549565b915061358f828461341d565b915061359a826134c3565b91508190509392505050565b7f556e6b6e6f776e28000000000000000000000000000000000000000000000000600082015250565b60006135dc600883613412565b91506135e7826135a6565b600882019050919050565b60006135fe828561341d565b9150613609826135cf565b9150613615828461341d565b9150613620826134c3565b91508190509392505050565b60006040820190506136416000830185612bb5565b61364e6020830184612759565b9392505050565b600081519050613664816129eb565b92915050565b6000602082840312156136805761367f612329565b5b600061368e84828501613655565b91505092915050565b60006060820190506136ac6000830186612bb5565b6136b96020830185612bb5565b6136c66040830184612c66565b949350505050565b6000819050919050565b6136e96136e48261242a565b6136ce565b82525050565b60006136fb82846136d8565b60208201915081905092915050565b60006137158261242a565b91506137208361242a565b925082820261372e8161242a565b9150828204841483151761374557613744613343565b5b5092915050565b60006137578261242a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361378957613788613343565b5b60018201905091905056fea2646970667358221220c3f78236586e82e3f1b824ba1ea7731b99f1c09ea4a92cbc37b2909a1042e14064736f6c63430008130033000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000001a44076050125825900e736c501f859c50fe728c0000000000000000000000000a6f13a3f415316174f9c216cfa274343fe0f150