0 txs
0 calls
constructor
No constructor.
functions
across
viewfunction across() view returns (address)
acrossAdmin
viewfunction acrossAdmin() view returns (address)
burnRouter
viewfunction burnRouter() view returns (address)
chainId
viewfunction chainId() view returns (uint256)
chainIdMapping
viewfunction chainIdMapping(uint256) view returns (uint256 middleChain, uint256 destinationChain)
exchangeConnector
viewfunction exchangeConnector(uint256) view returns (address)
extendedCcExchangeRequests
viewfunction extendedCcExchangeRequests(bytes32) view returns (uint256 chainId, bool isRequestCompleted, uint256 remainedInputAmount, uint256 bridgeFee, uint256 thirdParty, uint256 protocolFee, uint256 thirdPartyFee, uint256 lockerFee)
fillerAddress
viewfunction fillerAddress(bytes32, address, address, uint256, uint256, uint256) view returns (address)
getDestChainId
viewfunction getDestChainId(uint256 chainId) view returns (uint256)
isChainSupported
viewfunction isChainSupported(uint256) view returns (bool)
isRequestUsed
viewfunction isRequestUsed(bytes32 _txId) view returns (bool)
isTokenSupported
viewfunction isTokenSupported(uint256, address) view returns (bool)
lockerPercentageFee
viewfunction lockerPercentageFee() view returns (uint256)
lockers
viewfunction lockers() view returns (address)
owner
viewfunction owner() view returns (address)
protocolPercentageFee
viewfunction protocolPercentageFee() view returns (uint256)
relay
viewfunction relay() view returns (address)
rewardDistributor
viewfunction rewardDistributor() view returns (address)
specialTeleporter
viewfunction specialTeleporter() view returns (address)
startingBlockNumber
viewfunction startingBlockNumber() view returns (uint256)
teleBTC
viewfunction teleBTC() view returns (address)
thirdPartyAddress
viewfunction thirdPartyAddress(uint256) view returns (address)
thirdPartyFee
viewfunction thirdPartyFee(uint256) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
wrappedNativeToken
viewfunction wrappedNativeToken() view returns (address)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address _token, uint256 _amount)
fillTx
payablefunction fillTx(bytes32 _txId, address _recipient, address _token, uint256 _amount, uint256 _destinationChainId, uint256 _bridgeFee) payable
initialize
nonpayablefunction initialize(uint256 _startingBlockNumber, uint256 _protocolPercentageFee, uint256 _lockerPercentageFee, uint256 _chainId, address _lockers, address _relay, address _teleBTC, address _treasury, address _across, address _burnRouter)
refundByOwnerOrAdmin
nonpayablefunction refundByOwnerOrAdmin(bytes32 _txId, uint8 _scriptType, bytes _userScript, bytes _lockerLockingScript)
renounceOwnership
nonpayablefunction renounceOwnership()
setAcross
nonpayablefunction setAcross(address _across)
setAcrossAdmin
nonpayablefunction setAcrossAdmin(address _acrossAdmin)
setBurnRouter
nonpayablefunction setBurnRouter(address _burnRouter)
setChainIdMapping
nonpayablefunction setChainIdMapping(uint256 _destinationChain, uint256 _mappedId)
setExchangeConnector
nonpayablefunction setExchangeConnector(uint256 _appId, address _exchangeConnector)
setLockerPercentageFee
nonpayablefunction setLockerPercentageFee(uint256 _lockerPercentageFee)
setLockers
nonpayablefunction setLockers(address _lockers)
setProtocolPercentageFee
nonpayablefunction setProtocolPercentageFee(uint256 _protocolPercentageFee)
setRelay
nonpayablefunction setRelay(address _relay)
setRewardDistributor
nonpayablefunction setRewardDistributor(address _rewardDistributor)
setSpecialTeleporter
nonpayablefunction setSpecialTeleporter(address _specialTeleporter)
setStartingBlockNumber
nonpayablefunction setStartingBlockNumber(uint256 _startingBlockNumber)
setTeleBTC
nonpayablefunction setTeleBTC(address _teleBTC)
setThirdPartyAddress
nonpayablefunction setThirdPartyAddress(uint256 _thirdPartyId, address _thirdPartyAddress)
setThirdPartyFee
nonpayablefunction setThirdPartyFee(uint256 _thirdPartyId, uint256 _thirdPartyFee)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setWrappedNativeToken
nonpayablefunction setWrappedNativeToken(address _wrappedNativeToken)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
wrapAndSwap
payablefunction wrapAndSwap(tuple _txAndProof, bytes _lockerLockingScript, address[] _path) payable returns (bool)
wrapAndSwapWithCustomBridgeFee
payablefunction wrapAndSwapWithCustomBridgeFee(tuple _txAndProof, bytes _lockerLockingScript, address[] _path, uint256 _customBridgeFee) payable returns (bool)
events
AcrossUpdated
event AcrossUpdated(address oldAcross, address newAcross)
BurnRouterUpdated
event BurnRouterUpdated(address oldBurnRouter, address newBurnRouter)
FailedWrapAndSwap
event FailedWrapAndSwap(address lockerTargetAddress, address indexed recipientAddress, address[2] inputAndOutputToken, uint256[2] inputAndOutputAmount, uint256 indexed speed, address indexed teleporter, bytes32 bitcoinTxId, uint256 appId, uint256 thirdPartyId, uint256[5] fees, uint256 destinationChainId)
FillerRefunded
event FillerRefunded(address filler, bytes32 txId, uint256 amount)
Initialized
event Initialized(uint8 version)
NewChainIdMapping
event NewChainIdMapping(uint256 destinationChain, uint256 mappedChainId)
NewLockers
event NewLockers(address oldLockers, address newLockers)
NewProtocolPercentageFee
event NewProtocolPercentageFee(uint256 oldProtocolPercentageFee, uint256 newProtocolPercentageFee)
NewRelay
event NewRelay(address oldRelay, address newRelay)
NewSpecialTeleporter
event NewSpecialTeleporter(address oldSpecialTeleporter, address newSpecialTeleporter)
NewTeleBTC
event NewTeleBTC(address oldTeleBTC, address newTeleBTC)
NewThirdPartyAddress
event NewThirdPartyAddress(uint256 thirdPartyId, address oldThirdPartyAddress, address newThirdPartyAddress)
NewThirdPartyFee
event NewThirdPartyFee(uint256 thirdPartyId, uint256 oldThirdPartyFee, uint256 newThirdPartyFee)
NewTreasury
event NewTreasury(address oldTreasury, address newTreasury)
NewWrapAndSwap
event NewWrapAndSwap(address lockerTargetAddress, address indexed user, address[2] inputAndOutputToken, uint256[2] inputAndOutputAmount, uint256 indexed speed, address indexed teleporter, bytes32 bitcoinTxId, uint256 appId, uint256 thirdPartyId, uint256[5] fees, uint256 destinationChainId)
NewWrappedNativeToken
event NewWrappedNativeToken(address oldWrappedNativeToken, address newWrappedNativeToken)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RefundProcessed
event RefundProcessed(bytes32 indexed txId, address indexed refundedBy, uint256 failedRequestAmount, uint256 refundAmount, bytes userScript, uint8 scriptType, address lockerTargetAddress, uint256 burnRequestCounter)
RequestFilled
event RequestFilled(address filler, bytes32 txId, address recipient, address token, uint256 amount, uint256 destinationChainId, uint256 acrossRelayerFee)
SetExchangeConnector
event SetExchangeConnector(uint256 appId, address exchangeConnector)
errors
ZeroAddress
error ZeroAddress()
creation bytecode
0x608060405234801561001057600080fd5b5061514d806100206000396000f3fe60806040526004361061023d5760003560e01c806306be8b0e1461024957806317fcb39b146102eb5780631812adb6146103185780631876dec41461033c5780631dc4b09c1461035c5780631e7107c71461037e578063292c1d921461039e578063303a785d146103be5780633bedb3d5146103de5780634e63ba95146103fe5780635221c1f01461044757806352b30d281461048757806359fd0b0c1461049a57806361be10f2146104c757806361d027b3146104e757806363908020146105075780636600203d1461051d5780636b2857ef1461053d5780636c32b2ec1461055d5780636e8adf611461057d57806370872aa5146105b3578063715018a6146105c957806375979f79146105de57806379023909146106195780637a218135146106395780637ed557481461064c5780637f0f18171461066c57806380bc47261461068c578063878269b5146106ac57806387c554f8146106cc5780638c0d9dca146106ec5780638d3d78cd1461070c5780638d5fc1d41461072c5780638da5cb5b1461074c5780638f0c5083146107615780638f9eb78b14610781578063900b0166146107a157806395ccea67146107b45780639a8a0592146107d4578063a1809b95146107ea578063a9b682711461080a578063acc2166a14610840578063acc6e09214610860578063b14d3532146108bf578063b59589d1146108df578063c805f68b146108ff578063da058ae31461091f578063f0f442601461093f578063f2fde38b1461095f578063fbb9aacf1461097f57600080fd5b3661024457005b600080fd5b34801561025557600080fd5b506102ab610264366004614595565b60a76020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959660ff90951695939492939192909188565b604080519889529615156020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100015b60405180910390f35b3480156102f757600080fd5b5060a95461030b906001600160a01b031681565b6040516102e29190614987565b34801561032457600080fd5b5061032e60025481565b6040519081526020016102e2565b34801561034857600080fd5b5060055461030b906001600160a01b031681565b34801561036857600080fd5b5061037c610377366004614471565b61099f565b005b34801561038a57600080fd5b5061037c610399366004614595565b6109b3565b3480156103aa57600080fd5b5060a85461030b906001600160a01b031681565b3480156103ca57600080fd5b5061037c6103d9366004614620565b6109c4565b3480156103ea57600080fd5b5061037c6103f9366004614471565b610d61565b34801561040a57600080fd5b50610432610419366004614595565b60ab602052600090815260409020805460019091015482565b604080519283526020830191909152016102e2565b34801561045357600080fd5b50610477610462366004614595565b60a66020526000908152604090205460ff1681565b60405190151581526020016102e2565b61037c6104953660046145c5565b610d72565b3480156104a657600080fd5b5061032e6104b5366004614595565b60ac6020526000908152604090205481565b3480156104d357600080fd5b5061037c6104e2366004614471565b611170565b3480156104f357600080fd5b5060075461030b906001600160a01b031681565b34801561051357600080fd5b5061032e60b05481565b34801561052957600080fd5b5061037c610538366004614595565b611181565b34801561054957600080fd5b5061037c6105583660046147c2565b611192565b34801561056957600080fd5b5060aa5461030b906001600160a01b031681565b34801561058957600080fd5b5061030b610598366004614595565b6008602052600090815260409020546001600160a01b031681565b3480156105bf57600080fd5b5061032e60005481565b3480156105d557600080fd5b5061037c611200565b3480156105ea57600080fd5b506104776105f93660046147c2565b60a560209081526000928352604080842090915290825290205460ff1681565b34801561062557600080fd5b5060045461030b906001600160a01b031681565b6104776106473660046146a8565b61120a565b34801561065857600080fd5b5061037c610667366004614595565b611753565b34801561067857600080fd5b5061037c610687366004614471565b611764565b34801561069857600080fd5b506104776106a7366004614595565b611775565b3480156106b857600080fd5b5061037c6106c7366004614471565b61179e565b3480156106d857600080fd5b5060af5461030b906001600160a01b031681565b3480156106f857600080fd5b5061037c610707366004614812565b6117c8565b34801561071857600080fd5b5060065461030b906001600160a01b031681565b34801561073857600080fd5b5061037c6107473660046147c2565b611941565b34801561075857600080fd5b5061030b611957565b34801561076d57600080fd5b5061037c61077c3660046147f1565b611966565b34801561078d57600080fd5b5061037c61079c3660046147f1565b611978565b6104776107af366004614731565b61198a565b3480156107c057600080fd5b5061037c6107cf3660046144a9565b611e6f565b3480156107e057600080fd5b5061032e60015481565b3480156107f657600080fd5b5061037c610805366004614471565b611f3a565b34801561081657600080fd5b5061030b610825366004614595565b60ad602052600090815260409020546001600160a01b031681565b34801561084c57600080fd5b5060b15461030b906001600160a01b031681565b34801561086c57600080fd5b5061030b61087b3660046145c5565b60ae6020908152600096875260408088208252958752858720815293865284862084529185528385208352845282842090915282529020546001600160a01b031681565b3480156108cb57600080fd5b5061037c6108da366004614471565b611f64565b3480156108eb57600080fd5b5060035461030b906001600160a01b031681565b34801561090b57600080fd5b5061037c61091a366004614471565b611f75565b34801561092b57600080fd5b5061037c61093a366004614471565b611f86565b34801561094b57600080fd5b5061037c61095a366004614471565b611f97565b34801561096b57600080fd5b5061037c61097a366004614471565b611fa8565b34801561098b57600080fd5b5061032e61099a366004614595565b61201e565b6109a7612033565b6109b081612092565b50565b6109bb612033565b6109b081612124565b6109cc61218c565b60af546001600160a01b03163314806109fd57506109e8611957565b6001600160a01b0316336001600160a01b0316145b610a4e5760405162461bcd60e51b815260206004820152601e60248201527f45786368616e6765526f757465723a206e6f7420617574686f72697a6564000060448201526064015b60405180910390fd5b600085815260a7602052604090206001015460ff1615610a805760405162461bcd60e51b8152600401610a4590614b7e565b600085815260a76020526040908190206001818101805460ff191690911790556002015460065460aa54925163095ea7b360e01b815291926001600160a01b039182169263095ea7b392610ada9216908590600401614b10565b602060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2c91906144d4565b5060055460405163626885b560e11b81526000916001600160a01b03169063c4d10b6a90610b609087908790600401614b29565b60206040518083038186803b158015610b7857600080fd5b505afa158015610b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb0919061448d565b60aa549091506000906001600160a01b0316633fea4367848860ff8b166005811115610bec57634e487b7160e01b600052602160045260246000fd5b898960006040518763ffffffff1660e01b8152600401610c1196959493929190614e7a565b602060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6391906145ad565b9050336001600160a01b0316887f79bab54e96d1977794ba96251faf4af21e4c1e824335ed0e33ad672cc463194b85848a8c88600160aa60009054906101000a90046001600160a01b03166001600160a01b031663930a60e88c6040518263ffffffff1660e01b8152600401610cd99190614987565b60206040518083038186803b158015610cf157600080fd5b505afa158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2991906145ad565b610d339190615073565b604051610d4596959493929190614f58565b60405180910390a3505050610d5a6001606f55565b5050505050565b610d69612033565b6109b0816121ed565b610d7a61218c565b60008681526009602052604090206005015460ff1615610dac5760405162461bcd60e51b8152600401610a4590614b7e565b600086815260ae602090815260408083206001600160a01b0389811685529083528184208882168552835281842087855283528184208685528352818420858552909252909120541615610e425760405162461bcd60e51b815260206004820152601e60248201527f45786368616e6765526f757465723a20616c72656164792066696c6c656400006044820152606401610a45565b600086815260ae602090815260408083206001600160a01b0389811685529083528184209088168452825280832086845282528083208584528252808320848452909152902080546001600160a01b0319163317905560015482141561104e576001600160a01b03841660011415610fab57823414610f025760405162461bcd60e51b815260206004820152601c60248201527b115e18da185b99d9549bdd5d195c8e881ddc9bdb99c8185b5bdd5b9d60221b6044820152606401610a45565b6000856001600160a01b03168460405160006040518083038185875af1925050503d8060008114610f4f576040519150601f19603f3d011682016040523d82523d6000602084013e610f54565b606091505b5050905080610fa55760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765526f757465723a207472616e73666572206661696c6564006044820152606401610a45565b506110f9565b6040516323b872dd60e01b81526001600160a01b038516906323b872dd90610fdb90339089908890600401614a4f565b602060405180830381600087803b158015610ff557600080fd5b505af1158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d91906144d4565b6110495760405162461bcd60e51b8152600401610a4590614bbf565b6110f9565b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061107e90339030908890600401614a4f565b602060405180830381600087803b15801561109857600080fd5b505af11580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d091906144d4565b6110ec5760405162461bcd60e51b8152600401610a4590614bbf565b6110f9828585888561227f565b60408051338152602081018890526001600160a01b0387811682840152861660608201526080810185905260a0810184905260c0810183905290517fb6e47711799f0cc9b7a03c6f67a2ec7714c0f80543b870b5e4a19440cdedf8e69181900360e00190a16111686001606f55565b505050505050565b611178612033565b6109b0816123e6565b611189612033565b6109b08161244f565b61119a612033565b60008281526008602090815260409182902080546001600160a01b0319166001600160a01b0385169081179091558251858152918201527f31a8c4e62daac2a3ed5d713004d9ae867d6dcddfa35603db2a4b65d9236b1bc1910160405180910390a15050565b611208612033565b565b600061121461218c565b6004546001600160a01b0316336001600160a01b0316146112475760405162461bcd60e51b8152600401610a4590614cb2565b6000548560800151101561126d5760405162461bcd60e51b8152600401610a4590614d34565b60608501516001600160e01b031916156112995760405162461bcd60e51b8152600401610a4590614bf5565b60055460405163aff2faa360e01b81526001600160a01b039091169063aff2faa3906112cb9087908790600401614b29565b60206040518083038186803b1580156112e357600080fd5b505afa1580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b91906144d4565b6113375760405162461bcd60e51b8152600401610a4590614d69565b6006546003546040516342cfb5c360e11b8152600092731c29494d9475777c4c2881e2174bf89d5ef5ce529263859f6b8692611391928b9260099260a7926001600160a01b03908116928e928e9290911690600401614d9d565b60206040518083038186803b1580156113a957600080fd5b505af41580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e191906145ad565b600081815260a76020526040812054919250906113fd9061201e565b90508061144c5760405162461bcd60e51b815260206004820181905260248201527f45786368616e6765526f757465723a20696e76616c696420636861696e2069646044820152606401610a45565b600082815260096020908152604080832081516101608101835281548152600182015481850152600282015481840152600382015460ff808216151560608401526101009091046001600160a01b03166080830152600483015460a0830152600583015416151560c08201526006820180548451818702810187019095528085529194929360e086019390929083018282801561151257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114f4575b505050918352505060078201546020808301919091526008808401546040808501919091526009909401546060909301929092528351600090815291905220549091506001600160a01b03168061157b5760405162461bcd60e51b8152600401610a4590614c7b565b6115bc88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250612476915050565b816101200151600114156116e457600084815260ae6020908152604080832060808601516001600160a01b03168452909152812060e0840151805183919061160690600190615073565b8151811061162457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208784015182528252828120888252825282812089825260a78352838220600301548252909152205416905080156116d0576116c281868b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612645915050565b600195505050505050611741565b600085815260096020526040812060080155505b6117388189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508a815260a760205260409020600301548a93508c9250905088612a36565b60019450505050505b61174b6001606f55565b949350505050565b61175b612033565b6109b081612d4a565b61176c612033565b6109b081612dad565b60008181526009602052604081206005015460ff16611795576000611798565b60015b92915050565b6117a6612033565b60af80546001600160a01b0319166001600160a01b0392909216919091179055565b600a54610100900460ff16158080156117e85750600a54600160ff909116105b806118025750303b1580156118025750600a5460ff166001145b6118655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a45565b600a805460ff19166001179055801561188857600a805461ff0019166101001790555b611890612e3f565b611898612e6e565b60018890556118a68b612124565b6118af8a612d4a565b6118b88961244f565b6118c186612e9d565b6118ca87612f2f565b6118d385612dad565b6118dc84612fc1565b6118e5836123e6565b6118ee82612092565b801561193457600a805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b611949612033565b6119538282613053565b5050565b603d546001600160a01b031690565b61196e612033565b61195382826130ef565b611980612033565b6119538282613157565b600061199461218c565b6004546001600160a01b0316336001600160a01b0316146119c75760405162461bcd60e51b8152600401610a4590614cb2565b600054866080015110156119ed5760405162461bcd60e51b8152600401610a4590614d34565b60608601516001600160e01b03191615611a195760405162461bcd60e51b8152600401610a4590614bf5565b60055460405163aff2faa360e01b81526001600160a01b039091169063aff2faa390611a4b9088908890600401614b29565b60206040518083038186803b158015611a6357600080fd5b505afa158015611a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9b91906144d4565b611ab75760405162461bcd60e51b8152600401610a4590614d69565b6006546003546040516342cfb5c360e11b8152600092731c29494d9475777c4c2881e2174bf89d5ef5ce529263859f6b8692611b11928c9260099260a7926001600160a01b03908116928f928f9290911690600401614d9d565b60206040518083038186803b158015611b2957600080fd5b505af4158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6191906145ad565b600081815260a7602052604081205491925090611b7d9061201e565b600083815260096020908152604080832081516101608101835281548152600182015481850152600282015481840152600382015460ff808216151560608401526101009091046001600160a01b03166080830152600483015460a0830152600583015416151560c082015260068201805484518187028101870190955280855296975094959094919360e0860193929190830182828015611c4857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c2a575b505050918352505060078201546020808301919091526008808401546040808501919091526009909401546060909301929092528351600090815291905220549091506001600160a01b031680611cb15760405162461bcd60e51b8152600401610a4590614c7b565b611cf289898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250612476915050565b81610120015160011415611e0d57600084815260ae6020908152604080832060808601516001600160a01b03168452909152812060e08401518051839190611d3c90600190615073565b81518110611d5a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000908120878401518252825282812088825282528281208b825290915220541690508015611df957611deb81868c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612645915050565b600195505050505050611e5c565b600085815260096020526040812060080155505b611e53818a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992508c91508b905088612a36565b60019450505050505b611e666001606f55565b95945050505050565b611e77612033565b611e7f61218c565b6001600160a01b03821660011415611ea757611ea2611e9c611957565b826131b8565b611f30565b816001600160a01b031663a9059cbb611ebe611957565b836040518363ffffffff1660e01b8152600401611edc929190614b10565b602060405180830381600087803b158015611ef657600080fd5b505af1158015611f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2e91906144d4565b505b6119536001606f55565b611f42612033565b60b180546001600160a01b0319166001600160a01b0392909216919091179055565b611f6c612033565b6109b081612f2f565b611f7d612033565b6109b081612e9d565b611f8e612033565b6109b0816132d3565b611f9f612033565b6109b081612fc1565b611fb0612033565b6001600160a01b0381166120155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a45565b6109b08161333c565b600090815260ab602052604090206001015490565b3361203c611957565b6001600160a01b0316146112085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a45565b806001600160a01b0381166120ba5760405163d92e233d60e01b815260040160405180910390fd5b60aa546040517f5b663d57fa8cf393f8c8019f514b25c1b3223c9324a2ce3efe28ce5aef0e62fe916120f9916001600160a01b0390911690859061499b565b60405180910390a15060aa80546001600160a01b0319166001600160a01b0392909216919091179055565b60005481116121875760405162461bcd60e51b815260206004820152602960248201527f434345786368616e6765526f757465723a206c6f77207374617274696e67426c60448201526837b1b5a73ab6b132b960b91b6064820152608401610a45565b600055565b6002606f5414156121df5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a45565b6002606f55565b6001606f55565b806001600160a01b0381166122155760405163d92e233d60e01b815260040160405180910390fd5b6004546040517f8385e8ba7df6e532c24a84c012f3c713627c7e317263aafb3c738427da86325891612254916001600160a01b0390911690859061499b565b60405180910390a150600480546001600160a01b0319166001600160a01b0392909216919091179055565b60a85460405163095ea7b360e01b81526001600160a01b038681169263095ea7b3926122b392909116908790600401614b10565b602060405180830381600087803b1580156122cd57600080fd5b505af11580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230591906144d4565b5060af546000906001600160a01b031683868387670de0b6b3a764000061232c8882615073565b612336908b615054565b6123409190615034565b6123498c61201e565b6000426123588161384061501c565b60006040516024016123749b9a999897969594939291906149b5565b60408051601f19818403018152918152602080830180516001600160e01b0316633dc9c91960e11b17905290519192506000916123b39184910161495e565b60408051601f1981840301815291905260a8549091506123dc906001600160a01b03168261338e565b5050505050505050565b60a8546040517f06e5f2ca1234f717a2031f662608c02182d4f8bdc3dab013ec4c04eb9755313291612425916001600160a01b0390911690849061499b565b60405180910390a160a880546001600160a01b0319166001600160a01b0392909216919091179055565b8061271010156124715760405162461bcd60e51b8152600401610a4590614c36565b60b055565b600554600082815260096020526040908190206001015490516307f3f86760e21b81526001600160a01b0390921691631fcfe19c916124bb9186913091600401614b50565b602060405180830381600087803b1580156124d557600080fd5b505af11580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d91906145ad565b506002546000828152600960205260409020600101546127109161253091615054565b61253a9190615034565b600082815260a76020908152604080832060058101949094556009808352818420600480820154960154855260ac84529184205493869052909152600101546127109161258691615054565b6125909190615034565b600083815260a7602090815260408083206006019390935560b054600990915291902060010154612710916125c491615054565b6125ce9190615034565b600083815260a760205260409020600781018290556006810154600590910154909183916125fb9161501c565b612605919061501c565b61260f919061501c565b60008381526009602052604090206001015461262b9190615073565b600092835260a76020526040909220600201919091555050565b61264f83836133d7565b600083815260096020908152604080832081516101608101835281548152600182015481850152600282015481840152600382015460ff808216151560608401526101009091046001600160a01b03166080830152600483015460a0830152600583015416151560c08201526006820180548451818702810187019095528085529194929360e086019390929083018282801561271557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116126f7575b50505091835250506007828101546020808401919091526008840154604080850191909152600990940154606093840152600089815260a7808352858220865161010081018852815481526001808301805460ff81161515848901526002850154848c0190815260038601549a85019a909a526004808601546080860152600586015460a086015260068087015460c0870152959099015460e0850152958f90529390955260ff19909316909317905590549251935163a9059cbb60e01b8152949550936001600160a01b039092169263a9059cbb926127f8928b929101614b10565b602060405180830381600087803b15801561281257600080fd5b505af1158015612826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284a91906144d4565b5060006040518060a001604052808460a0015181526020018360e0015181526020018360a0015181526020018360c001518152602001836060015181525090506128913390565b608084015160055460405163626885b560e11b81526001600160a01b03938416936001938116926000805160206150f88339815191529291169063c4d10b6a906128df908c90600401614b3d565b60206040518083038186803b1580156128f757600080fd5b505afa15801561290b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292f919061448d565b604080518082019091526006546001600160a01b0316815260e0890151805160208301919061296090600190615073565b8151811061297e57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152506040518060400160405280896040015181526020018a604001518152508c8a600001518a608001518a8e6040516129d9989796959493929190614a73565b60405180910390a460408083015181516001600160a01b038a16815260208101899052918201527fa691ee9f18c723075ade0e555d96de55c74e3e7b7cddc63a0ecbbff7ee6352e79060600160405180910390a150505050505050565b6040805160e08082018352838252602080830189905260008881526009825284812085516101608101875281548152600182015481850152600282015481880152600382015460ff808216151560608401526101009091046001600160a01b03166080830152600483015460a0830152600583015416151560c08201526006820180548851818702810187018a5281815294988998612bd3989097918801969495949086019390929091830182828015612b1957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612afb575b5050509183525050600782810154602080840191909152600884015460408085019190915260099094015460609384015293855260008d815260a7855283902083516101008101855281548152600182015460ff161515818701526002820154818601526003820154818501526004820154608080830191909152600583015460a0830152600683015460c0830152919092015460e0830152938501529083018b905282018990526001600160a01b038c169101526136b5565b915091508115612cc257600086815260a7602052604090206001908101805460ff19169091179055612c0586886133d7565b6001548314612cbd57600086815260a760205260409020548551612cbd91908790612c3290600190615073565b81518110612c5057634e487b7160e01b600052603260045260246000fd5b60200260200101518360018551612c679190615073565b81518110612c8557634e487b7160e01b600052603260045260246000fd5b6020026020010151600960008b815260200190815260200160002060030160019054906101000a90046001600160a01b03168861227f565b6123dc565b600086815260a76020818152604080842060078101546009845291852060040154939092526005820154600690920154909291612cfe9161501c565b612d08919061501c565b612d12919061501c565b90508060a760008981526020019081526020016000206002016000828254612d3a919061501c565b9091555050505050505050505050565b806127101015612d6c5760405162461bcd60e51b8152600401610a4590614c36565b60025460408051918252602082018390527f7d205f60891f60851c61cd244ba387d72b6589e7c0ac41b9d909ab0ce2c2a53b910160405180910390a1600255565b806001600160a01b038116612dd55760405163d92e233d60e01b815260040160405180910390fd5b6006546040517f36a4c08a38b736dcecb6c328dba61238529620e83ccb23db2cc43cd34ec2609691612e14916001600160a01b0390911690859061499b565b60405180910390a150600680546001600160a01b0319166001600160a01b0392909216919091179055565b600a54610100900460ff16612e665760405162461bcd60e51b8152600401610a4590614ce9565b611208613f05565b600a54610100900460ff16612e955760405162461bcd60e51b8152600401610a4590614ce9565b611208613f35565b806001600160a01b038116612ec55760405163d92e233d60e01b815260040160405180910390fd5b6003546040517f4c28a3f61a715259c4dc930c23e7423b8fa52e13232c061a6e488729c66184f491612f04916001600160a01b0390911690859061499b565b60405180910390a150600380546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b038116612f575760405163d92e233d60e01b815260040160405180910390fd5b6005546040517ffa021c2ec0f46429a53e7f88b88065e40001f50c9d38b2e8b713beaf9828d4c391612f96916001600160a01b0390911690859061499b565b60405180910390a150600580546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b038116612fe95760405163d92e233d60e01b815260040160405180910390fd5b6007546040517f567657fa3f286518b318f4a29870674f433f622fdfc819691acb13105b22822591613028916001600160a01b0390911690859061499b565b60405180910390a150600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260ad6020526040908190205490517f1e73962bcff5b98a9ac70c9b0f71fbb31dc0f5a09348c6d3ceab164169a9e729916130b99185916001600160a01b03169085909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a1600091825260ad602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b60408051838152602081018390527f102cb592c601969e68b19c6d96d1fc5f09b9b7214423c922de7dd67fe04cf801910160405180910390a16040805180820182526001805482526020808301958652600094855260ab905291909220915182559151910155565b600082815260ac6020908152604091829020548251858152918201529081018290527f188adabf806a6b6d814acc1dbd9f09e5a251c8c065d6285749a5824e4579b6459060600160405180910390a1600091825260ac602052604090912055565b804710156132085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a45565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613255576040519150601f19603f3d011682016040523d82523d6000602084013e61325a565b606091505b50509050806132ce5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a45565b505050565b60a9546040517f4da8064030e901e42f6de0ab04f4c322d7936d0120503addfe8a51f12709068991613312916001600160a01b0390911690849061499b565b60405180910390a160a980546001600160a01b0319166001600160a01b0392909216919091179055565b603d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606133d083836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250613f5c565b9392505050565b600082815260096020526040902060040154156134855760065460008381526009602052604090819020600490810154915163a9059cbb60e01b81526001600160a01b039093169263a9059cbb9261343192339201614b10565b602060405180830381600087803b15801561344b57600080fd5b505af115801561345f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348391906144d4565b505b600082815260a760205260409020600501541561353757600654600754600084815260a760205260409081902060050154905163a9059cbb60e01b81526001600160a01b039384169363a9059cbb936134e393911691600401614b10565b602060405180830381600087803b1580156134fd57600080fd5b505af1158015613511573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353591906144d4565b505b600082815260a76020526040902060060154156135fe5760068054600084815260a760208181526040808420600480820154865260ad845282862054958a905293909252940154935163a9059cbb60e01b81526001600160a01b039384169463a9059cbb946135aa941692909101614b10565b602060405180830381600087803b1580156135c457600080fd5b505af11580156135d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135fc91906144d4565b505b600082815260a76020526040902060070154156119535760055460405163626885b560e11b8152611953916001600160a01b03169063c4d10b6a90613647908590600401614b3d565b60206040518083038186803b15801561365f57600080fd5b505afa158015613673573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613697919061448d565b600084815260a7602052604090206007810154600490910154613f6b565b60065460c0820151606083810151604090810151905163095ea7b360e01b815260009492936001600160a01b039093169263095ea7b3926136f892600401614b10565b602060405180830381600087803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374a91906144d4565b5060065460a084015180516001600160a01b039092169160009061377e57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161480156138255750604083015160e0015180516137ae90600190615073565b815181106137cc57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03168360a0015160018560a00151516137f49190615073565b8151811061381257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316145b6138715760405162461bcd60e51b815260206004820152601e60248201527f436345786368616e6765526f757465723a20696e76616c6964207061746800006044820152606401610a45565b8260c001516001600160a01b031663b0bbcd888460600151604001518560400151604001518660a00151304260016040518763ffffffff1660e01b81526004016138c096959493929190614edc565b600060405180830381600087803b1580156138da57600080fd5b505af11580156138ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261391691908101906144ee565b90925090508115613d455760015483511415613abe5760a083015180516000919061394390600190615073565b8151811061396157634e487b7160e01b600052603260045260246000fd5b602002602001015190506000826001845161397c9190615073565b8151811061399a57634e487b7160e01b600052603260045260246000fd5b602090810291909101015160a9549091506001600160a01b03838116911614613a4b5760408086015160800151905163a9059cbb60e01b81526001600160a01b0384169163a9059cbb916139f391908590600401614b10565b602060405180830381600087803b158015613a0d57600080fd5b505af1158015613a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4591906144d4565b50613abb565b60a954604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015613a9157600080fd5b505af1158015613aa5573d6000803e3d6000fd5b50505050613abb856040015160800151826131b8565b50505b6000670de0b6b3a76400008460600151606001518360018551613ae19190615073565b81518110613aff57634e487b7160e01b600052603260045260246000fd5b6020026020010151613b119190615054565b613b1b9190615034565b905060006040518060a00160405280866040015160a001518152602001866060015160e001518152602001866060015160a001518152602001866060015160c001518152602001838152509050613b6f3390565b60408087015161012081015160809091015160055460208a0151935163626885b560e11b81526001600160a01b03958616959394928416936000805160206150f88339815191529392169163c4d10b6a91613bcd9190600401614b3d565b60206040518083038186803b158015613be557600080fd5b505afa158015613bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1d919061448d565b604080518082019091526006546001600160a01b0316815260a08b01518051602083019190613c4e90600190615073565b81518110613c6c57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b031681525060405180604001604052808a600081518110613cb557634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001898b60018d51613cd29190615073565b81518110613cf057634e487b7160e01b600052603260045260246000fd5b6020026020010151613d029190615073565b8152508b608001518c60400151600001518d60600151608001518a8f60000151604051613d36989796959493929190614a73565b60405180910390a45050915091565b60006040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509050613d7c3390565b6040808601516101208101516080909101516005546020890151935163626885b560e11b81526001600160a01b03958616959394928416937f4bdbd9bfa84241c4a39e7be48e0a8678cfbecfbcfae5d87f01b13de30b8c9e9a9392169163c4d10b6a91613dec9190600401614b3d565b60206040518083038186803b158015613e0457600080fd5b505afa158015613e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3c919061448d565b604080518082019091526006546001600160a01b0316815260a08a01518051602083019190613e6d90600190615073565b81518110613e8b57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b031681525060405180604001604052808b6060015160400151815260200160008152508a608001518b60400151600001518c60600151608001518a8e60000151604051613ef7989796959493929190614a73565b60405180910390a450915091565b600a54610100900460ff16613f2c5760405162461bcd60e51b8152600401610a4590614ce9565b6112083361333c565b600a54610100900460ff166121e65760405162461bcd60e51b8152600401610a4590614ce9565b606061174b84846000856140f3565b81156132ce5760b1546001600160a01b03161580613f8857508015155b156140175760065460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90613fbf9086908690600401614b10565b602060405180830381600087803b158015613fd957600080fd5b505af1158015613fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401191906144d4565b50505050565b60065460b15460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261404d929116908690600401614b10565b602060405180830381600087803b15801561406757600080fd5b505af115801561407b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409f91906144d4565b5060b154604051614011916001600160a01b0316906140c49086908690602401614b10565b60408051601f198184030181529190526020810180516001600160e01b0316637db4e28f60e01b17905261338e565b6060824710156141545760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a45565b843b6141a25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a45565b600080866001600160a01b031685876040516141be9190614942565b60006040518083038185875af1925050503d80600081146141fb576040519150601f19603f3d011682016040523d82523d6000602084013e614200565b606091505b509150915061421082828661421b565b979650505050505050565b6060831561422a5750816133d0565b82511561423a5782518084602001fd5b8160405162461bcd60e51b8152600401610a459190614b3d565b600082601f830112614264578081fd5b8135602061427961427483614ff9565b614fc9565b80838252828201915082860187848660051b8901011115614298578586fd5b855b858110156142bf5781356142ad816150e2565b8452928401929084019060010161429a565b5090979650505050505050565b805180151581146142dc57600080fd5b919050565b80356001600160e01b0319811681146142dc57600080fd5b60008083601f84011261430a578182fd5b5081356001600160401b03811115614320578182fd5b60208301915083602082850101111561433857600080fd5b9250929050565b600082601f83011261434f578081fd5b81356001600160401b03811115614368576143686150cc565b61437b601f8201601f1916602001614fc9565b81815284602083860101111561438f578283fd5b816020850160208301379081016020019190915292915050565b600060e082840312156143ba578081fd5b6143c2614fa1565b90506143cd826142e1565b815260208201356001600160401b03808211156143e957600080fd5b6143f58583860161433f565b6020840152604084013591508082111561440e57600080fd5b61441a8583860161433f565b604084015261442b606085016142e1565b60608401526080840135608084015260a084013591508082111561444e57600080fd5b5061445b8482850161433f565b60a08301525060c082013560c082015292915050565b600060208284031215614482578081fd5b81356133d0816150e2565b60006020828403121561449e578081fd5b81516133d0816150e2565b600080604083850312156144bb578081fd5b82356144c6816150e2565b946020939093013593505050565b6000602082840312156144e5578081fd5b6133d0826142cc565b60008060408385031215614500578182fd5b614509836142cc565b602084810151919350906001600160401b03811115614526578283fd5b8401601f81018613614536578283fd5b805161454461427482614ff9565b80828252848201915084840189868560051b8701011115614563578687fd5b8694505b83851015614585578051835260019490940193918501918501614567565b5080955050505050509250929050565b6000602082840312156145a6578081fd5b5035919050565b6000602082840312156145be578081fd5b5051919050565b60008060008060008060c087890312156145dd578182fd5b8635955060208701356145ef816150e2565b945060408701356145ff816150e2565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600060808688031215614637578283fd5b85359450602086013560ff8116811461464e578384fd5b935060408601356001600160401b0380821115614669578485fd5b61467589838a0161433f565b9450606088013591508082111561468a578283fd5b50614697888289016142f9565b969995985093965092949392505050565b600080600080606085870312156146bd578182fd5b84356001600160401b03808211156146d3578384fd5b6146df888389016143a9565b955060208701359150808211156146f4578384fd5b614700888389016142f9565b90955093506040870135915080821115614718578283fd5b5061472587828801614254565b91505092959194509250565b600080600080600060808688031215614748578283fd5b85356001600160401b038082111561475e578485fd5b61476a89838a016143a9565b9650602088013591508082111561477f578485fd5b61478b89838a016142f9565b909650945060408801359150808211156147a3578283fd5b506147b088828901614254565b95989497509295606001359392505050565b600080604083850312156147d4578182fd5b8235915060208301356147e6816150e2565b809150509250929050565b60008060408385031215614803578182fd5b50508035926020909101359150565b6000806000806000806000806000806101408b8d031215614831578788fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135614858816150e2565b955060a08b0135614868816150e2565b945060c08b0135614878816150e2565b935060e08b0135614888816150e2565b92506101008b0135614899816150e2565b91506101208b01356148aa816150e2565b809150509295989b9194979a5092959850565b6001600160a01b03169052565b8060005b60058110156140115781518452602093840193909101906001016148ce565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261492e81602086016020860161508a565b601f01601f19169290920160200192915050565b6000825161495481846020870161508a565b9190910192915050565b6000825161497081846020870161508a565b641dc0de008360d81b920191825250600501919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038c811682528b811660208301528a8116604083015289811660608301526080820189905260a0820188905260c08201879052851660e082015263ffffffff848116610100830152831661012082015260ff8216610140820152600061018080610160840152614a3d8184016002815261060f60f31b602082015260400190565b9e9d5050505050505050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0389811682526101c082019060208084018b60005b6002811015614aae578151851683529183019190830190600101614a8f565b5050506060840191508960005b6002811015614ad857815184529282019290820190600101614abb565b505050508660a08301528560c08301528460e0830152614afc6101008301856148ca565b826101a08301529998505050505050505050565b6001600160a01b03929092168252602082015260400190565b60208152600061174b6020830184866148ed565b6020815260006133d06020830184614916565b606081526000614b636060830186614916565b6001600160a01b039490941660208301525060400152919050565b60208082526021908201527f45786368616e6765526f757465723a20616c72656164792070726f63657373656040820152601960fa1b606082015260800190565b6020808252601c908201527b45786368616e6765526f757465723a206e6f20616c6c6f77616e636560201b604082015260600190565b60208082526021908201527f45786368616e6765526f757465723a206e6f6e2d7a65726f206c6f636b74696d6040820152606560f81b606082015260800190565b60208082526025908201527f434345786368616e6765526f757465723a20666565206973206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252601d908201527f45786368616e6765526f757465723a20696e76616c6964206170704964000000604082015260600190565b6020808252601e908201527f45786368616e6765526f757465723a20696e76616c69642073656e6465720000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252601b908201527a115e18da185b99d9549bdd5d195c8e881bdb19081c995c5d595cdd602a1b604082015260600190565b6020808252601a908201527922bc31b430b733b2a937baba32b91d103737ba103637b1b5b2b960311b604082015260600190565b60c08152600063ffffffff60e01b808a511660c084015260208a015160e080850152614dcd6101a0850182614916565b905060408b015160bf198086840301610100870152614dec8383614916565b92508360608e01511661012087015260808d015161014087015260a08d0151935080868403016101608701525050614e248183614916565b91505060c08a0151610180840152886020840152876040840152614e4b60608401886148bd565b8281036080840152614e5e8186886148ed565b915050614e6e60a08301846148bd565b98975050505050505050565b86815260a060208201526000614e9360a0830188614916565b60068710614eaf57634e487b7160e01b82526021600452602482fd5b8660408401528281036060840152614ec88186886148ed565b915050826080830152979650505050505050565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a019350845b81811015614f2b5784516001600160a01b031683529383019391830191600101614f06565b50506001600160a01b039790971660608501525050506080810192909252151560a0909101529392505050565b86815285602082015260c060408201526000614f7760c0830187614916565b60ff959095166060830152506001600160a01b0392909216608083015260a0909101529392505050565b60405160e081016001600160401b0381118282101715614fc357614fc36150cc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614ff157614ff16150cc565b604052919050565b60006001600160401b03821115615012576150126150cc565b5060051b60200190565b6000821982111561502f5761502f6150b6565b500190565b60008261504f57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561506e5761506e6150b6565b500290565b600082821015615085576150856150b6565b500390565b60005b838110156150a557818101518382015260200161508d565b838111156140115750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146109b057600080fdfe83f3c3e82621afa914bb49ee3bc3bcadb1d41b3d6f836aa437172cbb3d4dbb6ea2646970667358221220ed3fd38bdcbd4e3fd071240a86b7e7b68ff6c9dc37b8c8795db0f9417a97c5e964736f6c63430008040033