0 txs
42.9k calls
constructor
No constructor.
functions
BRIDGE_ADMIN_ROLE
viewfunction BRIDGE_ADMIN_ROLE() view returns (bytes32)
BRIDGE_USER_ROLE
viewfunction BRIDGE_USER_ROLE() view returns (bytes32)
bridgeEnabled
viewfunction bridgeEnabled(uint8) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBridgeFee
viewfunction getBridgeFee(uint8 _bridge, uint32 _dstChainListOrgChainId, bytes32, uint256) view returns (uint256 bridgeFee)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getDefaultBridgeProvider
viewfunction getDefaultBridgeProvider() view returns (uint8)
getDefaultDestinationChain
viewfunction getDefaultDestinationChain() view returns (uint32 chainListOrgChainId)
getLzEndPoint
viewfunction getLzEndPoint() view returns (address)
getMainnetRfq
viewfunction getMainnetRfq() view returns (address)
getPortfolio
viewfunction getPortfolio() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getTokenList
viewfunction getTokenList() view returns (bytes32[])
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
hasStoredPayload
viewfunction hasStoredPayload() view returns (bool)
hasStoredPayload
viewfunction hasStoredPayload(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
isBridgeProviderEnabled
viewfunction isBridgeProviderEnabled(uint8 _bridge) view returns (bool)
isLZTrustedRemote
viewfunction isLZTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzTrustedRemoteLookup
viewfunction lzTrustedRemoteLookup(uint16) view returns (bytes)
paused
viewfunction paused() view returns (bool)
remoteParams
viewfunction remoteParams(uint16) view returns (uint16 lzRemoteChainId, uint32 chainListOrgChainId, bool userPaysFee, uint256 gasForDestination)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
unpackXFerMessage
purefunction unpackXFerMessage(bytes _payload) pure returns (tuple xfer)
VERSION
purefunction VERSION() pure returns (bytes32)
enableBridgeProvider
nonpayablefunction enableBridgeProvider(uint8 _bridge, bool _enable)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _endpoint)
lzDestroyAndRecoverFunds
nonpayablefunction lzDestroyAndRecoverFunds(uint16 _srcChainId, bytes _payload)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64, bytes _payload)
lzRetryPayload
nonpayablefunction lzRetryPayload(uint16 _srcChainId, bytes _payload)
pause
nonpayablefunction pause()
refundNative
nonpayablefunction refundNative()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
retryPayload
nonpayablefunction retryPayload(uint16 _srcChainId, bytes _srcAddress, bytes _payload)
revokeRole
nonpayablefunction revokeRole(bytes32 _role, address _address)
sendXChainMessage
payablefunction sendXChainMessage(uint32 _dstChainListOrgChainId, uint8 _bridge, tuple _xfer, address _userFeePayer) payable
setBridgeParam
nonpayablefunction setBridgeParam(bytes32 _symbol, uint256 _fee, uint256 _gasSwapRatio, bool _usedForGasSwap)
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setDefaultBridgeProvider
nonpayablefunction setDefaultBridgeProvider(uint8 _bridge)
setDefaultDestinationChain
nonpayablefunction setDefaultDestinationChain(uint8 _bridge, uint32 _dstChainIdBridgeAssigned)
setGasForDestination
nonpayablefunction setGasForDestination(uint8 _bridge, uint32 _dstChainIdBridgeAssigned, uint256 _gas)
setLzEndPoint
nonpayablefunction setLzEndPoint(address _endpoint)
setMainnetRFQ
nonpayablefunction setMainnetRFQ(address _mainnetRfq)
setPortfolio
nonpayablefunction setPortfolio(address _portfolio)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint8 _bridge, uint32 _dstChainIdBridgeAssigned, bytes _remoteAddress, uint32 _chainListOrgChainId, uint256 _gasForDestination, bool _userPaysFee)
setUserPaysFeeForDestination
nonpayablefunction setUserPaysFeeForDestination(uint8 _bridge, uint32 _dstChainIdBridgeAssigned, bool _userPaysFee)
unpause
nonpayablefunction unpause()
events
DefaultChainIdUpdated
event DefaultChainIdUpdated(uint8 bridge, uint32 destinationLzChainId)
GasForDestinationLzReceiveUpdated
event GasForDestinationLzReceiveUpdated(uint8 bridge, uint32 destinationChainId, uint256 gasForDestination)
Initialized
event Initialized(uint8 version)
LzSetTrustedRemoteAddress
event LzSetTrustedRemoteAddress(uint16 destinationLzChainId, bytes remoteAddress, uint32 chainListOrgChainId, uint256 gasForDestinationLzReceive, bool userPaysFee)
Paused
event Paused(address account)
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)
RoleUpdated
event RoleUpdated(string indexed name, string actionName, bytes32 updatedRole, address updatedAddress)
Unpaused
event Unpaused(address account)
UserPaysFeeForDestinationUpdated
event UserPaysFeeForDestinationUpdated(uint8 bridge, uint32 destinationChainId, bool userPaysFee)
XChainXFerMessage
event XChainXFerMessage(uint8 version, uint8 indexed bridge, uint8 indexed msgDirection, uint32 indexed remoteChainId, uint256 messageFee, (uint64 nonce, uint8 transaction, address trader, bytes32 symbol, uint256 quantity, uint256 timestamp, bytes28 customdata) xfer)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614930806100206000396000f3fe60806040526004361061031d5760003560e01c806366829dca116101ab578063aaff5f16116100f7578063cbed8b9c11610095578063da52ba581161006f578063da52ba5814610a17578063f5ecbdbc14610a37578063f7b90d6114610a57578063ffa1ad7414610a7857610324565b8063cbed8b9c146109b8578063d3d03458146109d8578063d547741f146109f757610324565b8063c2a6ad4e116100d1578063c2a6ad4e14610937578063c4d66de814610956578063ca15c87314610976578063cbebf3ae1461099657610324565b8063aaff5f1614610866578063b42fce4e14610886578063b83d0339146108b357610324565b80639010d07c11610164578063929ddf8a1161013e578063929ddf8a146107fc5780639f38369a1461081c578063a217fddf1461083c578063a64164ae1461085157610324565b80639010d07c1461078b57806391bd0629146107ab57806391d14854146107dc57610324565b806366829dca146106bf5780636bad41b1146106df578063779ff8f2146106ff5780637efc17841461071f5780638456cb591461074c5780638a9eaa761461076157610324565b80632b175e8d1161026a5780633d83cc04116102235780635c975abb116101fd5780635c975abb1461065257806360c3433c1461066a578063646352fd1461068a578063663da2c81461069f57610324565b80633d83cc04146105fd5780633f4ba83a1461061d57806342d65a8d1461063257610324565b80632b175e8d1461052a5780632dc14a3c1461054a5780632f2ff15d1461056a57806336568abe1461058a5780633a12b977146105aa5780633af86acb146105dd57610324565b806310ddb137116102d75780631cda60c4116102b15780631cda60c4146104985780631e5d22af146104b8578063248a9ca3146104d8578063273cbaa01461050857610324565b806310ddb13714610443578063118c38c7146104635780631777b4541461048557610324565b80621d35671461035e57806301996a331461038057806301ffc9a7146103b3578063044337ca146103e357806307e0db17146104035780630eaf6ea61461042357610324565b3661032457005b60405162461bcd60e51b815260206004820152600a60248201526950422d4e46554e2d303160b01b60448201526064015b60405180910390fd5b34801561036a57600080fd5b5061037e6103793660046135cd565b610a93565b005b34801561038c57600080fd5b506103a061039b366004613682565b610c35565b6040519081526020015b60405180910390f35b3480156103bf57600080fd5b506103d36103ce3660046136c6565b610ca1565b60405190151581526020016103aa565b3480156103ef57600080fd5b5061037e6103fe366004613710565b610ccc565b34801561040f57600080fd5b5061037e61041e36600461372d565b610d60565b34801561042f57600080fd5b506103d361043e366004613748565b610dca565b34801561044f57600080fd5b5061037e61045e36600461372d565b610e41565b34801561046f57600080fd5b506103a06000805160206148bb83398151915281565b61037e61049336600461384b565b610e81565b3480156104a457600080fd5b5061037e6104b3366004613710565b610eda565b3480156104c457600080fd5b5061037e6104d336600461391b565b610f6a565b3480156104e457600080fd5b506103a06104f336600461395a565b600090815260c9602052604090206001015490565b34801561051457600080fd5b5061051d611026565b6040516103aa9190613973565b34801561053657600080fd5b5061037e6105453660046139c5565b61109e565b34801561055657600080fd5b5061037e610565366004613748565b61121d565b34801561057657600080fd5b5061037e610585366004613a5b565b6112ae565b34801561059657600080fd5b5061037e6105a5366004613a5b565b6112d8565b3480156105b657600080fd5b5061012d546001600160a01b03165b6040516001600160a01b0390911681526020016103aa565b3480156105e957600080fd5b506103d36105f8366004613748565b611352565b34801561060957600080fd5b5061037e610618366004613a8b565b61141f565b34801561062957600080fd5b5061037e6114da565b34801561063e57600080fd5b5061037e61064d366004613748565b6114fd565b34801561065e57600080fd5b5060335460ff166103d3565b34801561067657600080fd5b5061037e610685366004613ab7565b61153d565b34801561069657600080fd5b5061037e6115be565b3480156106ab57600080fd5b5061037e6106ba366004613710565b611664565b3480156106cb57600080fd5b5061037e6106da366004613748565b6116d6565b3480156106eb57600080fd5b5061037e6106fa366004613b00565b6117a7565b34801561070b57600080fd5b506103d361071a366004613b00565b61183e565b34801561072b57600080fd5b5061073f61073a36600461372d565b611882565b6040516103aa9190613b6b565b34801561075857600080fd5b5061037e61191d565b34801561076d57600080fd5b5061077661193d565b60405163ffffffff90911681526020016103aa565b34801561079757600080fd5b506105c56107a6366004613b7e565b611986565b3480156107b757600080fd5b506103d36107c6366004613b00565b6101656020526000908152604090205460ff1681565b3480156107e857600080fd5b506103d36107f7366004613a5b565b6119a5565b34801561080857600080fd5b5061037e610817366004613ba0565b6119d0565b34801561082857600080fd5b5061073f61083736600461372d565b611a65565b34801561084857600080fd5b506103a0600081565b34801561085d57600080fd5b506103d3611b60565b34801561087257600080fd5b5061037e610881366004613be1565b611be8565b34801561089257600080fd5b506108a66108a1366004613c61565b611c66565b6040516103aa9190613d22565b3480156108bf57600080fd5b506109076108ce36600461372d565b61012f602052600090815260409020805460019091015461ffff82169162010000810463ffffffff1691600160301b90910460ff169084565b6040805161ffff909516855263ffffffff90931660208501529015159183019190915260608201526080016103aa565b34801561094357600080fd5b50610164546001600160a01b03166105c5565b34801561096257600080fd5b5061037e610971366004613710565b611d63565b34801561098257600080fd5b506103a061099136600461395a565b611eee565b3480156109a257600080fd5b506103a06000805160206148db83398151915281565b3480156109c457600080fd5b5061037e6109d3366004613d30565b611f05565b3480156109e457600080fd5b50610163546001600160a01b03166105c5565b348015610a0357600080fd5b5061037e610a12366004613a5b565b611f49565b348015610a2357600080fd5b5061037e610a32366004613d8d565b612090565b348015610a4357600080fd5b5061073f610a52366004613db9565b612159565b348015610a6357600080fd5b506101675460ff166040516103aa9190613e1a565b348015610a8457600080fd5b50640332e322e360dc1b6103a0565b610a9b6121ed565b61ffff8616600090815261012e602052604081208054610aba90613e28565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae690613e28565b8015610b335780601f10610b0857610100808354040283529160200191610b33565b820191906000526020600020905b815481529060010190602001808311610b1657829003601f168201915b505061012d54939450506001600160a01b0390921691503390506001600160a01b031614610b905760405162461bcd60e51b815260206004820152600a60248201526950422d495645432d303160b01b6044820152606401610355565b805115801590610bbc575080516020820120604051610bb29088908890613e62565b6040518091039020145b610bf55760405162461bcd60e51b815260206004820152600a60248201526950422d53494e412d303160b01b6044820152606401610355565b61ffff8716600090815261012f6020526040812054610c22919062010000900463ffffffff168585612246565b50610c2d6001606555565b505050505050565b600080856001811115610c4a57610c4a613ca2565b03610c995763ffffffff841660009081526101666020908152604091829020548251610140810190935261010280845261ffff90911692610c94928492906147b99083013961232e565b509150505b949350505050565b60006001600160e01b03198216635a05180f60e01b1480610cc65750610cc6826123fc565b92915050565b6000610cd781612431565b61016354610cfd906000805160206148db833981519152906001600160a01b03166119a5565b15610d285761016354610d28906000805160206148db833981519152906001600160a01b031661243b565b61016380546001600160a01b0319166001600160a01b038416179055610d5c6000805160206148db833981519152836112ae565b5050565b6000610d6b81612431565b61012d546040516307e0db1760e01b815261ffff841660048201526001600160a01b03909116906307e0db17906024015b600060405180830381600087803b158015610db657600080fd5b505af1158015610c2d573d6000803e3d6000fd5b61012d54604051630757b75360e11b81526000916001600160a01b031690630eaf6ea690610e0090879087908790600401613e9b565b602060405180830381865afa158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190613ec4565b6000610e4c81612431565b61012d546040516310ddb13760e01b815261ffff841660048201526001600160a01b03909116906310ddb13790602401610d9c565b610e896121ed565b610e91612460565b6000805160206148db833981519152610ea981612431565b610ebd8360600151846020015160006124a6565b610ec985858585612663565b50610ed46001606555565b50505050565b6000610ee581612431565b61016454610f0b906000805160206148db833981519152906001600160a01b03166119a5565b15610f365761016454610f36906000805160206148db833981519152906001600160a01b031661243b565b61016480546001600160a01b0319166001600160a01b038416179055610d5c6000805160206148db833981519152836112ae565b6000610f7581612431565b61c350821015610fb45760405162461bcd60e51b815260206004820152600a60248201526950422d4d494e472d303160b01b6044820152606401610355565b6000846001811115610fc857610fc8613ca2565b03610ed45761ffff8316600090815261012f6020526040808220600101849055517ff384fa5d18bfc582f669f514459c530a25ed32cab6c9da580f6c9f8da9a25f03916110189186908690613ee1565b60405180910390a150505050565b6101635460408051630139e5d560e51b815290516060926001600160a01b03169163273cbaa09160048083019260009291908290030181865afa158015611071573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110999190810190613f06565b905090565b60006110a981612431565b60008860018111156110bd576110bd613ca2565b036112135760405187906110d990889088903090602001613fab565b60408051601f1981840301815291815261ffff8316600090815261012e60205220906111059082614017565b5063ffffffff8516600081815261016660209081526040808320805461ffff191661ffff87811691821790925580855261012f9093529083208054600182018a905565ffffffffffff1916909217620100009094029390931766ff0000000000001916600160301b871515021781556101305490921690036111cf57610130805461ffff191661ffff84161790556040517fa10722e93362ab92c7c73c01dfd5a48cc3693f3ab81a0ee2318614925121d68b906111c69060009085906140d6565b60405180910390a15b7f05007713d7f91b2a8169516a88473e89654f466b8ed5f6fabb9555ff0ce094be828989898989604051611208969594939291906140f5565b60405180910390a150505b5050505050505050565b6000805160206148bb83398151915261123581612431565b61012d5461ffff8516600090815261012e602052604090819020905163557faf8b60e11b81526001600160a01b039092169163aaff5f169161128091889190889088906004016141b6565b600060405180830381600087803b15801561129a57600080fd5b505af1158015611213573d6000803e3d6000fd5b600082815260c960205260409020600101546112c981612431565b6112d38383612823565b505050565b6001600160a01b03811633146113485760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610355565b610d5c8282612845565b61ffff8316600090815261012e60205260408120805482919061137490613e28565b80601f01602080910402602001604051908101604052809291908181526020018280546113a090613e28565b80156113ed5780601f106113c2576101008083540402835291602001916113ed565b820191906000526020600020905b8154815290600101906020018083116113d057829003601f168201915b505050505090508383604051611404929190613e62565b60405180910390208180519060200120149150509392505050565b600061142a81612431565b600083600181111561143e5761143e613ca2565b036112d35761ffff808316600090815261012f60205260409020548391166114955760405162461bcd60e51b815260206004820152600a60248201526950422d444443532d303160b01b6044820152606401610355565b610130805461ffff191661ffff83161790556040517fa10722e93362ab92c7c73c01dfd5a48cc3693f3ab81a0ee2318614925121d68b906110189060009086906141f1565b6000805160206148db8339815191526114f281612431565b6114fa612867565b50565b600061150881612431565b61012d546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d9061128090879087908790600401613e9b565b600061154881612431565b600084600181111561155c5761155c613ca2565b03610ed45761ffff8316600090815261012f6020526040808220805466ff0000000000001916600160301b86151502179055517f7e9054bbbd79f771af8313d081082cc6d9f2fa3fac669b04a041e81e3737b9b3916110189186908690614212565b6115c66121ed565b60006115d181612431565b604051600090339047908381818185875af1925050503d8060008114611613576040519150601f19603f3d011682016040523d82523d6000602084013e611618565b606091505b50509050806116565760405162461bcd60e51b815260206004820152600a60248201526950422d465246442d303160b01b6044820152606401610355565b50506116626001606555565b565b600061166f81612431565b6001600160a01b0382166116b25760405162461bcd60e51b815260206004820152600a6024820152694c412d4c495a412d303160b01b6044820152606401610355565b5061012d80546001600160a01b0319166001600160a01b0392909216919091179055565b6116de6121ed565b6000805160206148bb8339815191526116f681612431565b61012d5461ffff8516600090815261012e60205260409081902090516342d65a8d60e01b81526001600160a01b03909216916342d65a8d9161173d9188919060040161423c565b600060405180830381600087803b15801561175757600080fd5b505af115801561176b573d6000803e3d6000fd5b50505061ffff8516600090815261012f602052604081205461179c925063ffffffff62010000909104168585612246565b506112d36001606555565b60006117b281612431565b6101675460ff1660018111156117ca576117ca613ca2565b8260018111156117dc576117dc613ca2565b036118165760405162461bcd60e51b815260206004820152600a60248201526950422d444243442d303160b01b6044820152606401610355565b610167805483919060ff19166001838181111561183557611835613ca2565b02179055505050565b6000610165600083600181111561185757611857613ca2565b600181111561186857611868613ca2565b815260208101919091526040016000205460ff1692915050565b61012e602052600090815260409020805461189c90613e28565b80601f01602080910402602001604051908101604052809291908181526020018280546118c890613e28565b80156119155780601f106118ea57610100808354040283529160200191611915565b820191906000526020600020905b8154815290600101906020018083116118f857829003601f168201915b505050505081565b6000805160206148db83398151915261193581612431565b6114fa6128b9565b6000806101675460ff16600181111561195857611958613ca2565b0361198357506101305461ffff16600090815261012f602052604090205462010000900463ffffffff165b90565b600082815260fb6020526040812061199e90836128f6565b9392505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206148bb8339815191526119e881612431565b6101635460405163494eefc560e11b815260048101879052602481018690526044810185905283151560648201526001600160a01b039091169063929ddf8a906084015b600060405180830381600087803b158015611a4657600080fd5b505af1158015611a5a573d6000803e3d6000fd5b505050505050505050565b61ffff8116600090815261012e6020526040812080546060929190611a8990613e28565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab590613e28565b8015611b025780601f10611ad757610100808354040283529160200191611b02565b820191906000526020600020905b815481529060010190602001808311611ae557829003601f168201915b505050505090508051600003611b475760405162461bcd60e51b815260206004820152600a6024820152694c412d44434e542d303160b01b6044820152606401610355565b61199e81600060148451611b5b919061426f565b612902565b61012d546101305461ffff16600081815261012e60205260408082209051630757b75360e11b815291936001600160a01b031692630eaf6ea692611ba7929060040161423c565b602060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190613ec4565b6000611bf381612431565b61012d5460405163557faf8b60e11b81526001600160a01b039091169063aaff5f1690611c2c9089908990899089908990600401614282565b600060405180830381600087803b158015611c4657600080fd5b505af1158015611c5a573d6000803e3d6000fd5b50505050505050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905290611cab848401856142b3565b805190915061ffff81168015611cc357611cc3613ca2565b5060101c61ffff8116600b811115611cdd57611cdd613ca2565b8360200190600b811115611cf357611cf3613ca2565b9081600b811115611d0657611d06613ca2565b905250601081901c6001600160401b0316835260501c6001600160a01b0316604080840191909152602082015160608085019190915290820151608084015201805160e01c60a08301525163ffffffff191660c082015292915050565b600054610100900460ff1615808015611d835750600054600160ff909116105b80611d9d5750303b158015611d9d575060005460ff166001145b611e005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610355565b6000805460ff191660011790558015611e23576000805461ff0019166101001790555b611e2b612a12565b611e33612a41565b611e3b612a68565b611e46600033612a97565b61012d80546001600160a01b0319166001600160a01b038416179055610167805460ff19908116909155600080526101656020527f6fc4690ee0a8b8562a36039ab7ff8396da17acabb7787e1418efa9ff8ff1027a805490911660011790558015610d5c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600081815260fb60205260408120610cc690612aa1565b6000611f1081612431565b61012d546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c90611c2c9089908990899089908990600401614346565b6000611f5481612431565b82611fa3576001611f6484611eee565b11611f9e5760405162461bcd60e51b815260206004820152600a60248201526950422d414c4f412d303160b01b6044820152606401610355565b611ffd565b6000805160206148db8339815191528303611ffd576001611fc384611eee565b11611ffd5760405162461bcd60e51b815260206004820152600a602482015269282116a0a627a096981960b11b6044820152606401610355565b612007838361243b565b604080516e504f5254464f4c494f42524944474560881b8152815190819003600f0181206060808352600b908301526a52454d4f56452d524f4c4560a81b6080830152602082018690526001600160a01b0385168284015291517fbafee6bdc2193912cf2754d0840b53e34485a4341b4071fb7da8d091ffef67bf9181900360a00190a2505050565b6000805160206148db8339815191526120a881612431565b6101675460ff1660018111156120c0576120c0613ca2565b8360018111156120d2576120d2613ca2565b0361210c5760405162461bcd60e51b815260206004820152600a60248201526950422d444243442d303160b01b6044820152606401610355565b81610165600085600181111561212457612124613ca2565b600181111561213557612135613ca2565b81526020810191909152604001600020805460ff1916911515919091179055505050565b61012d54604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156121bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121e49190810190614374565b95945050505050565b60026065540361223f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610355565b6002606555565b600061225485858585612aab565b905061226a8160600151826020015160016124a6565b600b8160200151600b81111561228257612282613ca2565b146122ef5761016354604051631979c2ed60e11b81526001600160a01b03909116906332f385da906122b8908490600401613d22565b600060405180830381600087803b1580156122d257600080fd5b505af11580156122e6573d6000803e3d6000fd5b50505050612320565b61016454604051631979c2ed60e11b81526001600160a01b03909116906332f385da90611a2c908490600401613d22565b5050505050565b6001606555565b61ffff8216600090815261012f602090815260408083206001908101549151600160f01b93810193909352602283019190915260609160420160408051601f198184030181529082905261012d5463040a7bb160e41b83529093506001600160a01b0316906340a7bb10906123b09088903090899060009089906004016143fe565b6040805180830381865afa1580156123cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f09190614446565b50959194509092505050565b60006001600160e01b03198216637965db0b60e01b1480610cc657506301ffc9a760e01b6001600160e01b0319831614610cc6565b6114fa8133612bae565b600082815260c9602052604090206001015461245681612431565b6112d38383612845565b60335460ff16156116625760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610355565b6101635460405163d0478e7b60e01b8152600481018590526000916001600160a01b03169063d0478e7b9060240161010060405180830381865afa1580156124f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612516919061448f565b60808101519091506125575760405162461bcd60e51b815260206004820152600a602482015269282116a2aa272996981960b11b6044820152606401610355565b600b83600b81111561256b5761256b613ca2565b0361260b57600082600181111561258457612584613ca2565b146125cd578060e00151156125c85760405162461bcd60e51b815260206004820152600a60248201526950422d434354522d303360b01b6044820152606401610355565b610ed4565b8060e001516125c85760405162461bcd60e51b815260206004820152600a602482015269282116a1a1aa2916981960b11b6044820152606401610355565b600083600b81111561261f5761261f613ca2565b03610ed4578060e0015115610ed45760405162461bcd60e51b815260206004820152600a602482015269282116ab2a272996981960b11b6044820152606401610355565b610165600084600181111561267a5761267a613ca2565b600181111561268b5761268b613ca2565b815260208101919091526040016000205460ff166126d85760405162461bcd60e51b815260206004820152600a60248201526950422d52424e452d303160b01b6044820152606401610355565b63ffffffff84166000908152610166602052604081205461ffff16908190036127305760405162461bcd60e51b815260206004820152600a602482015269282116a222272996981960b11b6044820152606401610355565b82516001600160401b031660000361275c57612750848261ffff16612c07565b6001600160401b031683525b600061276784612c35565b9050600085600181111561277d5761277d613ca2565b036127ee57600061278f838386612cf4565b905063ffffffff871660008760018111156127ac576127ac613ca2565b7f1480dccf62ddb3eb50f0ac46d4569e7e713ed74801bf258a27d32c5fcc2f71486002858a6040516127e093929190614526565b60405180910390a450610c2d565b60405162461bcd60e51b815260206004820152600a602482015269282116a921272296981960b11b6044820152606401610355565b61282d8282612e4e565b600082815260fb602052604090206112d39082612ed4565b61284f8282612ee9565b600082815260fb602052604090206112d39082612f50565b61286f612f65565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6128c1612460565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861289c3390565b600061199e8383612fae565b6060818451601f6129139190614545565b10156129525760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610355565b61295c8284614545565b845110156129a05760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610355565b6060821580156129bf5760405191506000825260208201604052612a09565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156129f85780518352602092830192016129e0565b5050858452601f01601f1916604052505b50949350505050565b600054610100900460ff16612a395760405162461bcd60e51b815260040161035590614558565b611662612fd8565b600054610100900460ff166116625760405162461bcd60e51b815260040161035590614558565b600054610100900460ff16612a8f5760405162461bcd60e51b815260040161035590614558565b61166261300b565b610d5c8282612823565b6000610cc6825490565b6040805160e081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c08201529051635a17e72760e11b8152309063b42fce4e90612b0590869086906004016145a3565b60e060405180830381865afa158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4691906145b7565b4260a0820152905063ffffffff84166001866001811115612b6957612b69613ca2565b7f1480dccf62ddb3eb50f0ac46d4569e7e713ed74801bf258a27d32c5fcc2f71486002600086604051612b9e93929190614526565b60405180910390a4949350505050565b612bb882826119a5565b610d5c57612bc581613032565b612bd0836020613044565b604051602001612be192919061465b565b60408051601f198184030181529082905262461bcd60e51b825261035591600401613b6b565b600080836001811115612c1c57612c1c613ca2565b03610cc657612c2a826131df565b61199e9060016146d0565b606060008061ffff1660108460200151600b811115612c5657612c56613ca2565b85516040808801516060808a01516080808c015160a0808e015160c0909e0151875161ffff9a909a16909a1b602098891b6bffffffffffffffff000000001696861b6bffffffffffffffffffffffff1916969096179590951799909917958701959095528584015284019590955263ffffffff90971663ffffffff199093169290921781830152855180820390920182529091019093525090919050565b6000804711612d325760405162461bcd60e51b815260206004820152600a60248201526950422d4342495a2d303160b01b6044820152606401610355565b61ffff8416600090815261012f60205260409020543090600160301b900460ff1615612da2576001600160a01b038316612d9b5760405162461bcd60e51b815260206004820152600a60248201526950422d554650452d303160b01b6044820152606401610355565b5081612e43565b6001600160a01b03831615612e43576000836001600160a01b03163460405160006040518083038185875af1925050503d8060008114612dfe576040519150601f19603f3d011682016040523d82523d6000602084013e612e03565b606091505b5050905080612e415760405162461bcd60e51b815260206004820152600a60248201526950422d554650522d303160b01b6044820152606401610355565b505b6121e4858583613257565b612e5882826119a5565b610d5c57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e903390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061199e836001600160a01b038416613410565b612ef382826119a5565b15610d5c57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061199e836001600160a01b03841661345f565b60335460ff166116625760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610355565b6000826000018281548110612fc557612fc5614330565b9060005260206000200154905092915050565b600054610100900460ff16612fff5760405162461bcd60e51b815260040161035590614558565b6033805460ff19169055565b600054610100900460ff166123275760405162461bcd60e51b815260040161035590614558565b6060610cc66001600160a01b03831660145b606060006130538360026146f0565b61305e906002614545565b6001600160401b038111156130755761307561379a565b6040519080825280601f01601f19166020018201604052801561309f576020820181803683370190505b509050600360fc1b816000815181106130ba576130ba614330565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130e9576130e9614330565b60200101906001600160f81b031916908160001a905350600061310d8460026146f0565b613118906001614545565b90505b6001811115613190576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061314c5761314c614330565b1a60f81b82828151811061316257613162614330565b60200101906001600160f81b031916908160001a90535060049490941c9361318981614707565b905061311b565b50831561199e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610355565b61012d54604051630f428ae960e31b815261ffff831660048201523060248201526000916001600160a01b031690637a14574890604401602060405180830381865afa158015613233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061471e565b61ffff8316600090815261012e60205260408120805482919061327990613e28565b80601f01602080910402602001604051908101604052809291908181526020018280546132a590613e28565b80156132f25780601f106132c7576101008083540402835291602001916132f2565b820191906000526020600020905b8154815290600101906020018083116132d557829003601f168201915b5050505050905080516000036133375760405162461bcd60e51b815260206004820152600a6024820152694c412d44434e542d303160b01b6044820152606401610355565b600080613344878761232e565b90925090506001600160a01b038516301461339657813410156133965760405162461bcd60e51b815260206004820152600a6024820152694c412d49554d462d303160b01b6044820152606401610355565b61012d5460405162c5803160e81b81526001600160a01b039091169063c58031009084906133d3908b9088908c908c906000908a9060040161473b565b6000604051808303818588803b1580156133ec57600080fd5b505af1158015613400573d6000803e3d6000fd5b50949a9950505050505050505050565b600081815260018301602052604081205461345757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cc6565b506000610cc6565b6000818152600183016020526040812054801561354857600061348360018361426f565b85549091506000906134979060019061426f565b90508181146134fc5760008660000182815481106134b7576134b7614330565b90600052602060002001549050808760000184815481106134da576134da614330565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061350d5761350d6147a2565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cc6565b6000915050610cc6565b5092915050565b803561ffff8116811461356b57600080fd5b919050565b60008083601f84011261358257600080fd5b5081356001600160401b0381111561359957600080fd5b6020830191508360208285010111156135b157600080fd5b9250929050565b6001600160401b03811681146114fa57600080fd5b600080600080600080608087890312156135e657600080fd5b6135ef87613559565b955060208701356001600160401b038082111561360b57600080fd5b6136178a838b01613570565b90975095506040890135915061362c826135b8565b9093506060880135908082111561364257600080fd5b5061364f89828a01613570565b979a9699509497509295939492505050565b80356002811061356b57600080fd5b63ffffffff811681146114fa57600080fd5b6000806000806080858703121561369857600080fd5b6136a185613661565b935060208501356136b181613670565b93969395505050506040820135916060013590565b6000602082840312156136d857600080fd5b81356001600160e01b03198116811461199e57600080fd5b6001600160a01b03811681146114fa57600080fd5b803561356b816136f0565b60006020828403121561372257600080fd5b813561199e816136f0565b60006020828403121561373f57600080fd5b61199e82613559565b60008060006040848603121561375d57600080fd5b61376684613559565b925060208401356001600160401b0381111561378157600080fd5b61378d86828701613570565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156137d2576137d261379a565b60405290565b60405161010081016001600160401b03811182821017156137d2576137d261379a565b604051601f8201601f191681016001600160401b03811182821017156138235761382361379a565b604052919050565b600c81106114fa57600080fd5b63ffffffff19811681146114fa57600080fd5b60008060008084860361014081121561386357600080fd5b853561386e81613670565b945061387c60208701613661565b935060e0603f198201121561389057600080fd5b506138996137b0565b60408601356138a7816135b8565b815260608601356138b78161382b565b602082015260808601356138ca816136f0565b604082015260a086810135606083015260c0870135608083015260e0870135908201526101008601356138fc81613838565b60c082015291506139106101208601613705565b905092959194509250565b60008060006060848603121561393057600080fd5b61393984613661565b9250602084013561394981613670565b929592945050506040919091013590565b60006020828403121561396c57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156139ab5783518352928401929184019160010161398f565b50909695505050505050565b80151581146114fa57600080fd5b600080600080600080600060c0888a0312156139e057600080fd5b6139e988613661565b965060208801356139f981613670565b955060408801356001600160401b03811115613a1457600080fd5b613a208a828b01613570565b9096509450506060880135613a3481613670565b92506080880135915060a0880135613a4b816139b7565b8091505092959891949750929550565b60008060408385031215613a6e57600080fd5b823591506020830135613a80816136f0565b809150509250929050565b60008060408385031215613a9e57600080fd5b613aa783613661565b91506020830135613a8081613670565b600080600060608486031215613acc57600080fd5b613ad584613661565b92506020840135613ae581613670565b91506040840135613af5816139b7565b809150509250925092565b600060208284031215613b1257600080fd5b61199e82613661565b60005b83811015613b36578181015183820152602001613b1e565b50506000910152565b60008151808452613b57816020860160208601613b1b565b601f01601f19169290920160200192915050565b60208152600061199e6020830184613b3f565b60008060408385031215613b9157600080fd5b50508035926020909101359150565b60008060008060808587031215613bb657600080fd5b8435935060208501359250604085013591506060850135613bd6816139b7565b939692955090935050565b600080600080600060608688031215613bf957600080fd5b613c0286613559565b945060208601356001600160401b0380821115613c1e57600080fd5b613c2a89838a01613570565b90965094506040880135915080821115613c4357600080fd5b50613c5088828901613570565b969995985093965092949392505050565b60008060208385031215613c7457600080fd5b82356001600160401b03811115613c8a57600080fd5b613c9685828601613570565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b6001600160401b0381511682526020810151600c8110613cda57613cda613ca2565b60208301526040818101516001600160a01b031690830152606080820151908301526080808201519083015260a0818101519083015260c09081015163ffffffff1916910152565b60e08101610cc68284613cb8565b600080600080600060808688031215613d4857600080fd5b613d5186613559565b9450613d5f60208701613559565b93506040860135925060608601356001600160401b03811115613d8157600080fd5b613c5088828901613570565b60008060408385031215613da057600080fd5b613da983613661565b91506020830135613a80816139b7565b60008060008060808587031215613dcf57600080fd5b613dd885613559565b9350613de660208601613559565b92506040850135613df6816136f0565b9396929550929360600135925050565b60028110613e1657613e16613ca2565b9052565b60208101610cc68284613e06565b600181811c90821680613e3c57607f821691505b602082108103613e5c57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006121e4604083018486613e72565b805161356b816139b7565b600060208284031215613ed657600080fd5b815161199e816139b7565b60608101613eef8286613e06565b63ffffffff93909316602082015260400152919050565b60006020808385031215613f1957600080fd5b82516001600160401b0380821115613f3057600080fd5b818501915085601f830112613f4457600080fd5b815181811115613f5657613f5661379a565b8060051b9150613f678483016137fb565b8181529183018401918481019088841115613f8157600080fd5b938501935b83851015613f9f57845182529385019390850190613f86565b98975050505050505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b601f8211156112d357600081815260208120601f850160051c81016020861015613ff85750805b601f850160051c820191505b81811015610c2d57828155600101614004565b81516001600160401b038111156140305761403061379a565b6140448161403e8454613e28565b84613fd1565b602080601f83116001811461407957600084156140615750858301515b600019600386901b1c1916600185901b178555610c2d565b600085815260208120601f198616915b828110156140a857888601518255948401946001909101908401614089565b50858210156140c65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081016140e48285613e06565b61ffff831660208301529392505050565b61ffff8716815260a06020820152600061411360a083018789613e72565b63ffffffff95909516604083015250606081019290925215156080909101529392505050565b6000815461414681613e28565b808552602060018381168015614163576001811461417d576141ab565b60ff1985168884015283151560051b8801830195506141ab565b866000528260002060005b858110156141a35781548a8201860152908301908401614188565b890184019650505b505050505092915050565b61ffff851681526060602082015260006141d36060830186614139565b82810360408401526141e6818587613e72565b979650505050505050565b604081016141ff8285613e06565b63ffffffff831660208301529392505050565b606081016142208286613e06565b63ffffffff841660208301528215156040830152949350505050565b61ffff83168152604060208201526000610c996040830184614139565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cc657610cc6614259565b61ffff861681526060602082015260006142a0606083018688613e72565b8281036040840152613f9f818587613e72565b6000608082840312156142c557600080fd5b82601f8301126142d457600080fd5b604051608081018181106001600160401b03821117156142f6576142f661379a565b60405280608084018581111561430b57600080fd5b845b8181101561432557803583526020928301920161430d565b509195945050505050565b634e487b7160e01b600052603260045260246000fd5b600061ffff8088168352808716602084015250846040830152608060608301526141e6608083018486613e72565b60006020828403121561438657600080fd5b81516001600160401b038082111561439d57600080fd5b818401915084601f8301126143b157600080fd5b8151818111156143c3576143c361379a565b6143d6601f8201601f19166020016137fb565b91508082528560208285010111156143ed57600080fd5b612a09816020840160208601613b1b565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061442c90830186613b3f565b84151560608401528281036080840152613f9f8185613b3f565b6000806040838503121561445957600080fd5b505080516020909101519092909150565b805161356b816136f0565b80516007811061356b57600080fd5b805161356b81613670565b600061010082840312156144a257600080fd5b6144aa6137d8565b825160ff811681146144bb57600080fd5b81526144c96020840161446a565b60208201526144da60408401614475565b60408201526144eb60608401614484565b60608201526080830151608082015260a083015160a082015260c083015160c082015261451a60e08401613eb9565b60e08201529392505050565b60ff84168152602081018390526101208101610c996040830184613cb8565b80820180821115610cc657610cc6614259565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081526000610c99602083018486613e72565b600060e082840312156145c957600080fd5b60405160e081018181106001600160401b03821117156145eb576145eb61379a565b60405282516145f9816135b8565b815260208301516146098161382b565b6020820152604083015161461c816136f0565b80604083015250606083015160608201526080830151608082015260a083015160a082015260c083015161464f81613838565b60c08201529392505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614693816017850160208801613b1b565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516146c4816028840160208801613b1b565b01602801949350505050565b6001600160401b0381811683821601908082111561355257613552614259565b8082028115828204841417610cc657610cc6614259565b60008161471657614716614259565b506000190190565b60006020828403121561473057600080fd5b815161199e816135b8565b61ffff8716815260c06020820152600061475860c0830188613b3f565b828103604084015261476a8188613b3f565b6001600160a01b0387811660608601528616608085015283810360a085015290506147958185613b3f565b9998505050505050505050565b634e487b7160e01b600052603160045260246000fdfe307839306637396266366562326334663837303336356537383539383265316631303165393362393036303030303030303030303030303030313030303030303030343134633466353433343333333133313333303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303239613232343161663632633030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303635633530393863751b795d24b92e3d92d1d0d8f2885f4e9c9c269da350af36ae6b49069babf4bfb0f04d2e44f4b417ab78712b52802767b073e39f75dba9f6e3a31125b053f026a26469706673582212200512242717dfac6186198821b481eb859f3bdb58af8d6bc68c457aa481e949f364736f6c63430008110033