0 txs
3.7k calls
constructor
constructor()
functions
bridge
viewfunction bridge() view returns (address)
btcDeposits
viewfunction btcDeposits(uint256) view returns (uint8)
ERC20Tokens
viewfunction ERC20Tokens(address) view returns (uint256)
ERC20TokensCount
viewfunction ERC20TokensCount() view returns (uint256)
MAX_ERC20_TOKENS
viewfunction MAX_ERC20_TOKENS() view returns (uint256)
minTBTCAmount
viewfunction minTBTCAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
SATOSHI_MULTIPLIER
viewfunction SATOSHI_MULTIPLIER() view returns (uint256)
sequence
viewfunction sequence() view returns (uint256)
tbtcToken
viewfunction tbtcToken() view returns (address)
tbtcVault
viewfunction tbtcVault() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
bridgeERC20
nonpayablefunction bridgeERC20(address ERC20Token, uint256 amount, address recipient)
bridgeTBTC
nonpayablefunction bridgeTBTC(uint256 amount, address recipient)
bridgeTBTCWithPermit
nonpayablefunction bridgeTBTCWithPermit(uint256 amount, address recipient, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
disableERC20Token
nonpayablefunction disableERC20Token(address ERC20Token)
enableERC20Token
nonpayablefunction enableERC20Token(address ERC20Token, uint256 minERC20Amount)
finalizeBTCBridging
nonpayablefunction finalizeBTCBridging(uint256 btcDepositKey, address recipient)
initialize
nonpayablefunction initialize(address _tbtcBridge, address _tbtcVault, address _tbtcToken, uint256 _initialSequence)
initializeBTCBridging
nonpayablefunction initializeBTCBridging(tuple fundingTx, tuple reveal, address recipient)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateMinERC20Amount
nonpayablefunction updateMinERC20Amount(address ERC20Token, uint256 newMinERC20Amount)
updateMinTBTCAmount
nonpayablefunction updateMinTBTCAmount(uint256 newMinTBTCAmount)
events
AssetsLocked
event AssetsLocked(uint256 indexed sequenceNumber, address indexed recipient, address indexed token, uint256 amount)
BTCDepositFinalized
event BTCDepositFinalized(uint256 indexed btcDepositKey, uint256 initialAmount, uint256 tbtcAmount)
BTCDepositInitialized
event BTCDepositInitialized(uint256 indexed btcDepositKey, address indexed recipient)
ERC20TokenDisabled
event ERC20TokenDisabled(address indexed ERC20Token)
ERC20TokenEnabled
event ERC20TokenEnabled(address indexed ERC20Token, uint256 minERC20Amount)
Initialized
event Initialized(uint64 version)
MinERC20AmountUpdated
event MinERC20AmountUpdated(address indexed ERC20Token, uint256 newMinERC20Amount)
MinTBTCAmountUpdated
event MinTBTCAmountUpdated(uint256 minTBTCAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AmountBelowMinERC20Amount
error AmountBelowMinERC20Amount()
AmountBelowMinTBTCAmount
error AmountBelowMinTBTCAmount()
BTCRecipientIsZeroAddress
error BTCRecipientIsZeroAddress()
ERC20RecipientIsZeroAddress
error ERC20RecipientIsZeroAddress()
ERC20TokenAlreadyEnabled
error ERC20TokenAlreadyEnabled()
ERC20TokenIsZeroAddress
error ERC20TokenIsZeroAddress()
ERC20TokenNotEnabled
error ERC20TokenNotEnabled()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
MaxERC20TokensReached
error MaxERC20TokensReached()
MinERC20AmountIsZero
error MinERC20AmountIsZero()
MinTBTCAmountIsZero
error MinTBTCAmountIsZero()
NotEnoughBalanceToFinalize
error NotEnoughBalanceToFinalize(uint256 balance, uint256 tbtcAmount)
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TBTCTokenIsZeroAddress
error TBTCTokenIsZeroAddress()
UnexpectedBTCDepositState
error UnexpectedBTCDepositState(uint8 actualState, uint8 expectedState)
UnexpectedExtraData
error UnexpectedExtraData(bytes32 actualExtraData, bytes32 expectedExtraData)
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612a7580620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d80687ef11610097578063e30c397811610071578063e30c39781461033d578063e5d3d71414610345578063e78cea9214610358578063f2fde38b1461036b57600080fd5b8063d80687ef14610301578063dab1b4bd14610321578063df4d46631461032a57600080fd5b8063c7ba0347116100c8578063c7ba0347146102d9578063cf756fdf146102e5578063d252bb2c146102f857600080fd5b80638da5cb5b1461028e578063908d272b14610296578063941b1f94146102a957600080fd5b806362fe53e111610150578063715018a61161012a578063715018a61461026b57806374ca12791461027357806379ba50971461028657600080fd5b806362fe53e11461023257806367a68320146102455780636f64aca21461025857600080fd5b8063529d15cc11610181578063529d15cc146102005780635febd8eb14610217578063619121741461021f57600080fd5b80630f36403a146101a857806324f90de9146101d8578063427f9568146101ed575b600080fd5b6001546101bb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101eb6101e636600461206e565b61037e565b005b6101eb6101fb36600461209e565b6105d6565b61020960955481565b6040519081526020016101cf565b610209601481565b6101eb61022d366004612100565b610744565b6101eb610240366004612142565b610868565b6101eb61025336600461215b565b6108e5565b6101eb610266366004612187565b610a61565b6101eb610bbf565b6101eb61028136600461220e565b610bd3565b6101eb610c85565b6101bb610ce6565b6101eb6102a436600461215b565b610d1b565b6102cc6102b7366004612142565b60326020526000908152604090205460ff1681565b6040516101cf9190612295565b6102096402540be40081565b6101eb6102f33660046122a3565b610dfb565b61020960635481565b61020961030f36600461220e565b60646020526000908152604090205481565b61020960335481565b6101eb61033836600461206e565b610f8d565b6101bb610fcc565b6031546101bb906001600160a01b031681565b6000546101bb906001600160a01b031681565b6101eb61037936600461220e565b610ff5565b600160008381526032602052604090205460ff1660028111156103a3576103a361222b565b146103fa57600082815260326020526040908190205490517fed33029f0000000000000000000000000000000000000000000000000000000081526103f19160ff16906001906004016122f4565b60405180910390fd5b600082815260326020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558061043b84611092565b604080516001600160a01b03881660208083019190915282518083038201815291830190925280519101209294509250508082146104af576040517fd961e24c00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044016103f1565b6031546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610511573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610535919061230f565b90508381101561057b576040517f17c7cec700000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044016103f1565b604080518581526020810186905287917fa81d3c9594b1f3363bfc07d9277c4624e0da8dae3b42d466f1edc0718c62ab53910160405180910390a26031546105ce9086906001600160a01b031686611312565b505050505050565b6105de611372565b6031546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015287916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610645573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610669919061230f565b1015610711576031546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b039091169063d505accf9060e401600060405180830381600087803b1580156106f857600080fd5b505af115801561070c573d6000803e3d6000fd5b505050505b61071b86866113f3565b6105ce60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61074c611372565b6001600160a01b0383166000908152606460205260408120549081900361079f576040517f881b8d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166107df576040517f478b9dda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80831015610819576040517f542f23f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610824828585611312565b6108396001600160a01b0385163330866114c1565b5061086360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61087061154f565b806000036108aa576040517f4b81b6b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60338190556040518181527fe64dbc80c2152cea46e3b80ba80f3e8c125114dc79194e9c947b480cfc80e59c9060200160405180910390a150565b6108ed61154f565b6001600160a01b03821661092d576040517f09efa31000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610967576040517f47fba16a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260646020526040902054156109b7576040517f98f1758300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6014606354106109f3576040517f17dfdea400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60638054906000610a0383612357565b90915550506001600160a01b03821660008181526064602052604090819020839055517ff17d094161c4f2776fc9caa30094c8ebe1b86cd6f2108db5d9f1d46d8f85494c90610a559084815260200190565b60405180910390a25050565b6001600160a01b038116610aa1576040517fb9c50bfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b0383166020820152600091610adb9186918691016040516020818303038152906040528051906020012061159a565b5090506000808281526032602052604090205460ff166002811115610b0257610b0261222b565b14610b4f576000818152603260205260408082205490517fed33029f0000000000000000000000000000000000000000000000000000000081526103f19260ff90921691906004016122f4565b60008181526032602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055516001600160a01b0384169183917f2fbc945bad45e66509bad2bda7b97993796881f9ac2543b827d2aaf69f1869239190a350505050565b610bc761154f565b610bd16000611778565b565b610bdb61154f565b6001600160a01b0381166000908152606460205260408120549003610c2c576040517f881b8d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60638054906000610c3c8361238f565b90915550506001600160a01b038116600081815260646020526040808220829055517f9c4edffd5782d54d432f513a2a7d944aac6f743c7ef4a83d8c6189ba21dd42999190a250565b3380610c8f610fcc565b6001600160a01b031614610cda576040517f118cdaa70000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016103f1565b610ce381611778565b50565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b610d2361154f565b6001600160a01b0382166000908152606460205260408120549003610d74576040517f881b8d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610dae576040517f47fba16a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526064602052604090819020839055517f886950a2d9ce5c7d214261968375335366c8547e3e5eb5e1744c3cb581c4a67290610a559084815260200190565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610e465750825b905060008267ffffffffffffffff166001148015610e635750303b155b905081158015610e71575080155b15610ea8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f095784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f148989896117c8565b610f1c61186a565b60958690558315610f825784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f95611372565b610f9f82826113f3565b610fc860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610d0b565b610ffd61154f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255611059610ce6565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b600080546040517fb02c43d0000000000000000000000000000000000000000000000000000000008152600481018490528291829182916001600160a01b03169063b02c43d09060240160e060405180830381865afa1580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d9190612404565b9050806040015163ffffffff16600003611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4465706f736974206e6f7420696e697469616c697a656400000000000000000060448201526064016103f1565b6001546040517f6c626aa4000000000000000000000000000000000000000000000000000000008152600481018790526000916001600160a01b031690636c626aa49060240160408051808303816000875af11580156111f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121b91906124d7565b9150508160a0015163ffffffff166000141580611241575067ffffffffffffffff811615155b6112cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4465706f736974206e6f742066696e616c697a6564206279207468652062726960448201527f646765000000000000000000000000000000000000000000000000000000000060648201526084016103f1565b6402540be400826020015167ffffffffffffffff166112ec919061250a565b945061130082602001518360800151611882565b93508160c00151925050509193909250565b816001600160a01b0316836001600160a01b031660956000815461133590612357565b91829055506040518481527f75aa5616721471b8ab0c49ce59500cbad2b7ef1ad10e5eb9449c693c0a5c8fd19060200160405180910390a4505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016113ed576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6001600160a01b038116611433576040517fb9c50bfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60335482101561146f576040517f0b84d72c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6031546001600160a01b0316611486828285611312565b6108636001600160a01b0382163330866114c1565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611549908590611a07565b50505050565b33611558610ce6565b6001600160a01b031614610bd1576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016103f1565b60015460009081906001600160a01b03166115bb60c0860160a0870161220e565b6001600160a01b03161461162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5661756c742061646472657373206d69736d617463680000000000000000000060448201526064016103f1565b61164961163786611a83565b6116446020870187612521565b611ae8565b6000546040517f86f014390000000000000000000000000000000000000000000000000000000081529193506001600160a01b0316906386f014399061169790889088908890600401612652565b600060405180830381600087803b1580156116b157600080fd5b505af11580156116c5573d6000803e3d6000fd5b50506000546040517fb02c43d0000000000000000000000000000000000000000000000000000000008152600481018690526402540be40093506001600160a01b03909116915063b02c43d09060240160e060405180830381865afa158015611732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117569190612404565b6020015167ffffffffffffffff1661176e919061250a565b9050935093915050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155610fc882611b68565b6117d28383611bf1565b6117db33611dc5565b6117e3611dd6565b6001600160a01b038116611823576040517fe747bdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790555050662386f26fc10000603355565b61187333611dc5565b61187b611dd6565b6000606355565b6000806402540be400611895848661282b565b67ffffffffffffffff166118a9919061250a565b90506000600160009054906101000a90046001600160a01b03166001600160a01b03166309b53f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015611900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119249190612853565b63ffffffff169050600080821161193c576000611946565b6119468284612870565b905060008060009054906101000a90046001600160a01b03166001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa15801561199c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c091906128ab565b509250505060006402540be4008267ffffffffffffffff166119e2919061250a565b9050806119ef8487612901565b6119f99190612901565b955050505050505b92915050565b6000611a1c6001600160a01b03841683611de6565b90508051600014158015611a41575080806020019051810190611a3f9190612914565b155b15610863576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016103f1565b6000611a01611a956020840184612936565b611aa26020850185612951565b611aaf6040870187612951565b611abf6080890160608a01612936565b604051602001611ad4969594939291906129b6565b604051602081830303815290604052611dfb565b60008282604051602001611b2b92919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000546001600160a01b0316158015611c1357506001546001600160a01b0316155b611c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4162737472616374544254434465706f7369746f7220616c726561647920696e60448201527f697469616c697a6564000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b038216611d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f42726964676520616464726573732063616e6e6f74206265207a65726f00000060448201526064016103f1565b6001600160a01b038116611d7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f544254435661756c7420616464726573732063616e6e6f74206265207a65726f60448201526064016103f1565b600080546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b611dcd611e22565b610ce381611e89565b611dde611e22565b610bd1611ed4565b6060611df483836000611edc565b9392505050565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bd1576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e91611e22565b6001600160a01b038116610cda576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016103f1565b61149b611e22565b606081471015611f1a576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016103f1565b600080856001600160a01b03168486604051611f369190612a10565b60006040518083038185875af1925050503d8060008114611f73576040519150601f19603f3d011682016040523d82523d6000602084013e611f78565b606091505b5091509150611f88868383611f92565b9695505050505050565b606082611fa757611fa282612007565b611df4565b8151158015611fbe57506001600160a01b0384163b155b15612000576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103f1565b5080611df4565b8051156120175780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381168114610ce357600080fd5b803561206981612049565b919050565b6000806040838503121561208157600080fd5b82359150602083013561209381612049565b809150509250929050565b60008060008060008060c087890312156120b757600080fd5b8635955060208701356120c981612049565b945060408701359350606087013560ff811681146120e657600080fd5b9598949750929560808101359460a0909101359350915050565b60008060006060848603121561211557600080fd5b833561212081612049565b925060208401359150604084013561213781612049565b809150509250925092565b60006020828403121561215457600080fd5b5035919050565b6000806040838503121561216e57600080fd5b823561217981612049565b946020939093013593505050565b600080600083850361010081121561219e57600080fd5b843567ffffffffffffffff8111156121b557600080fd5b8501608081880312156121c757600080fd5b935060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156121f957600080fd5b5060208401915060e084013561213781612049565b60006020828403121561222057600080fd5b8135611df481612049565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612291577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611a01828461225a565b600080600080608085870312156122b957600080fd5b84356122c481612049565b935060208501356122d481612049565b925060408501356122e481612049565b9396929550929360600135925050565b60408101612302828561225a565b611df4602083018461225a565b60006020828403121561232157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238857612388612328565b5060010190565b60008161239e5761239e612328565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b805161206981612049565b805167ffffffffffffffff8116811461206957600080fd5b63ffffffff81168114610ce357600080fd5b8051612069816123e7565b600060e0828403121561241657600080fd5b60405160e0810181811067ffffffffffffffff82111715612460577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405261246c836123c4565b815261247a602084016123cf565b602082015261248b604084016123f9565b604082015261249c606084016123c4565b60608201526124ad608084016123cf565b60808201526124be60a084016123f9565b60a082015260c083015160c08201528091505092915050565b600080604083850312156124ea57600080fd5b6124f3836123cf565b9150612501602084016123cf565b90509250929050565b8082028115828204841417611a0157611a01612328565b60006020828403121561253357600080fd5b8135611df4816123e7565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461206957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126125a357600080fd5b830160208101925035905067ffffffffffffffff8111156125c357600080fd5b8036038213156125d257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116811461206957600080fd5b60006101008083527fffffffff00000000000000000000000000000000000000000000000000000000806126858861253e565b1682850152612697602088018861256e565b925060806101208601526126b0610180860184836125d9565b9250506126c0604088018861256e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00868503016101408701526126f68482846125d9565b93505050806127076060890161253e565b16610160850152509050833561271c816123e7565b63ffffffff811660208401525060208401357fffffffffffffffff000000000000000000000000000000000000000000000000811680821461275d57600080fd5b80604085015250507fffffffffffffffffffffffffffffffffffffffff00000000000000000000000061279260408601612622565b1660608301526127a460608501612622565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081166080840152506127d96080850161253e565b7fffffffff00000000000000000000000000000000000000000000000000000000811660a08401525061280e60a0850161205e565b6001600160a01b031660c083015260e09091019190915292915050565b67ffffffffffffffff82811682821603908082111561284c5761284c612328565b5092915050565b60006020828403121561286557600080fd5b8151611df4816123e7565b6000826128a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600080600080608085870312156128c157600080fd5b6128ca856123cf565b93506128d8602086016123cf565b92506128e6604086016123cf565b915060608501516128f6816123e7565b939692955090935050565b81810381811115611a0157611a01612328565b60006020828403121561292657600080fd5b81518015158114611df457600080fd5b60006020828403121561294857600080fd5b611df48261253e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261298657600080fd5b83018035915067ffffffffffffffff8211156129a157600080fd5b6020019150368190038213156125d257600080fd5b60007fffffffff000000000000000000000000000000000000000000000000000000008089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b6000825160005b81811015612a315760208186018101518583015201612a17565b50600092019182525091905056fea2646970667358221220ddfbe78d200f4c668d494cbafab9b8bedca5020740c59817c26d11c40b8bf0de64736f6c63430008180033