0 txs
1 call
constructor
constructor(uint32 _domain)
functions
defaultHook
viewfunction defaultHook() view returns (address)
defaultIsm
viewfunction defaultIsm() view returns (address)
delivered
viewfunction delivered(bytes32 _id) view returns (bool)
deployedBlock
viewfunction deployedBlock() view returns (uint256)
excludeArtifacts
viewfunction excludeArtifacts() view returns (string[] excludedArtifacts_)
excludeContracts
viewfunction excludeContracts() view returns (address[] excludedContracts_)
excludeSelectors
viewfunction excludeSelectors() view returns (tuple[] excludedSelectors_)
excludeSenders
viewfunction excludeSenders() view returns (address[] excludedSenders_)
failed
viewfunction failed() view returns (bool)
forkId
viewfunction forkId(uint32) view returns (uint256)
inboundMessages
viewfunction inboundMessages(uint256) view returns (bytes)
inboundProcessedNonce
viewfunction inboundProcessedNonce() view returns (uint32)
inboundUnprocessedNonce
viewfunction inboundUnprocessedNonce() view returns (uint32)
IS_TEST
viewfunction IS_TEST() view returns (bool)
latestDispatchedId
viewfunction latestDispatchedId() view returns (bytes32)
localDomain
viewfunction localDomain() view returns (uint32)
nonce
viewfunction nonce() view returns (uint32)
owner
viewfunction owner() view returns (address)
processedAt
viewfunction processedAt(bytes32 _id) view returns (uint48)
processor
viewfunction processor(bytes32 _id) view returns (address)
quoteDispatch
viewfunction quoteDispatch(uint32 destinationDomain, bytes32 recipientAddress, bytes messageBody, bytes defaultHookMetadata) view returns (uint256 fee)
quoteDispatch
viewfunction quoteDispatch(uint32 destinationDomain, bytes32 recipientAddress, bytes messageBody, bytes metadata, address hook) view returns (uint256 fee)
quoteDispatch
viewfunction quoteDispatch(uint32 destinationDomain, bytes32 recipientAddress, bytes messageBody) view returns (uint256 fee)
recipientIsm
viewfunction recipientIsm(address _recipient) view returns (address)
remoteMailboxes
viewfunction remoteMailboxes(uint32) view returns (address)
requiredHook
viewfunction requiredHook() view returns (address)
targetArtifacts
viewfunction targetArtifacts() view returns (string[] targetedArtifacts_)
targetArtifactSelectors
viewfunction targetArtifactSelectors() view returns (tuple[] targetedArtifactSelectors_)
targetContracts
viewfunction targetContracts() view returns (address[] targetedContracts_)
targetInterfaces
viewfunction targetInterfaces() view returns (tuple[] targetedInterfaces_)
targetSelectors
viewfunction targetSelectors() view returns (tuple[] targetedSelectors_)
targetSenders
viewfunction targetSenders() view returns (address[] targetedSenders_)
VERSION
viewfunction VERSION() view returns (uint8)
addInboundMessage
nonpayablefunction addInboundMessage(bytes message)
addRemoteMailbox
nonpayablefunction addRemoteMailbox(uint32 _domain, address _mailbox)
dispatch
payablefunction dispatch(uint32 _destinationDomain, bytes32 _recipientAddress, bytes _messageBody) payable returns (bytes32)
dispatch
payablefunction dispatch(uint32 destinationDomain, bytes32 recipientAddress, bytes messageBody, bytes hookMetadata) payable returns (bytes32)
dispatch
payablefunction dispatch(uint32 destinationDomain, bytes32 recipientAddress, bytes messageBody, bytes metadata, address hook) payable returns (bytes32)
initialize
nonpayablefunction initialize(address _owner, address _defaultIsm, address _defaultHook, address _requiredHook)
process
payablefunction process(bytes _metadata, bytes _message) payable
processNextInboundMessage
nonpayablefunction processNextInboundMessage()
renounceOwnership
nonpayablefunction renounceOwnership()
setDefaultHook
nonpayablefunction setDefaultHook(address _hook)
setDefaultIsm
nonpayablefunction setDefaultIsm(address _module)
setDomainForkId
nonpayablefunction setDomainForkId(uint32 _domain, uint256 _forkId)
setRequiredHook
nonpayablefunction setRequiredHook(address _hook)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DefaultHookSet
event DefaultHookSet(address indexed hook)
DefaultIsmSet
event DefaultIsmSet(address indexed module)
Dispatch
event Dispatch(address indexed sender, uint32 indexed destination, bytes32 indexed recipient, bytes message)
DispatchId
event DispatchId(bytes32 indexed messageId)
Initialized
event Initialized(uint8 version)
log_address
event log_address(address)
log_array
event log_array(address[] val)
log_array
event log_array(int256[] val)
log_array
event log_array(uint256[] val)
log_bytes
event log_bytes(bytes)
log_bytes32
event log_bytes32(bytes32)
log_int
event log_int(int256)
log_named_address
event log_named_address(string key, address val)
log_named_array
event log_named_array(string key, address[] val)
log_named_array
event log_named_array(string key, int256[] val)
log_named_array
event log_named_array(string key, uint256[] val)
log_named_bytes
event log_named_bytes(string key, bytes val)
log_named_bytes32
event log_named_bytes32(string key, bytes32 val)
log_named_decimal_int
event log_named_decimal_int(string key, int256 val, uint256 decimals)
log_named_decimal_uint
event log_named_decimal_uint(string key, uint256 val, uint256 decimals)
log_named_int
event log_named_int(string key, int256 val)
log_named_string
event log_named_string(string key, string val)
log_named_uint
event log_named_uint(string key, uint256 val)
log_string
event log_string(string)
log_uint
event log_uint(uint256)
log
event log(string)
logs
event logs(bytes)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Process
event Process(uint32 indexed origin, bytes32 indexed sender, address indexed recipient)
ProcessId
event ProcessId(bytes32 indexed messageId)
RequiredHookSet
event RequiredHookSet(address indexed hook)
errors
No errors.
creation bytecode
0x60c06040526077805460ff19166001908117909155608a80546001600160481b0319169091179055348015610032575f5ffd5b506040516136ab3803806136ab8339810160408190526100519161023a565b4360805263ffffffff811660a0526040515f9061006d90610220565b604051809103905ff080158015610086573d5f5f3e3d5ffd5b50606780546001600160a01b0319166001600160a01b0383161790556040519091505f906100b39061022d565b604051809103905ff0801580156100cc573d5f5f3e3d5ffd5b50606880546001600160a01b0383166001600160a01b03199182168117909255606980549091169091179055905061010333610113565b61010b610164565b505050610264565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16156101cf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461021e575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6101f68061316c83390190565b6103498061336283390190565b5f6020828403121561024a575f5ffd5b815163ffffffff8116811461025d575f5ffd5b9392505050565b60805160a051612ed96102935f395f8181610619015281816111fe0152611fe001525f6105c50152612ed95ff3fe608060405260043610610280575f3560e01c806385226c8111610155578063d12164e4116100be578063f794687a11610078578063f794687a14610851578063f7ccd32114610870578063f8c8765e1461088f578063fa31de01146108ae578063fa7626d4146108c1578063ffa1ad74146108da575f5ffd5b8063d12164e41461077f578063d6d08a09146107a4578063e20c9f71146107c3578063e495f1d4146107d7578063e70f48ac14610813578063f2fde38b14610832575f5ffd5b80639c42bd181161010f5780639c42bd18146106c4578063a3b4919f146106e3578063affed0e014610717578063b0464fdc14610733578063b5508aa914610747578063ba414fa61461075b575f5ffd5b806385226c81146105e75780638d3638f4146106085780638da5cb5b1461063b578063916a17c61461065857806392d28b3d1461067957806399b04809146106a5575f5ffd5b80633e5e3c23116101f75780636e5f516e116101b15780636e5f516e14610519578063715018a6146105385780637c39d1301461054c57806381d2ea951461055f5780638209d3121461057e57806382ea7bfe146105b4575f5ffd5b80633e5e3c231461043a5780633f7286f41461044e57806348aee8d41461046257806359b3f6e0146104755780635d1fe5a9146104c457806366d9a9a0146104f8575f5ffd5b80631605c306116102485780631605c306146103635780631ed7831c146103775780632ade3880146103985780632e76bd3d146103b95780633288990c146103e45780633d1250b714610403575f5ffd5b80630642ec0f1461028457806307a2fda1146102b857806310b83dc01461030e578063134fbb4f1461032f5780631426b7f414610344575b5f5ffd5b34801561028f575f5ffd5b506102b661029e36600461243f565b63ffffffff9091165f908152608d6020526040902055565b005b3480156102c3575f5ffd5b506102f26102d2366004612467565b5f908152606a6020526040902054600160a01b900465ffffffffffff1690565b60405165ffffffffffff90911681526020015b60405180910390f35b61032161031c3660046124d0565b610900565b604051908152602001610305565b34801561033a575f5ffd5b5061032160665481565b34801561034f575f5ffd5b506102b661035e36600461256c565b610b57565b34801561036e575f5ffd5b506102b6610c0b565b348015610382575f5ffd5b5061038b610d46565b6040516103059190612587565b3480156103a3575f5ffd5b506103ac610da6565b604051610305919061265a565b3480156103c4575f5ffd5b506103216103d33660046126dd565b608d6020525f908152604090205481565b3480156103ef575f5ffd5b506102b66103fe3660046126f6565b610ee2565b34801561040e575f5ffd5b50606854610422906001600160a01b031681565b6040516001600160a01b039091168152602001610305565b348015610445575f5ffd5b5061038b610f47565b348015610459575f5ffd5b5061038b610fa5565b610321610470366004612735565b611003565b348015610480575f5ffd5b506102b661048f3660046127be565b63ffffffff919091165f908152608b6020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b3480156104cf575f5ffd5b506104226104de366004612467565b5f908152606a60205260409020546001600160a01b031690565b348015610503575f5ffd5b5061050c611032565b6040516103059190612837565b348015610524575f5ffd5b50606754610422906001600160a01b031681565b348015610543575f5ffd5b506102b6611196565b6102b661055a3660046128b5565b6111a9565b34801561056a575f5ffd5b506103216105793660046124d0565b611552565b348015610589575f5ffd5b50608a5461059f90610100900463ffffffff1681565b60405163ffffffff9091168152602001610305565b3480156105bf575f5ffd5b506103217f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f2575f5ffd5b506105fb611679565b6040516103059190612921565b348015610613575f5ffd5b5061059f7f000000000000000000000000000000000000000000000000000000000000000081565b348015610646575f5ffd5b506033546001600160a01b0316610422565b348015610663575f5ffd5b5061066c611744565b6040516103059190612933565b348015610684575f5ffd5b50610698610693366004612467565b611825565b60405161030591906129aa565b3480156106b0575f5ffd5b506102b66106bf36600461256c565b6118bc565b3480156106cf575f5ffd5b506103216106de3660046129bc565b61196f565b3480156106ee575f5ffd5b506104226106fd3660046126dd565b608b6020525f90815260409020546001600160a01b031681565b348015610722575f5ffd5b5060655461059f9063ffffffff1681565b34801561073e575f5ffd5b5061066c61199d565b348015610752575f5ffd5b506105fb611a7e565b348015610766575f5ffd5b5061076f611b49565b6040519015158152602001610305565b34801561078a575f5ffd5b50608a5461059f9065010000000000900463ffffffff1681565b3480156107af575f5ffd5b50606954610422906001600160a01b031681565b3480156107ce575f5ffd5b5061038b611be9565b3480156107e2575f5ffd5b5061076f6107f1366004612467565b5f908152606a6020526040902054600160a01b900465ffffffffffff16151590565b34801561081e575f5ffd5b5061042261082d36600461256c565b611c47565b34801561083d575f5ffd5b506102b661084c36600461256c565b611d24565b34801561085c575f5ffd5b506102b661086b36600461256c565b611d9d565b34801561087b575f5ffd5b5061032161088a366004612735565b611e4f565b34801561089a575f5ffd5b506102b66108a93660046129fa565b611e73565b6103216108bc3660046129bc565b611fa6565b3480156108cc575f5ffd5b50608a5461076f9060ff1681565b3480156108e5575f5ffd5b506108ee600381565b60405160ff9091168152602001610305565b5f5f61090e89898989611fcb565b90505f6109208a8a8a8a8a8a8a612009565b63ffffffff8b165f908152608b60205260409020549091506001600160a01b03168061098c5760405162461bcd60e51b815260206004820152601660248201527509ad2e6e6d2dcce40e4cadadee8ca40dac2d2d8c4def60531b60448201526064015b60405180910390fd5b5f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316632f103f226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109eb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612a53565b63ffffffff8d165f908152608d602052604090819020549051639ebf682760e01b8152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d91639ebf682791610a619160040190815260200190565b5f604051808303815f87803b158015610a78575f5ffd5b505af1158015610a8a573d5f5f3e3d5ffd5b5050604051630ca2264360e21b81526001600160a01b0385169250633288990c9150610aba9087906004016129aa565b5f604051808303815f87803b158015610ad1575f5ffd5b505af1158015610ae3573d5f5f3e3d5ffd5b5050604051639ebf682760e01b815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9250639ebf682791506024015f604051808303815f87803b158015610b31575f5ffd5b505af1158015610b43573d5f5f3e3d5ffd5b50949e9d5050505050505050505050505050565b610b5f612228565b6001600160a01b0381163b610bc25760405162461bcd60e51b815260206004820152602360248201527f4d61696c626f783a20726571756972656420686f6f6b206e6f7420636f6e74726044820152621858dd60ea1b6064820152608401610983565b606980546001600160a01b0319166001600160a01b0383169081179091556040517f329ec8e2438a73828ecf31a6568d7a91d7b1d79e342b0692914fd053d1a002b1905f90a250565b608a5465010000000000900463ffffffff165f908152608c602052604081208054610c3590612a6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6190612a6a565b8015610cac5780601f10610c8357610100808354040283529160200191610cac565b820191905f5260205f20905b815481529060010190602001808311610c8f57829003601f168201915b50506040516307c39d1360e41b81529394503093637c39d1309350610cd79250859150600401612aa2565b5f604051808303815f87803b158015610cee575f5ffd5b505af1158015610d00573d5f5f3e3d5ffd5b5050608a805465010000000000900463ffffffff16925090506005610d2483612ad5565b91906101000a81548163ffffffff021916908363ffffffff1602179055505050565b60606081805480602002602001604051908101604052809291908181526020018280548015610d9c57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610d7e575b5050505050905090565b60606089805480602002602001604051908101604052809291908181526020015f905b82821015610ed9575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610ec2578382905f5260205f20018054610e3790612a6a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6390612a6a565b8015610eae5780601f10610e8557610100808354040283529160200191610eae565b820191905f5260205f20905b815481529060010190602001808311610e9157829003601f168201915b505050505081526020019060010190610e1a565b505050508152505081526020019060010190610dc9565b50505050905090565b608a54610100900463ffffffff165f908152608c60205260409020610f08828483612b56565b50608a8054610100900463ffffffff16906001610f2483612ad5565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050565b60606083805480602002602001604051908101604052809291908181526020018280548015610d9c57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610d7e575050505050905090565b60606082805480602002602001604051908101604052809291908181526020018280548015610d9c57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610d7e575050505050905090565b5f61102787878787878760685f9054906101000a90046001600160a01b0316610900565b979650505050505050565b60606086805480602002602001604051908101604052809291908181526020015f905b82821015610ed9578382905f5260205f2090600202016040518060400160405290815f8201805461108590612a6a565b80601f01602080910402602001604051908101604052809291908181526020018280546110b190612a6a565b80156110fc5780601f106110d3576101008083540402835291602001916110fc565b820191905f5260205f20905b8154815290600101906020018083116110df57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561117e57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116111405790505b50505050508152505081526020019060010190611055565b61119e612228565b6111a75f612282565b565b60036111b583836122d3565b60ff16146111fc5760405162461bcd60e51b815260206004820152601460248201527326b0b4b63137bc1d103130b2103b32b939b4b7b760611b6044820152606401610983565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1661122d83836122f6565b63ffffffff16146112805760405162461bcd60e51b815260206004820152601f60248201527f4d61696c626f783a20756e65787065637465642064657374696e6174696f6e006044820152606401610983565b5f6112bf83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061231892505050565b5f818152606a6020526040902054909150600160a01b900465ffffffffffff161561132c5760405162461bcd60e51b815260206004820152601a60248201527f4d61696c626f783a20616c72656164792064656c6976657265640000000000006044820152606401610983565b5f6113378484612323565b90505f61134382611c47565b60408051808201825233815265ffffffffffff43811660208084019182525f898152606a90915293909320915182549351909116600160a01b026001600160d01b03199093166001600160a01b039182161792909217905590915082166113aa868661233b565b6113b48787612353565b63ffffffff167f0d381c2a574ae8f04e213db7cfb4df8df712cdbd427d9868ffef380660ca657460405160405180910390a460405183907f1cae38cdd3d3919489272725a5ae62a4f48b2989b0dae843d3c279fee18073a9905f90a2604051637bf41d7760e11b81526001600160a01b0382169063f7e83aee90611442908a908a908a908a90600401612c38565b6020604051808303815f875af115801561145e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114829190612c5e565b6114ce5760405162461bcd60e51b815260206004820181905260248201527f4d61696c626f783a2049534d20766572696669636174696f6e206661696c65646044820152606401610983565b816001600160a01b03166356d5d475346114e88888612353565b6114f2898961233b565b6114fc8a8a612362565b6040518663ffffffff1660e01b815260040161151b9493929190612c7d565b5f604051808303818588803b158015611532575f5ffd5b505af1158015611544573d5f5f3e3d5ffd5b505050505050505050505050565b5f6001600160a01b038216611570576068546001600160a01b031691505b5f61157d89898989611fcb565b604051630aaccd2360e41b81529091506001600160a01b0384169063aaccd230906115b090889088908690600401612cac565b602060405180830381865afa1580156115cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef9190612a53565b606954604051630aaccd2360e41b81526001600160a01b039091169063aaccd2309061162390899089908790600401612cac565b602060405180830381865afa15801561163e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116629190612a53565b61166c9190612cd1565b9998505050505050505050565b60606085805480602002602001604051908101604052809291908181526020015f905b82821015610ed9578382905f5260205f200180546116b990612a6a565b80601f01602080910402602001604051908101604052809291908181526020018280546116e590612a6a565b80156117305780601f1061170757610100808354040283529160200191611730565b820191905f5260205f20905b81548152906001019060200180831161171357829003601f168201915b50505050508152602001906001019061169c565b60606088805480602002602001604051908101604052809291908181526020015f905b82821015610ed9575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561180d57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116117cf5790505b50505050508152505081526020019060010190611767565b608c6020525f90815260409020805461183d90612a6a565b80601f016020809104026020016040519081016040528092919081815260200182805461186990612a6a565b80156118b45780601f1061188b576101008083540402835291602001916118b4565b820191905f5260205f20905b81548152906001019060200180831161189757829003601f168201915b505050505081565b6118c4612228565b6001600160a01b0381163b6119265760405162461bcd60e51b815260206004820152602260248201527f4d61696c626f783a2064656661756c7420686f6f6b206e6f7420636f6e74726160448201526118dd60f21b6064820152608401610983565b606880546001600160a01b0319166001600160a01b0383169081179091556040517f65a63e5066ee2fcdf9d32a7f1bf7ce71c76066f19d0609dddccd334ab87237d7905f90a250565b5f6119948585858561198386808385612ce4565b6068546001600160a01b0316611552565b95945050505050565b60606087805480602002602001604051908101604052809291908181526020015f905b82821015610ed9575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a6657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611a285790505b505050505081525050815260200190600101906119c0565b60606084805480602002602001604051908101604052809291908181526020015f905b82821015610ed9578382905f5260205f20018054611abe90612a6a565b80601f0160208091040260200160405190810160405280929190818152602001828054611aea90612a6a565b8015611b355780601f10611b0c57610100808354040283529160200191611b35565b820191905f5260205f20905b815481529060010190602001808311611b1857829003601f168201915b505050505081526020019060010190611aa1565b6073545f9060ff1615611b60575060735460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b60248301525f9163667f9d7090604401602060405180830381865afa158015611bbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be29190612a53565b1415905090565b60606080805480602002602001604051908101604052809291908181526020018280548015610d9c57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610d7e575050505050905090565b60408051600481526024810182526020810180516001600160e01b031663de523cf360e01b17905290515f91829182916001600160a01b03861691611c8c9190612d0b565b5f60405180830381855afa9150503d805f8114611cc4576040519150601f19603f3d011682016040523d82523d5f602084013e611cc9565b606091505b5091509150818015611cdb5750805115155b15611d10575f81806020019051810190611cf59190612d21565b90506001600160a01b03811615611d0e57949350505050565b505b50506067546001600160a01b031692915050565b611d2c612228565b6001600160a01b038116611d915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610983565b611d9a81612282565b50565b611da5612228565b6001600160a01b0381163b611e065760405162461bcd60e51b815260206004820152602160248201527f4d61696c626f783a2064656661756c742049534d206e6f7420636f6e747261636044820152601d60fa1b6064820152608401610983565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fa76ad0adbf45318f8633aa0210f711273d50fbb6fef76ed95bbae97082c75daa905f90a250565b5f61102787878787878760685f9054906101000a90046001600160a01b0316611552565b5f54610100900460ff1615808015611e9157505f54600160ff909116105b80611eaa5750303b158015611eaa57505f5460ff166001145b611f0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610983565b5f805460ff191660011790558015611f2e575f805461ff0019166101001790555b611f3661237d565b611f3f84611d9d565b611f48836118bc565b611f5182610b57565b611f5a85611d24565b8015611f9f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b5f61199485858585611fba86808385612ce4565b6068546001600160a01b0316610900565b6065546060906119949060039063ffffffff167f000000000000000000000000000000000000000000000000000000000000000033898989896123ab565b5f6001600160a01b038216612027576068546001600160a01b031691505b5f61203489898989611fcb565b805160208201206066819055606580549293509091600191905f9061206090849063ffffffff16612d3c565b92506101000a81548163ffffffff021916908363ffffffff160217905550888a63ffffffff16336001600160a01b03167f769f711d20c679153d382254f59892613b58a97cc876b249134ac25c80f9c814856040516120bf91906129aa565b60405180910390a460405181907f788dbc1b7152732178210e7f4d9d010ef016f9eafbe66786bd7169f56e0c353a905f90a2606954604051630aaccd2360e41b81525f916001600160a01b03169063aaccd23090612125908a908a908890600401612cac565b602060405180830381865afa158015612140573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121649190612a53565b9050803410156121715750345b60695460405163086011b960e01b81526001600160a01b039091169063086011b99083906121a7908b908b908990600401612cac565b5f604051808303818588803b1580156121be575f5ffd5b505af11580156121d0573d5f5f3e3d5ffd5b5050505050846001600160a01b031663086011b982346121f09190612d58565b8989876040518563ffffffff1660e01b815260040161221193929190612cac565b5f604051808303818588803b158015610b31575f5ffd5b6033546001600160a01b031633146111a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610983565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6122e16001828486612ce4565b6122ea91612d6b565b60f81c90505b92915050565b5f612305602d60298486612ce4565b61230e91612da3565b60e01c9392505050565b805160209091012090565b5f61233461233184846123e9565b90565b9392505050565b5f61234a602960098486612ce4565b61233491612dd9565b5f612305600960058486612ce4565b365f61237183604d8187612ce4565b915091505b9250929050565b5f54610100900460ff166123a35760405162461bcd60e51b815260040161098390612df6565b6111a76123f8565b606088888888888888886040516020016123cc989796959493929190612e41565b604051602081830303815290604052905098975050505050505050565b5f61234a604d602d8486612ce4565b5f54610100900460ff1661241e5760405162461bcd60e51b815260040161098390612df6565b6111a733612282565b803563ffffffff8116811461243a575f5ffd5b919050565b5f5f60408385031215612450575f5ffd5b61245983612427565b946020939093013593505050565b5f60208284031215612477575f5ffd5b5035919050565b5f5f83601f84011261248e575f5ffd5b50813567ffffffffffffffff8111156124a5575f5ffd5b602083019150836020828501011115612376575f5ffd5b6001600160a01b0381168114611d9a575f5ffd5b5f5f5f5f5f5f5f60a0888a0312156124e6575f5ffd5b6124ef88612427565b965060208801359550604088013567ffffffffffffffff811115612511575f5ffd5b61251d8a828b0161247e565b909650945050606088013567ffffffffffffffff81111561253c575f5ffd5b6125488a828b0161247e565b909450925050608088013561255c816124bc565b8091505092959891949750929550565b5f6020828403121561257c575f5ffd5b8135612334816124bc565b602080825282518282018190525f918401906040840190835b818110156125c75783516001600160a01b03168352602093840193909201916001016125a0565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561264e57601f198584030188526126388383516125d2565b602098890198909350919091019060010161261c565b50909695505050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156126d157868503603f19018452815180516001600160a01b031686526020908101516040918701829052906126bb90870182612600565b9550506020938401939190910190600101612680565b50929695505050505050565b5f602082840312156126ed575f5ffd5b61233482612427565b5f5f60208385031215612707575f5ffd5b823567ffffffffffffffff81111561271d575f5ffd5b6127298582860161247e565b90969095509350505050565b5f5f5f5f5f5f6080878903121561274a575f5ffd5b61275387612427565b955060208701359450604087013567ffffffffffffffff811115612775575f5ffd5b61278189828a0161247e565b909550935050606087013567ffffffffffffffff8111156127a0575f5ffd5b6127ac89828a0161247e565b979a9699509497509295939492505050565b5f5f604083850312156127cf575f5ffd5b6127d883612427565b915060208301356127e8816124bc565b809150509250929050565b5f8151808452602084019350602083015f5b8281101561282d5781516001600160e01b031916865260209586019590910190600101612805565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156126d157603f19878603018452815180516040875261288360408801826125d2565b905060208201519150868103602088015261289e81836127f3565b96505050602093840193919091019060010161285d565b5f5f5f5f604085870312156128c8575f5ffd5b843567ffffffffffffffff8111156128de575f5ffd5b6128ea8782880161247e565b909550935050602085013567ffffffffffffffff811115612909575f5ffd5b6129158782880161247e565b95989497509550505050565b602081525f6123346020830184612600565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156126d157868503603f19018452815180516001600160a01b03168652602090810151604091870182905290612994908701826127f3565b9550506020938401939190910190600101612959565b602081525f61233460208301846125d2565b5f5f5f5f606085870312156129cf575f5ffd5b6129d885612427565b935060208501359250604085013567ffffffffffffffff811115612909575f5ffd5b5f5f5f5f60808587031215612a0d575f5ffd5b8435612a18816124bc565b93506020850135612a28816124bc565b92506040850135612a38816124bc565b91506060850135612a48816124bc565b939692955090935050565b5f60208284031215612a63575f5ffd5b5051919050565b600181811c90821680612a7e57607f821691505b602082108103612a9c57634e487b7160e01b5f52602260045260245ffd5b50919050565b604081525f6040820152606060208201525f61233460608301846125d2565b634e487b7160e01b5f52601160045260245ffd5b5f63ffffffff821663ffffffff8103612af057612af0612ac1565b60010192915050565b634e487b7160e01b5f52604160045260245ffd5b601f821115612b5157805f5260205f20601f840160051c81016020851015612b325750805b601f840160051c820191505b81811015611f9f575f8155600101612b3e565b505050565b67ffffffffffffffff831115612b6e57612b6e612af9565b612b8283612b7c8354612a6a565b83612b0d565b5f601f841160018114612bb3575f8515612b9c5750838201355b5f19600387901b1c1916600186901b178355611f9f565b5f83815260208120601f198716915b82811015612be25786850135825560209485019460019092019101612bc2565b5086821015612bfe575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081525f612c4b604083018688612c10565b8281036020840152611027818587612c10565b5f60208284031215612c6e575f5ffd5b81518015158114612334575f5ffd5b63ffffffff85168152836020820152606060408201525f612ca2606083018486612c10565b9695505050505050565b604081525f612cbf604083018587612c10565b8281036020840152612ca281856125d2565b808201808211156122f0576122f0612ac1565b5f5f85851115612cf2575f5ffd5b83861115612cfe575f5ffd5b5050820193919092039150565b5f82518060208501845e5f920191825250919050565b5f60208284031215612d31575f5ffd5b8151612334816124bc565b63ffffffff81811683821601908111156122f0576122f0612ac1565b818103818111156122f0576122f0612ac1565b80356001600160f81b03198116906001841015612d9c576001600160f81b0319600185900360031b81901b82161691505b5092915050565b80356001600160e01b03198116906004841015612d9c576001600160e01b031960049490940360031b84901b1690921692915050565b803560208310156122f0575f19602084900360031b1b1692915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160f81b031960f88a901b1681526001600160e01b031960e089811b8216600184015288811b821660058401526009830188905286901b166029820152602d81018490528183604d8301375f9101604d0190815297965050505050505056fea264697066735822122025f0ca2854f1dd8c21f92938acc598a67949c797011ba076663b9b353eed6ff864736f6c634300081b003360806040525f805461ffff1916610106179055348015601c575f5ffd5b506101cc8061002a5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80636465e69f14610043578063951a291f14610066578063f7e83aee1461008f575b5f5ffd5b5f5461004f9060ff1681565b60405160ff90911681526020015b60405180910390f35b61008d6100743660046100bf565b5f80549115156101000261ff0019909216919091179055565b005b6100af61009d36600461012a565b50505f54610100900460ff1692915050565b604051901515815260200161005d565b5f602082840312156100cf575f5ffd5b813580151581146100de575f5ffd5b9392505050565b5f5f83601f8401126100f5575f5ffd5b50813567ffffffffffffffff81111561010c575f5ffd5b602083019150836020828501011115610123575f5ffd5b9250929050565b5f5f5f5f6040858703121561013d575f5ffd5b843567ffffffffffffffff811115610153575f5ffd5b61015f878288016100e5565b909550935050602085013567ffffffffffffffff81111561017e575f5ffd5b61018a878288016100e5565b9598949750955050505056fea2646970667358221220860b1f84d1bd37260737f370356747dbaf99fbe9a96b74a9c4bef183d22adc2164736f6c634300081b003360806040525f5f553480156011575f5ffd5b5061032a8061001f5f395ff3fe60806040526004361061006e575f3560e01c8063ddca3f431161004c578063ddca3f43146100dc578063e445e7dd146100f0578063e5320bb91461010a578063f667ee911461013c575f5ffd5b8063086011b91461007257806369fe0e2d14610087578063aaccd230146100a5575b5f5ffd5b610085610080366004610232565b61016a565b005b348015610092575f5ffd5b506100856100a136600461029e565b5f55565b3480156100b0575f5ffd5b506100c96100bf366004610232565b50505f5492915050565b6040519081526020015b60405180910390f35b3480156100e7575f5ffd5b506100c95f5481565b3480156100fb575f5ffd5b506040515f81526020016100d3565b348015610115575f5ffd5b5061012c6101243660046102b5565b600192915050565b60405190151581526020016100d3565b348015610147575f5ffd5b5061012c61015636600461029e565b60016020525f908152604090205460ff1681565b6101768484848461017c565b50505050565b6001805f6101be85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e292505050565b815260208101919091526040015f20805460ff191691151591909117905550505050565b805160209091012090565b5f5f83601f8401126101fd575f5ffd5b50813567ffffffffffffffff811115610214575f5ffd5b60208301915083602082850101111561022b575f5ffd5b9250929050565b5f5f5f5f60408587031215610245575f5ffd5b843567ffffffffffffffff81111561025b575f5ffd5b610267878288016101ed565b909550935050602085013567ffffffffffffffff811115610286575f5ffd5b610292878288016101ed565b95989497509550505050565b5f602082840312156102ae575f5ffd5b5035919050565b5f5f602083850312156102c6575f5ffd5b823567ffffffffffffffff8111156102dc575f5ffd5b6102e8858286016101ed565b9096909550935050505056fea264697066735822122006fc5fbca7e659b8305a2c5d727cc18c30aacaf6761bac04763e01a87104bae964736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000000a