0 txs
0 calls
constructor
constructor(address _config, uint8 _sharedDecimals, address _lzEndpoint)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
circulatingSupply
viewfunction circulatingSupply() view returns (uint256)
configurator
viewfunction configurator() view returns (address)
creditedPackets
viewfunction creditedPackets(uint16, bytes, uint64) view returns (bool)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
estimateSendAndCallFee
viewfunction estimateSendAndCallFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
name
viewfunction name() view returns (string)
NO_EXTRA_GAS
viewfunction NO_EXTRA_GAS() view returns (uint256)
owner
viewfunction owner() view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
PT_SEND_AND_CALL
viewfunction PT_SEND_AND_CALL() view returns (uint8)
PT_SEND
viewfunction PT_SEND() view returns (uint8)
sharedDecimals
viewfunction sharedDecimals() view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
useCustomAdapterParams
viewfunction useCustomAdapterParams() view returns (bool)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(address user, uint256 amount) returns (bool)
callOnOFTReceived
nonpayablefunction callOnOFTReceived(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _from, address _to, uint256 _amount, bytes _payload, uint256 _gasForCall)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
mint
nonpayablefunction mint(address user, uint256 amount) returns (bool)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
sendAndCall
payablefunction sendAndCall(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, bytes _payload, uint64 _dstGasForCall, tuple _callParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes32 _toAddress, uint256 _amount, tuple _callParams) payable
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _remoteChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
setUseCustomAdapterParams
nonpayablefunction setUseCustomAdapterParams(bool _useCustomAdapterParams)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CallOFTReceivedSuccess
event CallOFTReceivedSuccess(uint16 indexed _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _hash)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
NonContractAddress
event NonContractAddress(address _address)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, address indexed _to, uint256 _amount)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes32 indexed _toAddress, uint256 _amount)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
SetUseCustomAdapterParams
event SetUseCustomAdapterParams(bool _useCustomAdapterParams)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162004c7038038062004c708339810160408190526200003591620001f7565b604051806040016040528060058152602001644c7962726160d81b8152506040518060400160405280600381526020016226212960e91b81525083838383838381818080620000936200008d6200018160201b60201c565b62000185565b6001600160a01b0316608052505060ff1660a05250600b9050620000b88382620002ed565b50600c620000c78282620002ed565b5050506000620000dc620001d560201b60201c565b90508060ff168360ff161115620001495760405162461bcd60e51b815260206004820152602760248201527f4f46543a20736861726564446563696d616c73206d757374206265203c3d20646044820152666563696d616c7360c81b606482015260840160405180910390fd5b620001558382620003cf565b6200016290600a620004ee565b60c0525050506001600160a01b0390941660e052506200050692505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601290565b80516001600160a01b0381168114620001f257600080fd5b919050565b6000806000606084860312156200020d57600080fd5b6200021884620001da565b9250602084015160ff811681146200022f57600080fd5b91506200023f60408501620001da565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200027357607f821691505b6020821081036200029457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002e857600081815260208120601f850160051c81016020861015620002c35750805b601f850160051c820191505b81811015620002e457828155600101620002cf565b5050505b505050565b81516001600160401b0381111562000309576200030962000248565b62000321816200031a84546200025e565b846200029a565b602080601f831160018114620003595760008415620003405750858301515b600019600386901b1c1916600185901b178555620002e4565b600085815260208120601f198616915b828110156200038a5788860151825594840194600190910190840162000369565b5085821015620003a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003eb57620003eb620003b9565b92915050565b600181815b8085111562000432578160001904821115620004165762000416620003b9565b808516156200042457918102915b93841c9390800290620003f6565b509250929050565b6000826200044b57506001620003eb565b816200045a57506000620003eb565b81600181146200047357600281146200047e576200049e565b6001915050620003eb565b60ff841115620004925762000492620003b9565b50506001821b620003eb565b5060208310610133831016604e8410600b8410161715620004c3575081810a620003eb565b620004cf8383620003f1565b8060001904821115620004e657620004e6620003b9565b029392505050565b6000620004ff60ff8416836200043a565b9392505050565b60805160a05160c05160e0516146d56200059b6000396000818161048301528181611055015261151e015260008181612c500152818161304a0152613326015260006106fd0152600081816108e301528181610a9301528181610dab01528181610e6b015281816111a8015281816118ff01528181611ec9015281816123ce01528181612a4101526131dd01526146d56000f3fe6080604052600436106103345760003560e01c80638cfd8f5c116101ab578063baf3292d116100f7578063eab45d9c11610095578063ed629c5c1161006f578063ed629c5c14610a23578063f2fde38b14610a3d578063f5ecbdbc14610a5d578063fc0c546a14610a7d57600080fd5b8063eab45d9c146109c3578063eaffd49a146109e3578063eb8d72b714610a0357600080fd5b8063d1deba1f116100d1578063d1deba1f1461095b578063dd62ed3e1461096e578063df2a5b3b1461098e578063e6a20ae6146109ae57600080fd5b8063baf3292d14610905578063c446183414610925578063cbed8b9c1461093b57600080fd5b80639dc29fac11610164578063a4c51df51161013e578063a4c51df514610871578063a6c3d16514610891578063a9059cbb146108b1578063b353aaa7146108d157600080fd5b80639dc29fac146108115780639f38369a14610831578063a457c2d71461085157600080fd5b80638cfd8f5c1461071f5780638da5cb5b146107575780639358928b14610775578063950c8a741461078a57806395d89b41146107aa5780639bdb9812146107bf57600080fd5b80633d8b38f61161028557806366ad5c8a11610223578063715018a6116101fd578063715018a6146106a35780637533d788146106b857806376203b48146106d8578063857749b0146106eb57600080fd5b806366ad5c8a1461063a578063695ef6bf1461065a57806370a082311461066d57600080fd5b806342d65a8d1161025f57806342d65a8d146105a157806344770515146105c15780634c42899a146105d65780635b8c41e6146105eb57600080fd5b80633d8b38f6146105345780633f1f4fa41461055457806340c10f191461058157600080fd5b806310ddb137116102f25780632b507df8116102cc5780632b507df814610471578063313ce567146104bd578063365260b4146104df578063395093511461051457600080fd5b806310ddb1371461041257806318160ddd1461043257806323b872dd1461045157600080fd5b80621d35671461033957806301ffc9a71461035b57806306fdde031461039057806307e0db17146103b2578063095ea7b3146103d25780630df37483146103f2575b600080fd5b34801561034557600080fd5b50610359610354366004613760565b610a90565b005b34801561036757600080fd5b5061037b6103763660046137f3565b610cc1565b60405190151581526020015b60405180910390f35b34801561039c57600080fd5b506103a5610cf8565b604051610387919061386d565b3480156103be57600080fd5b506103596103cd366004613880565b610d8a565b3480156103de57600080fd5b5061037b6103ed3660046138b0565b610e13565b3480156103fe57600080fd5b5061035961040d3660046138dc565b610e2b565b34801561041e57600080fd5b5061035961042d366004613880565b610e4a565b34801561043e57600080fd5b50600a545b604051908152602001610387565b34801561045d57600080fd5b5061037b61046c3660046138f8565b610ea2565b34801561047d57600080fd5b506104a57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610387565b3480156104c957600080fd5b5060125b60405160ff9091168152602001610387565b3480156104eb57600080fd5b506104ff6104fa366004613947565b610ec6565b60408051928352602083019190915201610387565b34801561052057600080fd5b5061037b61052f3660046138b0565b610f1b565b34801561054057600080fd5b5061037b61054f3660046139ae565b610f3d565b34801561056057600080fd5b5061044361056f366004613880565b60036020526000908152604090205481565b34801561058d57600080fd5b5061037b61059c3660046138b0565b611009565b3480156105ad57600080fd5b506103596105bc3660046139ae565b611189565b3480156105cd57600080fd5b50610443600081565b3480156105e257600080fd5b506104cd600081565b3480156105f757600080fd5b50610443610606366004613a6d565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561064657600080fd5b50610359610655366004613760565b61120f565b610359610668366004613b25565b6112eb565b34801561067957600080fd5b50610443610688366004613b98565b6001600160a01b031660009081526008602052604090205490565b3480156106af57600080fd5b50610359611356565b3480156106c457600080fd5b506103a56106d3366004613880565b61136a565b6103596106e6366004613bb5565b611404565b3480156106f757600080fd5b506104cd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561072b57600080fd5b5061044361073a366004613c67565b600260209081526000928352604080842090915290825290205481565b34801561076357600080fd5b506000546001600160a01b03166104a5565b34801561078157600080fd5b506104436114b3565b34801561079657600080fd5b506004546104a5906001600160a01b031681565b3480156107b657600080fd5b506103a56114c3565b3480156107cb57600080fd5b5061037b6107da366004613a6d565b6007602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b34801561081d57600080fd5b5061037b61082c3660046138b0565b6114d2565b34801561083d57600080fd5b506103a561084c366004613880565b6115cc565b34801561085d57600080fd5b5061037b61086c3660046138b0565b6116e2565b34801561087d57600080fd5b506104ff61088c366004613c9a565b61175d565b34801561089d57600080fd5b506103596108ac3660046139ae565b6117ec565b3480156108bd57600080fd5b5061037b6108cc3660046138b0565b611875565b3480156108dd57600080fd5b506104a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561091157600080fd5b50610359610920366004613b98565b611883565b34801561093157600080fd5b5061044361271081565b34801561094757600080fd5b50610359610956366004613d57565b6118e0565b610359610969366004613760565b61196a565b34801561097a57600080fd5b50610443610989366004613dc5565b611b80565b34801561099a57600080fd5b506103596109a9366004613dfe565b611bab565b3480156109ba57600080fd5b506104cd600181565b3480156109cf57600080fd5b506103596109de366004613e3a565b611c5d565b3480156109ef57600080fd5b506103596109fe366004613e57565b611ca6565b348015610a0f57600080fd5b50610359610a1e3660046139ae565b611dc5565b348015610a2f57600080fd5b5060065461037b9060ff1681565b348015610a4957600080fd5b50610359610a58366004613b98565b611e1f565b348015610a6957600080fd5b506103a5610a78366004613f1f565b611e98565b348015610a8957600080fd5b50306104a5565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610b0d5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610b2b90613f6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5790613f6c565b8015610ba45780601f10610b7957610100808354040283529160200191610ba4565b820191906000526020600020905b815481529060010190602001808311610b8757829003601f168201915b50505050509050805186869050148015610bbf575060008151115b8015610be7575080516020820120604051610bdd9088908890613fa0565b6040518091039020145b610c425760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610b04565b610cb88787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611f4992505050565b50505050505050565b60006001600160e01b03198216631f7ecdf760e01b1480610cf257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600b8054610d0790613f6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3390613f6c565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b5050505050905090565b610d92611fc2565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b5050505050565b600033610e2181858561201c565b5060019392505050565b610e33611fc2565b61ffff909116600090815260036020526040902055565b610e52611fc2565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610dde565b600033610eb0858285612141565b610ebb8585856121bb565b506001949350505050565b600080610f0c8888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061236692505050565b91509150965096945050505050565b600033610e21818585610f2e8383611b80565b610f389190613fc6565b61201c565b61ffff831660009081526001602052604081208054829190610f5e90613f6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8a90613f6c565b8015610fd75780601f10610fac57610100808354040283529160200191610fd7565b820191906000526020600020905b815481529060010190602001808311610fba57829003601f168201915b505050505090508383604051610fee929190613fa0565b60405180910390208180519060200120149150509392505050565b6000816000036110405760405162461bcd60e51b81526020600482015260026024820152615a4160f01b6044820152606401610b04565b604051632fc8718360e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bf21c60c90602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190613fd9565b6110f95760405162461bcd60e51b81526020600482015260026024820152614e4160f01b6044820152606401610b04565b6a52b7d2dcc80cd2e40000008261110f600a5490565b6111199190613fc6565b11156111765760405162461bcd60e51b815260206004820152602660248201527f657863656564696e6720746865206d6178696d756d20737570706c7920717561604482015265373a34ba3c9760d11b6064820152608401610b04565b611180838361245a565b50600192915050565b611191611fc2565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d906111e19086908690869060040161401f565b600060405180830381600087803b1580156111fb57600080fd5b505af1158015610cb8573d6000803e3d6000fd5b33301461126d5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610b04565b6112e38686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061251b92505050565b505050505050565b6112e3858585856112ff6020870187613b98565b61130f6040880160208901613b98565b61131c604089018961403d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a292505050565b61135e611fc2565b611368600061268a565b565b6001602052600090815260409020805461138390613f6c565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90613f6c565b80156113fc5780601f106113d1576101008083540402835291602001916113fc565b820191906000526020600020905b8154815290600101906020018083116113df57829003601f168201915b505050505081565b6114a88888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506114519150506020890189613b98565b61146160408a0160208b01613b98565b61146e60408b018b61403d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126da92505050565b505050505050505050565b60006114be600a5490565b905090565b6060600c8054610d0790613f6c565b6000816000036115095760405162461bcd60e51b81526020600482015260026024820152615a4160f01b6044820152606401610b04565b604051632fc8718360e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bf21c60c90602401602060405180830381865afa15801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190613fd9565b6115c25760405162461bcd60e51b81526020600482015260026024820152614e4160f01b6044820152606401610b04565b61118083836127d6565b61ffff81166000908152600160205260408120805460609291906115ef90613f6c565b80601f016020809104026020016040519081016040528092919081815260200182805461161b90613f6c565b80156116685780601f1061163d57610100808354040283529160200191611668565b820191906000526020600020905b81548152906001019060200180831161164b57829003601f168201915b5050505050905080516000036116c05760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610b04565b6116db6000601483516116d39190614083565b839190612907565b9392505050565b600033816116f08286611b80565b9050838110156117505760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b04565b610ebb828686840361201c565b6000806117da8b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c9081908401838280828437600092019190915250612a1492505050565b91509150995099975050505050505050565b6117f4611fc2565b81813060405160200161180993929190614096565b60408051601f1981840301815291815261ffff85166000908152600160205220906118349082614102565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce8383836040516118689392919061401f565b60405180910390a1505050565b600033610e218185856121bb565b61188b611fc2565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b6118e8611fc2565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c9061193c90889088908890889088906004016141c1565b600060405180830381600087803b15801561195657600080fd5b505af11580156114a8573d6000803e3d6000fd5b61ffff8616600090815260056020526040808220905161198d9088908890613fa0565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611a0d5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610b04565b808383604051611a1e929190613fa0565b604051809103902014611a7d5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610b04565b61ffff87166000908152600560205260408082209051611aa09089908990613fa0565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611b38918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061251b92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611b6f9594939291906141fa565b60405180910390a150505050505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b611bb3611fc2565b60008111611bfb5760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610b04565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611868565b611c65611fc2565b6006805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4906020016118d5565b333014611cf55760405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606401610b04565b611d00308686612acf565b9350846001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf86604051611d4291815260200190565b60405180910390a3604051633fe79aed60e11b81526001600160a01b03861690637fcf35da908390611d86908e908e908e908e908e908d908d908d90600401614235565b600060405180830381600088803b158015611da057600080fd5b5087f1158015611db4573d6000803e3d6000fd5b505050505050505050505050505050565b611dcd611fc2565b61ffff83166000908152600160205260409020611deb828483614290565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8383836040516118689392919061401f565b611e27611fc2565b6001600160a01b038116611e8c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b04565b611e958161268a565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611f18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f40919081019061434f565b95945050505050565b600080611fac5a60966366ad5c8a60e01b89898989604051602401611f7194939291906143bc565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612b21565b91509150816112e3576112e38686868685612bab565b6000546001600160a01b031633146113685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b04565b6001600160a01b03831661207e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b04565b6001600160a01b0382166120df5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b04565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061214d8484611b80565b905060001981146121b557818110156121a85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b04565b6121b5848484840361201c565b50505050565b6001600160a01b03831661221f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b04565b6001600160a01b0382166122815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b04565b6001600160a01b038316600090815260086020526040902054818110156122f95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b04565b6001600160a01b0380851660008181526008602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123599086815260200190565b60405180910390a36121b5565b60008060006123b48761237888612c48565b6040805160006020820152602181019390935260c09190911b6001600160c01b0319166041830152805160298184030181526049909201905290565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb109061240b908b90309086908b908b906004016143fa565b6040805180830381865afa158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b919061444e565b92509250509550959350505050565b6001600160a01b0382166124b05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b04565b80600a60008282546124c29190613fc6565b90915550506001600160a01b0382166000818152600860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006125278282612cce565b905060ff81166125425761253d85858585612d2a565b610e0c565b60001960ff82160161255a5761253d85858585612dba565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606401610b04565b60006125b087828481612fc8565b6125b985613042565b5090506125c888888884613082565b9050600081116126165760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610b04565b60006126258761237884612c48565b90506126358882878787346130b4565b86896001600160a01b03168961ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a8560405161267691815260200190565b60405180910390a450979650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006126f2896001846001600160401b038916612fc8565b6126fb87613042565b50905061270a8a8a8a84613082565b9050600081116127585760405162461bcd60e51b815260206004820152601960248201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b6044820152606401610b04565b600061276f338a61276885612c48565b8a8a613259565b905061277f8a82878787346130b4565b888b6001600160a01b03168b61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a856040516127c091815260200190565b60405180910390a4509998505050505050505050565b6001600160a01b0382166128365760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b04565b6001600160a01b038216600090815260086020526040902054818110156128aa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b04565b6001600160a01b03831660008181526008602090815260408083208686039055600a80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612134565b505050565b60608161291581601f613fc6565b10156129545760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610b04565b61295e8284613fc6565b845110156129a25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610b04565b6060821580156129c15760405191506000825260208201604052612a0b565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156129fa5780518352602092830192016129e2565b5050858452601f01601f1916604052505b50949350505050565b6000806000612a27338a6127688b612c48565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090612a7e908d90309086908b908b906004016143fa565b6040805180830381865afa158015612a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abe919061444e565b925092505097509795505050505050565b600033306001600160a01b03861614801590612afd5750806001600160a01b0316856001600160a01b031614155b15612b0d57612b0d858285612141565b612b188585856121bb565b50909392505050565b6000606060008060008661ffff166001600160401b03811115612b4657612b46613a00565b6040519080825280601f01601f191660200182016040528015612b70576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612b92578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051612bdc9190614472565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90612c39908790879087908790879061448e565b60405180910390a15050505050565b600080612c757f0000000000000000000000000000000000000000000000000000000000000000846144f6565b90506001600160401b03811115610cf25760405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606401610b04565b6000612cdb826001613fc6565b83511015612d215760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610b04565b50016001015190565b600080612d368361329a565b90925090506001600160a01b038216612d4f5761dead91505b6000612d5a8261331f565b9050612d67878483613354565b9050826001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf83604051612da991815260200190565b60405180910390a350505050505050565b6000806000806000612dcb86613367565b945094509450945094506000600760008b61ffff1661ffff16815260200190815260200160002089604051612e009190614472565b90815260408051602092819003830190206001600160401b038b166000908152925281205460ff169150612e338561331f565b905081612ea157612e458b3083613354565b61ffff8c16600090815260076020526040908190209051919250600191612e6d908d90614472565b90815260408051602092819003830190206001600160401b038d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b612ef8576040516001600160a01b03871681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a1505050505050506121b5565b8a8a8a8a8a8a868a60008a612f16578b6001600160401b0316612f18565b5a5b9050600080612f4a5a609663eaffd49a60e01b8e8e8e8d8d8d8d8d604051602401611f7198979695949392919061450a565b915091508115612fa3578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd88490612f95908e908e90869061457e565b60405180910390a250612fb0565b612fb08b8b8b8b85612bab565b50505050505050505050505050505050505050505050565b60065460ff1615612fe457612fdf8484848461341e565b6121b5565b8151156121b55760405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608401610b04565b60008061306f7f0000000000000000000000000000000000000000000000000000000000000000846145ac565b905061307b8184614083565b9150915091565b6000336001600160a01b03861681146130a0576130a0868285612141565b6130aa86846127d6565b5090949350505050565b61ffff8616600090815260016020526040812080546130d290613f6c565b80601f01602080910402602001604051908101604052809291908181526020018280546130fe90613f6c565b801561314b5780601f106131205761010080835404028352916020019161314b565b820191906000526020600020905b81548152906001019060200180831161312e57829003601f168201915b5050505050905080516000036131bc5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610b04565b6131c78787516134fd565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c580310090849061321e908b9086908c908c908c908c906004016145c0565b6000604051808303818588803b15801561323757600080fd5b505af115801561324b573d6000803e3d6000fd5b505050505050505050505050565b6060600185856001600160a01b038916858760405160200161328096959493929190614627565b604051602081830303815290604052905095945050505050565b600080806132a88482612cce565b60ff161480156132b9575082516029145b6133005760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610b04565b61330b83600d61356e565b91506133188360216135d3565b9050915091565b6000610cf27f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416614688565b6000613360838361245a565b5092915050565b60008080606081600161337a8783612cce565b60ff16146133c55760405162461bcd60e51b815260206004820152601860248201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b6044820152606401610b04565b6133d086600d61356e565b93506133dd8660216135d3565b92506133ea866029613630565b94506133f78660496135d3565b9050613413605180885161340b9190614083565b889190612907565b915091939590929450565b60006134298361368e565b61ffff80871660009081526002602090815260408083209389168352929052908120549192509061345b908490613fc6565b9050600081116134ad5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610b04565b808210156112e35760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610b04565b61ffff82166000908152600360205260408120549081900361351e57506127105b808211156129025760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610b04565b600061357b826014613fc6565b835110156135c35760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610b04565b500160200151600160601b900490565b60006135e0826008613fc6565b835110156136275760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606401610b04565b50016008015190565b600061363d826020613fc6565b835110156136855760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610b04565b50016020015190565b60006022825110156136e25760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610b04565b506022015190565b803561ffff811681146136fc57600080fd5b919050565b60008083601f84011261371357600080fd5b5081356001600160401b0381111561372a57600080fd5b60208301915083602082850101111561374257600080fd5b9250929050565b80356001600160401b03811681146136fc57600080fd5b6000806000806000806080878903121561377957600080fd5b613782876136ea565b955060208701356001600160401b038082111561379e57600080fd5b6137aa8a838b01613701565b90975095508591506137be60408a01613749565b945060608901359150808211156137d457600080fd5b506137e189828a01613701565b979a9699509497509295939492505050565b60006020828403121561380557600080fd5b81356001600160e01b0319811681146116db57600080fd5b60005b83811015613838578181015183820152602001613820565b50506000910152565b6000815180845261385981602086016020860161381d565b601f01601f19169290920160200192915050565b6020815260006116db6020830184613841565b60006020828403121561389257600080fd5b6116db826136ea565b6001600160a01b0381168114611e9557600080fd5b600080604083850312156138c357600080fd5b82356138ce8161389b565b946020939093013593505050565b600080604083850312156138ef57600080fd5b6138ce836136ea565b60008060006060848603121561390d57600080fd5b83356139188161389b565b925060208401356139288161389b565b929592945050506040919091013590565b8015158114611e9557600080fd5b60008060008060008060a0878903121561396057600080fd5b613969876136ea565b95506020870135945060408701359350606087013561398781613939565b925060808701356001600160401b038111156139a257600080fd5b6137e189828a01613701565b6000806000604084860312156139c357600080fd5b6139cc846136ea565b925060208401356001600160401b038111156139e757600080fd5b6139f386828701613701565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a3e57613a3e613a00565b604052919050565b60006001600160401b03821115613a5f57613a5f613a00565b50601f01601f191660200190565b600080600060608486031215613a8257600080fd5b613a8b846136ea565b925060208401356001600160401b03811115613aa657600080fd5b8401601f81018613613ab757600080fd5b8035613aca613ac582613a46565b613a16565b818152876020838501011115613adf57600080fd5b81602084016020830137600060208383010152809450505050613b0460408501613749565b90509250925092565b600060608284031215613b1f57600080fd5b50919050565b600080600080600060a08688031215613b3d57600080fd5b8535613b488161389b565b9450613b56602087016136ea565b9350604086013592506060860135915060808601356001600160401b03811115613b7f57600080fd5b613b8b88828901613b0d565b9150509295509295909350565b600060208284031215613baa57600080fd5b81356116db8161389b565b60008060008060008060008060e0898b031215613bd157600080fd5b8835613bdc8161389b565b9750613bea60208a016136ea565b9650604089013595506060890135945060808901356001600160401b0380821115613c1457600080fd5b613c208c838d01613701565b9096509450849150613c3460a08c01613749565b935060c08b0135915080821115613c4a57600080fd5b50613c578b828c01613b0d565b9150509295985092959890939650565b60008060408385031215613c7a57600080fd5b613c83836136ea565b9150613c91602084016136ea565b90509250929050565b600080600080600080600080600060e08a8c031215613cb857600080fd5b613cc18a6136ea565b985060208a0135975060408a0135965060608a01356001600160401b0380821115613ceb57600080fd5b613cf78d838e01613701565b9098509650869150613d0b60808d01613749565b955060a08c01359150613d1d82613939565b90935060c08b01359080821115613d3357600080fd5b50613d408c828d01613701565b915080935050809150509295985092959850929598565b600080600080600060808688031215613d6f57600080fd5b613d78866136ea565b9450613d86602087016136ea565b93506040860135925060608601356001600160401b03811115613da857600080fd5b613db488828901613701565b969995985093965092949392505050565b60008060408385031215613dd857600080fd5b8235613de38161389b565b91506020830135613df38161389b565b809150509250929050565b600080600060608486031215613e1357600080fd5b613e1c846136ea565b9250613e2a602085016136ea565b9150604084013590509250925092565b600060208284031215613e4c57600080fd5b81356116db81613939565b6000806000806000806000806000806101008b8d031215613e7757600080fd5b613e808b6136ea565b995060208b01356001600160401b0380821115613e9c57600080fd5b613ea88e838f01613701565b909b509950899150613ebc60408e01613749565b985060608d0135975060808d01359150613ed58261389b565b90955060a08c0135945060c08c01359080821115613ef257600080fd5b50613eff8d828e01613701565b9150809450508092505060e08b013590509295989b9194979a5092959850565b60008060008060808587031215613f3557600080fd5b613f3e856136ea565b9350613f4c602086016136ea565b92506040850135613f5c8161389b565b9396929550929360600135925050565b600181811c90821680613f8057607f821691505b602082108103613b1f57634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cf257610cf2613fb0565b600060208284031215613feb57600080fd5b81516116db81613939565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000611f40604083018486613ff6565b6000808335601e1984360301811261405457600080fd5b8301803591506001600160401b0382111561406e57600080fd5b60200191503681900382131561374257600080fd5b81810381811115610cf257610cf2613fb0565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b601f82111561290257600081815260208120601f850160051c810160208610156140e35750805b601f850160051c820191505b818110156112e3578281556001016140ef565b81516001600160401b0381111561411b5761411b613a00565b61412f816141298454613f6c565b846140bc565b602080601f831160018114614164576000841561414c5750858301515b600019600386901b1c1916600185901b1785556112e3565b600085815260208120601f198616915b8281101561419357888601518255948401946001909101908401614174565b50858210156141b15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff8088168352808716602084015250846040830152608060608301526141ef608083018486613ff6565b979650505050505050565b61ffff86168152608060208201526000614218608083018688613ff6565b6001600160401b0394909416604083015250606001529392505050565b61ffff8916815260c06020820152600061425360c08301898b613ff6565b6001600160401b038816604084015286606084015285608084015282810360a0840152614281818587613ff6565b9b9a5050505050505050505050565b6001600160401b038311156142a7576142a7613a00565b6142bb836142b58354613f6c565b836140bc565b6000601f8411600181146142ef57600085156142d75750838201355b600019600387901b1c1916600186901b178355610e0c565b600083815260209020601f19861690835b828110156143205786850135825560209485019460019092019101614300565b508682101561433d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561436157600080fd5b81516001600160401b0381111561437757600080fd5b8201601f8101841361438857600080fd5b8051614396613ac582613a46565b8181528560208385010111156143ab57600080fd5b611f4082602083016020860161381d565b61ffff851681526080602082015260006143d96080830186613841565b6001600160401b038516604084015282810360608401526141ef8185613841565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061442890830186613841565b841515606084015282810360808401526144428185613841565b98975050505050505050565b6000806040838503121561446157600080fd5b505080516020909101519092909150565b6000825161448481846020870161381d565b9190910192915050565b61ffff8616815260a0602082015260006144ab60a0830187613841565b6001600160401b038616604084015282810360608401526144cc8186613841565b905082810360808401526144428185613841565b634e487b7160e01b600052601260045260246000fd5b600082614505576145056144e0565b500490565b600061010061ffff8b1683528060208401526145288184018b613841565b6001600160401b038a166040850152606084018990526001600160a01b038816608085015260a0840187905283810360c085015290506145688186613841565b9150508260e08301529998505050505050505050565b6060815260006145916060830186613841565b6001600160401b039490941660208301525060400152919050565b6000826145bb576145bb6144e0565b500690565b61ffff8716815260c0602082015260006145dd60c0830188613841565b82810360408401526145ef8188613841565b6001600160a01b0387811660608601528616608085015283810360a0850152905061461a8185613841565b9998505050505050505050565b60ff60f81b8760f81b16815285600182015260006001600160401b0360c01b808760c01b166021840152856029840152808560c01b16604984015250825161467681605185016020870161381d565b91909101605101979650505050505050565b8082028115828204841417610cf257610cf2613fb056fea26469706673582212209dbe5c512a7d6c7ce254766c77cf79fc5e9dd0f12fe894c8abd5c6b76067b02c64736f6c63430008110033000000000000000000000000c8353594eeedc5ce5a4544d3d9907b694c4690ff000000000000000000000000000000000000000000000000000000000000000800000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675