0 txs
0 calls
constructor
No constructor.
functions
appId
viewfunction appId() view returns (uint256)
ccTransferRequests
viewfunction ccTransferRequests(bytes32) view returns (uint256 inputAmount, address recipientAddress, uint256 fee, uint256 speed, bool isUsed)
chainId
viewfunction chainId() view returns (uint256)
isRequestUsed
viewfunction isRequestUsed(bytes32 _txId) 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)
thirdParty
viewfunction thirdParty(bytes32) view returns (uint256)
thirdPartyAddress
viewfunction thirdPartyAddress(uint256) view returns (address)
thirdPartyFee
viewfunction thirdPartyFee(uint256) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
initialize
nonpayablefunction initialize(uint256 _startingBlockNumber, uint256 _protocolPercentageFee, uint256 _lockerPercentageFee, uint256 _chainId, uint256 _appId, address _relay, address _lockers, address _teleBTC, address _treasury)
renounceOwnership
nonpayablefunction renounceOwnership()
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)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
wrap
payablefunction wrap(tuple _txAndProof, bytes _lockerLockingScript) payable returns (bool)
events
Initialized
event Initialized(uint8 version)
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)
NewWrap
event NewWrap(bytes32 bitcoinTxId, bytes indexed lockerLockingScript, address lockerTargetAddress, address indexed user, address teleporter, uint256[2] amounts, uint256[4] fees, uint256 thirdPartyId, uint256 destinationChainId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ZeroAddress
error ZeroAddress()
creation bytecode
0x608060405234801561001057600080fd5b506142e0806100206000396000f3fe6080604052600436106101775760003560e01c8063136dfb63146101835780631812adb6146101a55780631876dec4146101ce5780631e7107c7146102065780633bedb3d51461022657806359fd0b0c1461024657806361d027b31461027357806363908020146102935780636600203d146102a957806370872aa5146102c9578063715018a6146102df578063765f0233146102f4578063790239091461037d5780637ed557481461039d5780637f0f1817146103bd57806380afdea8146103dd57806380bc4726146103f35780638d3d78cd146104235780638d5fc1d4146104435780638da5cb5b146104635780638f9eb78b146104785780639a8a059214610498578063a1809b95146104ae578063a9b68271146104ce578063acc2166a14610504578063b14d353214610524578063b59589d114610544578063b866d6ea14610564578063c805f68b14610577578063e9770e9314610597578063f0f44260146105c4578063f2fde38b146105e457600080fd5b3661017e57005b600080fd5b34801561018f57600080fd5b506101a361019e366004613d6a565b610604565b005b3480156101b157600080fd5b506101bb60035481565b6040519081526020015b60405180910390f35b3480156101da57600080fd5b506005546101ee906001600160a01b031681565b6040516001600160a01b0390911681526020016101c5565b34801561021257600080fd5b506101a3610221366004613bdb565b610774565b34801561023257600080fd5b506101a3610241366004613b83565b610788565b34801561025257600080fd5b506101bb610261366004613bdb565b60a16020526000908152604090205481565b34801561027f57600080fd5b506008546101ee906001600160a01b031681565b34801561029f57600080fd5b506101bb60a45481565b3480156102b557600080fd5b506101a36102c4366004613bdb565b610799565b3480156102d557600080fd5b506101bb60005481565b3480156102eb57600080fd5b506101a36107aa565b34801561030057600080fd5b5061034b61030f366004613bdb565b6009602052600090815260409020805460018201546002830154600384015460049094015492936001600160a01b039092169290919060ff1685565b604080519586526001600160a01b0390941660208601529284019190915260608301521515608082015260a0016101c5565b34801561038957600080fd5b506007546101ee906001600160a01b031681565b3480156103a957600080fd5b506101a36103b8366004613bdb565b6107b4565b3480156103c957600080fd5b506101a36103d8366004613b83565b6107c5565b3480156103e957600080fd5b506101bb60025481565b3480156103ff57600080fd5b5061041361040e366004613bdb565b6107d6565b60405190151581526020016101c5565b34801561042f57600080fd5b506006546101ee906001600160a01b031681565b34801561044f57600080fd5b506101a361045e366004613d1a565b6107ff565b34801561046f57600080fd5b506101ee610815565b34801561048457600080fd5b506101a3610493366004613d49565b610824565b3480156104a457600080fd5b506101bb60015481565b3480156104ba57600080fd5b506101a36104c9366004613b83565b610836565b3480156104da57600080fd5b506101ee6104e9366004613bdb565b60a2602052600090815260409020546001600160a01b031681565b34801561051057600080fd5b5060a5546101ee906001600160a01b031681565b34801561053057600080fd5b506101a361053f366004613b83565b610860565b34801561055057600080fd5b506004546101ee906001600160a01b031681565b610413610572366004613c0b565b610871565b34801561058357600080fd5b506101a3610592366004613b83565b610cd4565b3480156105a357600080fd5b506101bb6105b2366004613bdb565b60a36020526000908152604090205481565b3480156105d057600080fd5b506101a36105df366004613b83565b610ce5565b3480156105f057600080fd5b506101a36105ff366004613b83565b610cf6565b600a54610100900460ff16158080156106245750600a54600160ff909116105b8061063e5750303b15801561063e5750600a5460ff166001145b6106a65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600a805460ff1916600117905580156106c957600a805461ff0019166101001790555b6106d1610d6c565b6106d9610d9b565b600187905560028690556106ec8a610dca565b6106f589610e32565b6106fe88610edc565b61070785610f48565b61071084610fda565b6107198361106c565b610722826110fe565b801561076857600a805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b61077c611190565b61078581610dca565b50565b610790611190565b610785816111ef565b6107a1611190565b61078581610edc565b6107b2611190565b565b6107bc611190565b61078581610e32565b6107cd611190565b6107858161106c565b60008181526009602052604081206004015460ff166107f65760006107f9565b60015b92915050565b610807611190565b6108118282611281565b5050565b603d546001600160a01b031690565b61082c611190565b610811828261131d565b61083e611190565b60a580546001600160a01b0319166001600160a01b0392909216919091179055565b610868611190565b61078581610fda565b600061087b61137e565b6007546001600160a01b0316336001600160a01b0316146108de5760405162461bcd60e51b815260206004820181905260248201527f43435472616e73666572526f757465723a20696e76616c69642073656e646572604482015260640161069d565b600054846080015110156109405760405162461bcd60e51b8152602060048201526024808201527f43435472616e73666572526f757465723a207265717565737420697320746f6f604482015263081bdb1960e21b606482015260840161069d565b600061095e85600001518660200151876040015188606001516113d8565b60008181526009602052604090206004015490915060ff16156109da5760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a20726571756573742068617320626560448201526d656e2075736564206265666f726560901b606482015260840161069d565b60608501516001600160e01b03191615610a475760405162461bcd60e51b815260206004820152602860248201527f43435472616e73666572526f757465723a206c6f636b2074696d65206973206e6044820152676f6e202d7a65726f60c01b606482015260840161069d565b610a8b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050604087015183611540565b610aa38186608001518760a001518860c00151611998565b610b105760405162461bcd60e51b815260206004820152603860248201527f43435472616e73666572526f757465723a207472616e73616374696f6e2068616044820152771cc81b9bdd081899595b88199a5b985b1a5e9959081e595d60421b606482015260840161069d565b6000806000806000610b5989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611b16915050565b60008b81526009602052604090819020600101549051959a50939850919650945092506001600160a01b031690610b93908b908b90613e77565b60405180910390207fdebe45dc811f213ee5572218ab9c9e7d78fac393b0ca5c50ea9edbe5c8bcb61788600560009054906101000a90046001600160a01b03166001600160a01b031663c4d10b6a8e8e6040518363ffffffff1660e01b8152600401610c00929190613fc2565b60206040518083038186803b158015610c1857600080fd5b505afa158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c509190613b9f565b60408051808201825260008d8152600960209081528382205483528083018e905283516080810185528c81528082018b90528085018e9052606081018c90528f835260a390915290839020546001549351610cb19695943394939291613f05565b60405180910390a360019650505050505050610ccd6001606f55565b9392505050565b610cdc611190565b61078581610f48565b610ced611190565b610785816110fe565b610cfe611190565b6001600160a01b038116610d635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069d565b61078581611bdf565b600a54610100900460ff16610d935760405162461bcd60e51b815260040161069d90614032565b6107b2611c31565b600a54610100900460ff16610dc25760405162461bcd60e51b815260040161069d90614032565b6107b2611c61565b6000548111610e2d5760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a206c6f77207374617274696e67426c60448201526837b1b5a73ab6b132b960b91b606482015260840161069d565b600055565b806127101015610e9b5760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a2070726f746f636f6c20666565206960448201526d73206f7574206f662072616e676560901b606482015260840161069d565b60035460408051918252602082018390527f7d205f60891f60851c61cd244ba387d72b6589e7c0ac41b9d909ab0ce2c2a53b910160405180910390a1600355565b806127101015610f435760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a206c6f636b6572206665652069732060448201526b6f7574206f662072616e676560a01b606482015260840161069d565b60a455565b806001600160a01b038116610f705760405163d92e233d60e01b815260040160405180910390fd5b6004546040517f4c28a3f61a715259c4dc930c23e7423b8fa52e13232c061a6e488729c66184f491610faf916001600160a01b03909116908590613ed2565b60405180910390a150600480546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166110025760405163d92e233d60e01b815260040160405180910390fd5b6005546040517ffa021c2ec0f46429a53e7f88b88065e40001f50c9d38b2e8b713beaf9828d4c391611041916001600160a01b03909116908590613ed2565b60405180910390a150600580546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166110945760405163d92e233d60e01b815260040160405180910390fd5b6006546040517f36a4c08a38b736dcecb6c328dba61238529620e83ccb23db2cc43cd34ec26096916110d3916001600160a01b03909116908590613ed2565b60405180910390a150600680546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166111265760405163d92e233d60e01b815260040160405180910390fd5b6008546040517f567657fa3f286518b318f4a29870674f433f622fdfc819691acb13105b22822591611165916001600160a01b03909116908590613ed2565b60405180910390a150600880546001600160a01b0319166001600160a01b0392909216919091179055565b33611199610815565b6001600160a01b0316146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069d565b806001600160a01b0381166112175760405163d92e233d60e01b815260040160405180910390fd5b6007546040517f8385e8ba7df6e532c24a84c012f3c713627c7e317263aafb3c738427da86325891611256916001600160a01b03909116908590613ed2565b60405180910390a150600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260a26020526040908190205490517f1e73962bcff5b98a9ac70c9b0f71fbb31dc0f5a09348c6d3ceab164169a9e729916112e79185916001600160a01b03169085909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a1600091825260a2602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b600082815260a16020908152604091829020548251858152918201529081018290527f188adabf806a6b6d814acc1dbd9f09e5a251c8c065d6285749a5824e4579b6459060600160405180910390a1600091825260a1602052604090912055565b6002606f5414156113d15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161069d565b6002606f55565b6000806113ef6113ea825b8790611c88565b611cac565b905061140062ffffff198216611e02565b1561144a5760405162461bcd60e51b815260206004820152601a602482015279109a5d18dbda5b92195b1c195c8e881d9a5b881a5cc81b9d5b1b60321b604482015260640161069d565b60006002878787876040516020016114659493929190613e24565b60408051601f198184030181529082905261147f91613e87565b602060405180830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906114bf9190613bf3565b905060006002826040516020016114d891815260200190565b60408051601f19818403018152908290526114f291613e87565b602060405180830381855afa15801561150f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115329190613bf3565b93505050505b949350505050565b60055460405163aff2faa360e01b81526001600160a01b039091169063aff2faa390611570908690600401613ff1565b60206040518083038186803b15801561158857600080fd5b505afa15801561159c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c09190613bbb565b611634576040805162461bcd60e51b81526020600482015260248101919091527f43435472616e73666572526f757465723a206e6f206c6f636b6572207769746860448201527f2074686520676976656e206c6f636b696e672073637269707420657869737473606482015260840161069d565b6116716040518060a001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000151581525090565b606061167d8486611e0e565b6001600160401b0390911683528051909150601c146116de5760405162461bcd60e51b815260206004820152601d60248201527f43435472616e73666572526f757465723a20696e76616c6964206c656e000000604482015260640161069d565b815161173b5760405162461bcd60e51b815260206004820152602660248201527f43435472616e73666572526f757465723a20696e70757420616d6f756e74206960448201526573207a65726f60d01b606482015260840161069d565b60015461174782611f89565b61ffff16146117aa5760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a20636861696e206964206973206e6f6044820152681d0818dbdc9c9958dd60ba1b606482015260840161069d565b6002546117b682611fa4565b60ff16146118165760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a20617070206964206973206e6f742060448201526618dbdc9c9958dd60ca1b606482015260840161069d565b600061182182611fbe565b62ffffff169050826000015181111561187a5760405162461bcd60e51b815260206004820152601b60248201527a43435472616e73666572526f757465723a2077726f6e672066656560281b604482015260640161069d565b6040830181905261188a82611fd9565b6001600160a01b031660208401526118a182611ff4565b60ff1660608401819052156119085760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a207370656564206973206f7574206f604482015266662072616e676560c81b606482015260840161069d565b61191182612003565b600085815260a36020908152604080832060ff949094169093556001608087018181529783526009825291839020865181559086015191810180546001600160a01b0319166001600160a01b03909316929092179091559084015160028201556060909301516003840155505090516004909101805460ff19169115159190911790555050565b6004805460405163d0a8973960e01b81529182018590526000602483018190529182916001600160a01b03169063d0a897399060440160206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190613bf3565b905080341015611a855760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a207061696420666565206973206e6f60448201526b1d081cdd59999a58da595b9d60a21b606482015260840161069d565b600454604051600091611ae2916001600160a01b0390911690611ab2908a908a908a908a90602401613f92565b60408051601f198184030181529190526020810180516001600160e01b0316634354da2560e01b17905284612012565b9050611af733611af28434614197565b612038565b80806020019051810190611b0b9190613bbb565b979650505050505050565b6000806000806000611b288787612153565b60065460008c8152600960205260409081902060010154905163a9059cbb60e01b8152969b5094995092975090955093506001600160a01b039081169263a9059cbb92611b7b9216908990600401613eec565b602060405180830381600087803b158015611b9557600080fd5b505af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190613bbb565b509295509295909350565b6001606f55565b603d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a54610100900460ff16611c585760405162461bcd60e51b815260040161069d90614032565b6107b233611bdf565b600a54610100900460ff16611bd85760405162461bcd60e51b815260040161069d90614032565b815160009060208401611ca364ffffffffff85168284612545565b95945050505050565b60008181611cc2815b62ffffff19841690612589565b50611cd262ffffff198516612663565b6001600160601b0316611cee57611ce7612672565b9250611dfb565b6000611cfb85600061267a565b90506000611d0e62ffffff198716612663565b6001600160601b031690506001600160401b038216611d3857611d2f612672565b94505050611dfb565b6000611d43836127c3565b60ff16905060005b836001600160401b0316811015611dc157828210611d7657611d6b612672565b965050505050611dfb565b6000611d96611d858486614197565b60055b62ffffff198c169190612821565b9050611da18161284b565b611dab90846140a5565b9250508080611db990614225565b915050611d4b565b50818114611ddb57611dd1612672565b9550505050611dfb565b611df560065b60d81b6301000000600160d81b0389161790565b95505050505b5050919050565b62ffffff199081161490565b6000606081611e24611e1f826113e3565b61289f565b9050611e3562ffffff198216611e02565b15611e805760405162461bcd60e51b815260206004820152601b60248201527a109a5d18dbda5b92195b1c195c8e881d9bdd5d081a5cc81b9d5b1b602a1b604482015260640161069d565b6000806000806000611e9386600061267a565b6001600160401b0316905060005b81811015611f7b57611eb387826129a0565b9550611ebe86612ac5565b9450611ec986612b19565b9350611ed484612b63565b925062ffffff198084161415611f575789604051602001611ef59190613e87565b60405160208183030381529060405280519060200120611f1a8662ffffff1916612c85565b604051602001611f2a9190613e87565b604051602081830303815290604052805190602001201415611f5257611f4f86612ccb565b98505b611f69565b611f6662ffffff198416612c85565b97505b80611f7381614225565b915050611ea1565b505050505050509250929050565b600080611f998360006001612cf0565b600201519392505050565b600080611fb383600280612cf0565b600101519392505050565b600080611fce8360176019612cf0565b600301519392505050565b600080611fe98360036016612cf0565b601401519392505050565b600080611fb383601a80612cf0565b600080611fb383601b80612cf0565b606061153884848460405180606001604052806029815260200161428260299139612d75565b804710156120885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161069d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146120d5576040519150601f19603f3d011682016040523d82523d6000602084013e6120da565b606091505b505090508061214e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161069d565b505050565b6005546000828152600960205260408082205490516307f3f86760e21b8152919283928392839283926001600160a01b0390911691631fcfe19c9161219f918b91309190600401614004565b602060405180830381600087803b1580156121b957600080fd5b505af11580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190613bf3565b50600354600087815260096020526040902054612710916122119161414f565b61221b919061412f565b6000878152600960208181526040808420600281015460a3845282862054865260a1845291852054948c9052929091529054929650945061271091612260919061414f565b61226a919061412f565b60a4546000888152600960205260409020549193506127109161228d919061414f565b612297919061412f565b90508215612323576006546001600160a01b031663a9059cbb33856040518363ffffffff1660e01b81526004016122cf929190613eec565b602060405180830381600087803b1580156122e957600080fd5b505af11580156122fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123219190613bbb565b505b83156123b35760065460085460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261235f929116908890600401613eec565b602060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190613bbb565b505b811561245d57600654600087815260a36020908152604080832054835260a29091529081902054905163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92612409929116908690600401613eec565b602060405180830381600087803b15801561242357600080fd5b505af1158015612437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245b9190613bbb565b505b80156124fb5760055460405163626885b560e11b81526124fb916001600160a01b03169063c4d10b6a90612495908b90600401613ff1565b60206040518083038186803b1580156124ad57600080fd5b505afa1580156124c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e59190613b9f565b600088815260a360205260409020548390612e92565b60008681526009602052604090205481908390859061251b908890614197565b6125259190614197565b61252f9190614197565b6125399190614197565b94509295509295909350565b60008061255283856140a5565b9050604051811115612562575060005b806125745762ffffff19915050610ccd565b5050606092831b9190911790911b1760181b90565b6000612595838361301a565b61265c5760006125b46125a88560d81c90565b64ffffffffff1661303d565b91505060006125c98464ffffffffff1661303d565b6040517f5479706520617373657274696f6e206661696c65642e20476f7420307800000060208201526001600160b01b031960b086811b8216603d8401526c05c408af0e0cac6e8cac84060f609b1b604784015283901b16605482015290925060009150605e015b60405160208183030381529060405290508060405162461bcd60e51b815260040161069d9190613ff1565b5090919050565b60181c6001600160601b031690565b62ffffff1990565b60008061268f62ffffff1985168460016130e9565b905060fc81116126aa576126a281613119565b9150506107f9565b8060fd1415612710576126d86126d36126c48560016140a5565b62ffffff198716906002613185565b613119565b91506126e3826127c3565b60ff1660031461270b5761270961270462ffffff19861685600360006132c8565b61332e565b505b6127bc565b8060fe1415612765576127396126d361272a8560016140a5565b62ffffff198716906004613185565b9150612744826127c3565b60ff1660051461270b5761270961270462ffffff19861685600560006132c8565b8060ff14156127bc5761278e6126d361277f8560016140a5565b62ffffff198716906008613185565b9150612799826127c3565b60ff166009146127bc576127ba61270462ffffff19861685600960006132c8565b505b5092915050565b600060fc826001600160401b0316116127de57506001919050565b61ffff826001600160401b0316116127f857506003919050565b63ffffffff826001600160401b03161161281457506005919050565b506009919050565b919050565b6000611538848461283187612663565b6001600160601b03166128449190614197565b85856132c8565b600081600561285981611cb5565b50600061286785602461267a565b9050806001600160401b031661287c826127c3565b60ff1661288991906140a5565b6128949060246140a5565b611ca39060046140a5565b600081816128ac81611cb5565b506128bc62ffffff198516612663565b6001600160601b03166128d157611ce7612672565b60006128de85600061267a565b905060006128f162ffffff198716612663565b6001600160601b031690506001600160401b03821661291257611d2f612672565b600061291d836127c3565b60ff16905060005b836001600160401b03168110156129865782821061294557611d6b612672565b600061295b6129548486614197565b600e611d88565b9050612966816133b6565b61297090846140a5565b925050808061297e90614225565b915050612925565b5081811461299657611dd1612672565b611df5600f611de1565b600082600f6129ae81611cb5565b5060006129bc86600061267a565b6001600160401b0316905060006129d862ffffff198816612663565b6001600160601b03169050818610612a265760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b604482015260640161069d565b6000612a31836127c3565b60ff1690506000805b88811015612a8757612a5e612a4f8486614197565b62ffffff198c1690600e612821565b9150612a69826133b6565b612a7390846140a5565b9250612a806001826140a5565b9050612a3a565b50612a956129548385614197565b90506000612aa2826133b6565b9050612ab762ffffff198b168483600d6132c8565b9a9950505050505050505050565b600081600d612ad381611cb5565b506000612ae185600861267a565b9050611ca3612aef826127c3565b612afa9060086140e8565b60ff166001600160401b03831660075b62ffffff1989169291906132c8565b600081600d612b2781611cb5565b506000612b3585600861267a565b9050611ca3600882612b46846127c3565b60ff16612b5391906140bd565b6001600160401b03166007612b0a565b6000816007612b7181611cb5565b506000612b7f85600061267a565b90506000612b996126d362ffffff198816600260016130e9565b9050612bad62ffffff1987166001806130e9565b606a141580612be15750612bc26002836141ae565b6001600160401b0316612bde62ffffff198816600260016130e9565b14155b15612bee57611d2f612672565b604d826001600160401b031611158015612c1257506004826001600160401b031610155b612c5e5760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e00604482015260640161069d565b612c7b62ffffff19871660036001600160401b038416600c6132c8565b9695505050505050565b6060600080612c9384612663565b60405193508392506001600160601b03169050612cba84612cb58460206140a5565b6133ff565b508181016020016040529052919050565b600081600d612cd981611cb5565b506115386126d362ffffff19861660006008613185565b60606000835b612d018460016140a5565b811015612d6c57858181518110612d2857634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b91508282604051602001612d48929190613ea3565b60405160208183030381529060405292508080612d6490614225565b915050612cf6565b50509392505050565b606082471015612dd65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161069d565b843b612e245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161069d565b600080866001600160a01b03168587604051612e409190613e87565b60006040518083038185875af1925050503d8060008114612e7d576040519150601f19603f3d011682016040523d82523d6000602084013e612e82565b606091505b5091509150611b0b828286613542565b811561214e5760a5546001600160a01b03161580612eaf57508015155b15612f3e5760065460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612ee69086908690600401613eec565b602060405180830381600087803b158015612f0057600080fd5b505af1158015612f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f389190613bbb565b50505050565b60065460a55460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f74929116908690600401613eec565b602060405180830381600087803b158015612f8e57600080fd5b505af1158015612fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc69190613bbb565b5060a554604051612f38916001600160a01b031690612feb9086908690602401613eec565b60408051601f198184030181529190526020810180516001600160e01b0316637db4e28f60e01b17905261357b565b60008164ffffffffff1661302e8460d81c90565b64ffffffffff16149392505050565b600080601f5b600f8160ff16111561309b57600061305c82600861416e565b60ff1685901c905061306d816135bd565b61ffff16841793508160ff1660101461308857601084901b93505b506130946001826141d6565b9050613043565b50600f5b60ff8160ff1610156130e35760ff600882021684901c6130be816135bd565b61ffff16831792508160ff166000146130d957601083901b92505b506000190161309f565b50915091565b60006130f68260206141d6565b61310190600861416e565b60ff1661310f8585856135ef565b901c949350505050565b60006001600160401b038211156131815760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161069d565b5090565b60006115386131958585856135ef565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff161790506040816001600160401b03600160801b03600160c01b0316901b604082901c6001600160401b03600160801b03600160c01b0316179050608081901b608082901c179050919050565b6000806132d48661371d565b6001600160601b031690506132e88661372c565b846132f387846140a5565b6132fd91906140a5565b11156133105762ffffff19915050611538565b61331a85826140a5565b9050612c7b8364ffffffffff168286612545565b6060600061336c6133678261335961334b62ffffff198816612663565b6001600160601b0316613759565b62ffffff19871691906130e9565b61303d565b6040517a09cdedc5adad2dcd2dac2d840ecc2e440d2dce85c408edee84060f602b1b60208201526001600160701b0319607083901b16603b82015290925060009150604d01612631565b600081600e6133c481611cb5565b5060006133d285600861267a565b9050806001600160401b03166133e7826127c3565b60ff166133f491906140a5565b611ca39060086140a5565b600061340a836137ba565b6134675760405162461bcd60e51b815260206004820152602860248201527f54797065644d656d566965772f636f7079546f202d204e756c6c20706f696e7460448201526732b9103232b932b360c11b606482015260840161069d565b613470836137cc565b6134d05760405162461bcd60e51b815260206004820152602b60248201527f54797065644d656d566965772f636f7079546f202d20496e76616c696420706f60448201526a34b73a32b9103232b932b360a91b606482015260840161069d565b60006134db84612663565b6001600160601b0316905060006134f18561371d565b6001600160601b0316905060006040519050848111156135115760206060fd5b8285848460045afa50612c7b6135278760d81c90565b64ffffffffff60601b606091821b168717901b841760181b90565b60608315613551575081610ccd565b8251156135615782518084602001fd5b8160405162461bcd60e51b815260040161069d9190613ff1565b6060610ccd83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061380a565b60006135cf60048360ff16901c613819565b60ff1661ffff919091161760081b6135e682613819565b60ff1617919050565b600060ff821661360157506000610ccd565b61360a84612663565b6001600160601b031661362060ff8416856140a5565b1115613670576136576136328561371d565b6001600160601b031661364486612663565b6001600160601b0316858560ff16613975565b60405162461bcd60e51b815260040161069d9190613ff1565b60208260ff1611156136e75760405162461bcd60e51b815260206004820152603a60248201527f54797065644d656d566965772f696e646578202d20417474656d7074656420746044820152796f20696e646578206d6f7265207468616e20333220627974657360301b606482015260840161069d565b6008820260006136f68661371d565b6001600160601b031690506000600160ff1b60001984011d91909501511695945050505050565b60781c6001600160601b031690565b600061373782612663565b6137408361371d565b61374a919061410d565b6001600160601b031692915050565b600060ff8211156131815760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2038604482015264206269747360d81b606482015260840161069d565b60006137c582611e02565b1592915050565b60006137d88260d81c90565b64ffffffffff1664ffffffffff14156137f357506000919050565b60006137fe8361372c565b60405110199392505050565b60606115388484600085612d75565b600060f08083179060ff821614156138345750603092915050565b8060ff1660f114156138495750603192915050565b8060ff1660f2141561385e5750603292915050565b8060ff1660f314156138735750603392915050565b8060ff1660f414156138885750603492915050565b8060ff1660f5141561389d5750603592915050565b8060ff1660f614156138b25750603692915050565b8060ff1660f714156138c75750603792915050565b8060ff1660f814156138dc5750603892915050565b8060ff1660f914156138f15750603992915050565b8060ff1660fa14156139065750606192915050565b8060ff1660fb141561391b5750606292915050565b8060ff1660fc14156139305750606392915050565b8060ff1660fd14156139455750606492915050565b8060ff1660fe141561395a5750606592915050565b8060ff1660ff141561396f5750606692915050565b50919050565b606060006139828661303d565b91505060006139908661303d565b915050600061399e8661303d565b91505060006139ac8661303d565b604080517f54797065644d656d566965772f696e646578202d204f76657272616e20746865602082015274040ecd2caee5c40a6d8d2c6ca40d2e640c2e84060f605b1b818301526001600160d01b031960d098891b811660558301526e040eed2e8d040d8cadccee8d04060f608b1b605b830181905297891b8116606a8301527f2e20417474656d7074656420746f20696e646578206174206f666673657420306070830152600f60fb1b609083015295881b861660918201526097810196909652951b90921660a68401525050601760f91b60ac8201528151808203608d01815260ad90910190915295945050505050565b80356001600160e01b03198116811461281c57600080fd5b60008083601f840112613ac8578182fd5b5081356001600160401b03811115613ade578182fd5b602083019150836020828501011115613af657600080fd5b9250929050565b600082601f830112613b0d578081fd5b81356001600160401b0380821115613b2757613b27614256565b604051601f8301601f19908116603f01168101908282118183101715613b4f57613b4f614256565b81604052838152866020858801011115613b67578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215613b94578081fd5b8135610ccd8161426c565b600060208284031215613bb0578081fd5b8151610ccd8161426c565b600060208284031215613bcc578081fd5b81518015158114610ccd578182fd5b600060208284031215613bec578081fd5b5035919050565b600060208284031215613c04578081fd5b5051919050565b600080600060408486031215613c1f578182fd5b83356001600160401b0380821115613c35578384fd5b9085019060e08288031215613c48578384fd5b613c5061407d565b613c5983613a9f565b8152602083013582811115613c6c578586fd5b613c7889828601613afd565b602083015250604083013582811115613c8f578586fd5b613c9b89828601613afd565b604083015250613cad60608401613a9f565b60608201526080830135608082015260a083013582811115613ccd578586fd5b613cd989828601613afd565b60a08301525060c083013560c0820152809550506020860135915080821115613d00578384fd5b50613d0d86828701613ab7565b9497909650939450505050565b60008060408385031215613d2c578182fd5b823591506020830135613d3e8161426c565b809150509250929050565b60008060408385031215613d5b578182fd5b50508035926020909101359150565b60008060008060008060008060006101208a8c031215613d88578485fd5b8935985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135613db68161426c565b935060c08a0135613dc68161426c565b925060e08a0135613dd68161426c565b91506101008a0135613de78161426c565b809150509295985092959850929598565b60008151808452613e108160208601602086016141f9565b601f01601f19169290920160200192915050565b600063ffffffff60e01b80871683528551613e46816004860160208a016141f9565b855190840190613e5d816004840160208a016141f9565b919094169301600481019390935250506008019392505050565b8183823760009101908152919050565b60008251613e998184602087016141f9565b9190910192915050565b60008351613eb58184602088016141f9565b6001600160f81b0319939093169190920190815260010192915050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b8781526001600160a01b038781166020808401919091529087166040830152610160820190606083018760005b6002811015613f4f57815183529183019190830190600101613f32565b50505060a083018660005b6004811015613f7757815183529183019190830190600101613f5a565b50505050610120820193909352610140015295945050505050565b848152836020820152608060408201526000613fb16080830185613df8565b905082606083015295945050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b602081526000610ccd6020830184613df8565b6060815260006140176060830186613df8565b6001600160a01b039490941660208301525060400152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60405160e081016001600160401b038111828210171561409f5761409f614256565b60405290565b600082198211156140b8576140b8614240565b500190565b60006001600160401b038281168482168083038211156140df576140df614240565b01949350505050565b600060ff821660ff84168060ff0382111561410557614105614240565b019392505050565b60006001600160601b038281168482168083038211156140df576140df614240565b60008261414a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561416957614169614240565b500290565b600060ff821660ff84168160ff048111821515161561418f5761418f614240565b029392505050565b6000828210156141a9576141a9614240565b500390565b60006001600160401b03838116908316818110156141ce576141ce614240565b039392505050565b600060ff821660ff8416808210156141f0576141f0614240565b90039392505050565b60005b838110156142145781810151838201526020016141fc565b83811115612f385750506000910152565b600060001982141561423957614239614240565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461078557600080fdfe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a264697066735822122030789b264bc4e876317577954727b523cd2265138f71b3998998e650c69c311664736f6c63430008040033