0 txs
0 calls
constructor
constructor(address _triviToken, address _treasury)
functions
BPS
viewfunction BPS() view returns (uint256)
calculatePriceImpact
purefunction calculatePriceImpact(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 impactBps)
CBBTC_TOKEN
viewfunction CBBTC_TOKEN() view returns (address)
checkPoolLiquidity
viewfunction checkPoolLiquidity(address tokenA, address tokenB) view returns (bool hasLiquidity, uint256 reserveA, uint256 reserveB)
deadlineWindow
viewfunction deadlineWindow() view returns (uint256)
FEE_BPS
viewfunction FEE_BPS() view returns (uint256)
getBestPath
viewfunction getBestPath(address tokenIn, address tokenOut, uint256 amountIn) view returns (address[] bestPath)
getETHPath
viewfunction getETHPath() view returns (address[] bestPath)
getExpectedOutput
viewfunction getExpectedOutput(uint256 ethAmount, uint256 usdcAmount, uint256 cbbtcAmount, uint256 virtualAmount) view returns (uint256 triviFromETH, uint256 triviFromUSDC, uint256 triviFromCBBTC, uint256 triviFromVIRTUAL)
getMinimumOutput
purefunction getMinimumOutput(uint256 expectedAmount, uint256 slippageBps) pure returns (uint256 minAmount)
getMinimumOutputBatch
purefunction getMinimumOutputBatch(uint256[] amounts, uint256 slippageBps) pure returns (uint256[] minAmounts)
getSellQuotes
viewfunction getSellQuotes(uint256 triviAmount) view returns (uint256 ethOut, uint256 usdcOut, uint256 cbbtcOut, uint256 virtualOut)
MAX_SLIPPAGE_BPS
viewfunction MAX_SLIPPAGE_BPS() view returns (uint256)
maxPriceImpactBps
viewfunction maxPriceImpactBps() view returns (uint256)
MIN_LIQUIDITY
viewfunction MIN_LIQUIDITY() view returns (uint256)
owner
viewfunction owner() view returns (address)
quoteBufferBps
viewfunction quoteBufferBps() view returns (uint256)
TAX_BPS
viewfunction TAX_BPS() view returns (uint256)
totalFeesCollected
viewfunction totalFeesCollected() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
TRIVI
viewfunction TRIVI() view returns (address)
UNISWAP_FACTORY
viewfunction UNISWAP_FACTORY() view returns (address)
UNISWAP_ROUTER
viewfunction UNISWAP_ROUTER() view returns (address)
USDC_TOKEN
viewfunction USDC_TOKEN() view returns (address)
VIRTUAL_TOKEN
viewfunction VIRTUAL_TOKEN() view returns (address)
WETH_TOKEN
viewfunction WETH_TOKEN() view returns (address)
buyWithCBBTC
nonpayablefunction buyWithCBBTC(uint256 cbbtcAmount, uint256 minTriviOut)
buyWithETH
payablefunction buyWithETH(uint256 minTriviOut) payable
buyWithUSDC
nonpayablefunction buyWithUSDC(uint256 usdcAmount, uint256 minTriviOut)
buyWithVIRTUAL
nonpayablefunction buyWithVIRTUAL(uint256 virtualAmount, uint256 minTriviOut)
rescueETH
nonpayablefunction rescueETH(uint256 amount)
rescueToken
nonpayablefunction rescueToken(address token, uint256 amount)
sellForCBBTC
nonpayablefunction sellForCBBTC(uint256 triviAmount, uint256 minCBBTCOut)
sellForETH
nonpayablefunction sellForETH(uint256 triviAmount, uint256 minETHOut)
sellForUSDC
nonpayablefunction sellForUSDC(uint256 triviAmount, uint256 minUSDCOut)
sellForVIRTUAL
nonpayablefunction sellForVIRTUAL(uint256 triviAmount, uint256 minVIRTUALOut)
setQuoteConfig
nonpayablefunction setQuoteConfig(uint256 newBufferBps, uint256 newDeadlineWindow, uint256 newMaxPriceImpactBps)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BoughtWithETH
event BoughtWithETH(address indexed buyer, uint256 ethIn, uint256 triviOut, uint256 feeAmount)
BoughtWithToken
event BoughtWithToken(address indexed buyer, address indexed tokenIn, uint256 amountIn, uint256 triviOut, uint256 feeAmount)
HighSlippageWarning
event HighSlippageWarning(address indexed user, uint256 expectedOut, uint256 minOut)
LowLiquidityWarning
event LowLiquidityWarning(address indexed token0, address indexed token1, uint256 liquidity)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
QuoteConfigUpdated
event QuoteConfigUpdated(uint256 bufferBps, uint256 deadlineWindow, uint256 maxPriceImpact)
SoldForETH
event SoldForETH(address indexed seller, uint256 triviIn, uint256 ethOut, uint256 feeAmount)
SoldForToken
event SoldForToken(address indexed seller, uint256 triviIn, address indexed tokenOut, uint256 amountOut, uint256 feeAmount)
TreasuryUpdated
event TreasuryUpdated(address indexed newTreasury)
errors
No errors.
creation bytecode
0x60a06040526001805561012c60045561012c6005556103e86006553480156200002757600080fd5b506040516200529d3803806200529d8339810160408190526200004a9162000281565b620000553362000214565b6001600160a01b0382166200009b5760405162461bcd60e51b8152602060048201526007602482015266054524956493d360cc1b60448201526064015b60405180910390fd5b6001600160a01b038116620000e05760405162461bcd60e51b815260206004820152600a602482015269074726561737572793d360b41b604482015260640162000092565b6001600160a01b03828116608052600280546001600160a01b031916918316919091179055604080516315ab88c960e31b8152905173420000000000000000000000000000000000000691734752ba5dbc23f44d87826276bf6fd6b1c372ad249163ad5c4648916004808201926020929091908290030181865afa1580156200016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001939190620002b9565b6001600160a01b031614620001d85760405162461bcd60e51b815260206004820152600a6024820152690aee4dedcce40ae8aa8960b31b604482015260640162000092565b6040516001600160a01b038216907f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a25050620002de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200027c57600080fd5b919050565b600080604083850312156200029557600080fd5b620002a08362000264565b9150620002b06020840162000264565b90509250929050565b600060208284031215620002cc57600080fd5b620002d78262000264565b9392505050565b608051614eca620003d3600039600081816106080152818161095801528181610b5b01528181610d1501528181610f1701528181611117015281816114630152818161164d015281816116ed0152818161172d015281816117e3015281816118290152818161188201528181611b8c01528181611bcc01528181611c8201528181611cc801528181611d1f015281816127e001528181612820015281816128d60152818161291c01528181612975015281816133e80152818161388901528181613abc01528181613c6b01528181613de201528181613e2201528181613ed801528181613f1e0152613f770152614eca6000f3fe6080604052600436106102345760003560e01c806394dc9cf31161012e578063dd81f567116100ab578063f2fde38b1161006f578063f2fde38b146106c2578063f49e7922146106e2578063f73f518e14610702578063fa56927414610722578063fd2ae5901461074a57600080fd5b8063dd81f5671461062a578063e062d5671461064a578063e229cd761461066a578063e5bdb85814610680578063f0f44260146106a257600080fd5b8063c28399ef116100f2578063c28399ef14610576578063c74c0fac1461058c578063cc33fb1e146105b4578063d8264920146105d4578063dba59711146105f657600080fd5b806394dc9cf3146104d15780639e252f00146104e4578063a4a0ee6214610504578063b116b42f14610541578063bf333f2c1461056157600080fd5b80634012c7fd116101bc5780636c24bf04116101805780636c24bf04146104285780637b3c3fb41461044857806384b6bb26146104705780638da5cb5b1461049d57806393359fe4146104bb57600080fd5b80634012c7fd1461039d57806347bee4c5146103bd57806360c6d8ae146103dd57806361d027b3146103f357806368f4a7861461041357600080fd5b806324415d5c1161020357806324415d5c146102f2578063249d39e91461031457806330f530571461032a57806333f3d6281461034a57806337d277d41461036a57600080fd5b8063093b9ee114610240578063110eb10714610262578063166e11b7146102a757806321b77d63146102c757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b3660046147d3565b610760565b005b34801561026e57600080fd5b5061028261027d3660046147f5565b610ae0565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b3480156102b357600080fd5b506102606102c23660046147d3565b611274565b3480156102d357600080fd5b506102e4683635c9adc5dea0000081565b60405190815260200161029e565b3480156102fe57600080fd5b506103076115a8565b60405161029e9190614852565b34801561032057600080fd5b506102e461271081565b34801561033657600080fd5b506102606103453660046147d3565b61169c565b34801561035657600080fd5b5061026061036536600461487a565b611ae7565b34801561037657600080fd5b506103856006602160991b0181565b6040516001600160a01b03909116815260200161029e565b3480156103a957600080fd5b506102606103b83660046147d3565b611b3b565b3480156103c957600080fd5b506102e46103d83660046147d3565b611f9f565b3480156103e957600080fd5b506102e460035481565b3480156103ff57600080fd5b50600254610385906001600160a01b031681565b34801561041f57600080fd5b506102e4606481565b34801561043457600080fd5b506102606104433660046148a6565b61200f565b34801561045457600080fd5b5061038573cbb7c0000ab88b473b1f5afd9ef808440eed33bf81565b34801561047c57600080fd5b5061049061048b3660046148d2565b61216e565b60405161029e919061494d565b3480156104a957600080fd5b506000546001600160a01b0316610385565b3480156104c757600080fd5b506102e460065481565b6102606104df3660046147f5565b612277565b3480156104f057600080fd5b506102606104ff3660046147f5565b6124dd565b34801561051057600080fd5b5061052461051f366004614991565b61259e565b60408051931515845260208401929092529082015260600161029e565b34801561054d57600080fd5b5061026061055c3660046147d3565b61278f565b34801561056d57600080fd5b506102e4601981565b34801561058257600080fd5b506102e460055481565b34801561059857600080fd5b50610385738909dc15e40173ff4699343b6eb8132c65e18ec681565b3480156105c057600080fd5b506102e46105cf3660046148a6565b612c78565b3480156105e057600080fd5b50610385600080516020614e7583398151915281565b34801561060257600080fd5b506103857f000000000000000000000000000000000000000000000000000000000000000081565b34801561063657600080fd5b506103076106453660046149ca565b612d96565b34801561065657600080fd5b506102606106653660046147d3565b613290565b34801561067657600080fd5b506102e46101f481565b34801561068c57600080fd5b50610385600080516020614e5583398151915281565b3480156106ae57600080fd5b506102606106bd366004614a0b565b613527565b3480156106ce57600080fd5b506102606106dd366004614a0b565b6135de565b3480156106ee57600080fd5b506102826106fd366004614a28565b613662565b34801561070e57600080fd5b5061026061071d3660046147d3565b613d91565b34801561072e57600080fd5b5061038573833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b34801561075657600080fd5b506102e460045481565b60026001540361078b5760405162461bcd60e51b815260040161078290614a5a565b60405180910390fd5b6002600155816107ad5760405162461bcd60e51b815260040161078290614a91565b6107cd73cbb7c0000ab88b473b1f5afd9ef808440eed33bf33308561427a565b60006127106107dd601985614ac9565b6107e79190614ae6565b905060006107f58285614b08565b90508115610841576002546108299073cbb7c0000ab88b473b1f5afd9ef808440eed33bf906001600160a01b031684614381565b816003600082825461083b9190614b1b565b90915550505b61086e73cbb7c0000ab88b473b1f5afd9ef808440eed33bf600080516020614e758339815191528361447f565b60408051600480825260a082019092526000916020820160808036833701905050905073cbb7c0000ab88b473b1f5afd9ef808440eed33bf816000815181106108b9576108b9614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b01816001815181106108f4576108f4614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160028151811061093657610936614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160038151811061098a5761098a614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506000600080516020614e758339815191526001600160a01b03166338ed173984878533600554426109db9190614b1b565b6040518663ffffffff1660e01b81526004016109fb959493929190614b5a565b6000604051808303816000875af1158015610a1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a429190810190614b96565b905073cbb7c0000ab88b473b1f5afd9ef808440eed33bf6001600160a01b0316336001600160a01b03167fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818888460018651610a9d9190614b08565b81518110610aad57610aad614b44565b6020908102919091018101516040805193845291830152810188905260600160405180910390a350506001805550505050565b600080808080612710610af4606488614ac9565b610afe9190614ae6565b610b089087614b08565b90506000612710610b1a601984614ac9565b610b249190614ae6565b610b2e9083614b08565b90508015610cea5760408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610b8d57610b8d614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600181518110610bcf57610bcf614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110610c0a57610c0a614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90610c559085908590600401614c54565b600060405180830381865afa925050508015610c9357506040513d6000823e601f3d908101601f19168201604052610c909190810190614b96565b60015b15610ce8578051600303610ce657612710600454612710610cb49190614b08565b82600281518110610cc757610cc7614b44565b6020026020010151610cd99190614ac9565b610ce39190614ae6565b97505b505b505b8015610eec5760408051600480825260a08201909252600091602082016080803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610d4757610d47614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600181518110610d8957610d89614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110610dc457610dc4614b44565b60200260200101906001600160a01b031690816001600160a01b03168152505073833589fcd6edb6e08f4c7c32d4f71b54bda0291381600381518110610e0c57610e0c614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90610e579085908590600401614c54565b600060405180830381865afa925050508015610e9557506040513d6000823e601f3d908101601f19168201604052610e929190810190614b96565b60015b15610eea578051600403610ee857612710600454612710610eb69190614b08565b82600381518110610ec957610ec9614b44565b6020026020010151610edb9190614ac9565b610ee59190614ae6565b96505b505b505b80156110ee5760408051600480825260a08201909252600091602082016080803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610f4957610f49614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600181518110610f8b57610f8b614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110610fc657610fc6614b44565b60200260200101906001600160a01b031690816001600160a01b03168152505073cbb7c0000ab88b473b1f5afd9ef808440eed33bf8160038151811061100e5761100e614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f906110599085908590600401614c54565b600060405180830381865afa92505050801561109757506040513d6000823e601f3d908101601f191682016040526110949190810190614b96565b60015b156110ec5780516004036110ea576127106004546127106110b89190614b08565b826003815181106110cb576110cb614b44565b60200260200101516110dd9190614ac9565b6110e79190614ae6565b95505b505b505b801561126b576040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061114957611149614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160018151811061118b5761118b614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f906111d69085908590600401614c54565b600060405180830381865afa92505050801561121457506040513d6000823e601f3d908101601f191682016040526112119190810190614b96565b60015b15611269578051600203611267576127106004546127106112359190614b08565b8260018151811061124857611248614b44565b602002602001015161125a9190614ac9565b6112649190614ae6565b94505b505b505b50509193509193565b6002600154036112965760405162461bcd60e51b815260040161078290614a5a565b6002600155816112b85760405162461bcd60e51b815260040161078290614a91565b6112d873833589fcd6edb6e08f4c7c32d4f71b54bda0291333308561427a565b60006127106112e8601985614ac9565b6112f29190614ae6565b905060006113008285614b08565b9050811561134c576002546113349073833589fcd6edb6e08f4c7c32d4f71b54bda02913906001600160a01b031684614381565b81600360008282546113469190614b1b565b90915550505b61137973833589fcd6edb6e08f4c7c32d4f71b54bda02913600080516020614e758339815191528361447f565b60408051600480825260a082019092526000916020820160808036833701905050905073833589fcd6edb6e08f4c7c32d4f71b54bda02913816000815181106113c4576113c4614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b01816001815181106113ff576113ff614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160028151811061144157611441614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160038151811061149557611495614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506000600080516020614e758339815191526001600160a01b03166338ed173984878533600554426114e69190614b1b565b6040518663ffffffff1660e01b8152600401611506959493929190614b5a565b6000604051808303816000875af1158015611525573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261154d9190810190614b96565b905073833589fcd6edb6e08f4c7c32d4f71b54bda029136001600160a01b0316336001600160a01b03167fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818888460018651610a9d9190614b08565b60408051600380825260808201909252606091600091906020820184803683370190505090506006602160991b01816000815181106115e9576115e9614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160018151811061162b5761162b614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061167f5761167f614b44565b6001600160a01b0390921660209283029190910190910152919050565b6002600154036116be5760405162461bcd60e51b815260040161078290614a5a565b6002600155816116e05760405162461bcd60e51b815260040161078290614a91565b6117156001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561427a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561177c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a09190614c6d565b905060006127106117b2601984614ac9565b6117bc9190614ae6565b905060006117ca8284614b08565b905081156118245760025461180c906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684614381565b816003600082825461181e9190614b1b565b90915550505b61185d7f0000000000000000000000000000000000000000000000000000000000000000600080516020614e758339815191528361447f565b60408051600380825260808201909252600091602082016060803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106118b4576118b4614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e55833981519152816001815181106118f6576118f6614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b018160028151811061193157611931614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506000479050600080516020614e758339815191526001600160a01b031663791ac94784888530600554426119859190614b1b565b6040518663ffffffff1660e01b81526004016119a5959493929190614b5a565b600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b50505050600081476119e59190614b08565b905086811015611a075760405162461bcd60e51b815260040161078290614c86565b604051600090339083908381818185875af1925050503d8060008114611a49576040519150601f19603f3d011682016040523d82523d6000602084013e611a4e565b606091505b5050905080611a955760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610782565b604080518a81526020810184905290810187905233907fb956d99dd0c259c3d9d420a89b7dfe23069187ea2a91ed70412f4788a52d77b29060600160405180910390a250506001805550505050505050565b6000546001600160a01b03163314611b115760405162461bcd60e51b815260040161078290614cb3565b611b37611b266000546001600160a01b031690565b6001600160a01b0384169083614381565b5050565b600260015403611b5d5760405162461bcd60e51b815260040161078290614a5a565b600260015581611b7f5760405162461bcd60e51b815260040161078290614a91565b611bb46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561427a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3f9190614c6d565b90506000612710611c51601984614ac9565b611c5b9190614ae6565b90506000611c698284614b08565b90508115611cc357600254611cab906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684614381565b8160036000828254611cbd9190614b1b565b90915550505b611cfc7f0000000000000000000000000000000000000000000000000000000000000000600080516020614e758339815191528361447f565b6040805160028082526060820183526000926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611d5157611d51614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600181518110611d9357611d93614b44565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b8152336004820152600090600080516020614e55833981519152906370a0823190602401602060405180830381865afa158015611df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1c9190614c6d565b9050600080516020614e758339815191526001600160a01b0316635c11d7958488853360055442611e4d9190614b1b565b6040518663ffffffff1660e01b8152600401611e6d959493929190614b5a565b600060405180830381600087803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b50506040516370a0823160e01b815233600482015260009250839150600080516020614e55833981519152906370a0823190602401602060405180830381865afa158015611eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f119190614c6d565b611f1b9190614b08565b905086811015611f3d5760405162461bcd60e51b815260040161078290614c86565b6040805189815260208101839052908101869052600080516020614e558339815191529033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b3240906060015b60405180910390a3505060018055505050505050565b60006101f4821115611fe75760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606401610782565b612710611ff48382614b08565b611ffe9085614ac9565b6120089190614ae6565b9392505050565b6000546001600160a01b031633146120395760405162461bcd60e51b815260040161078290614cb3565b6107d083111561207d5760405162461bcd60e51b815260206004820152600f60248201526e0c4eacccccae440e8dede40d0d2ced608b1b6044820152606401610782565b603c82101580156120905750610e108211155b6120cf5760405162461bcd60e51b815260206004820152601060248201526f191958591b1a5b99481a5b9d985b1a5960821b6044820152606401610782565b6113888111156121195760405162461bcd60e51b81526020600482015260156024820152740d2dae0c2c6e840d8d2dad2e840e8dede40d0d2ced605b1b6044820152606401610782565b60048390556005829055600681905560408051848152602081018490529081018290527f6c252e2a90803897231b453923ef0e2d3fcdd2ee20cb860a7d8b180161b014009060600160405180910390a1505050565b60606101f48211156121b65760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606401610782565b8267ffffffffffffffff8111156121cf576121cf614b2e565b6040519080825280602002602001820160405280156121f8578160200160208202803683370190505b50905060005b8381101561226f576127106122138482614b08565b86868481811061222557612225614b44565b905060200201356122369190614ac9565b6122409190614ae6565b82828151811061225257612252614b44565b60209081029190910101528061226781614ce8565b9150506121fe565b509392505050565b6002600154036122995760405162461bcd60e51b815260040161078290614a5a565b6002600155346122d95760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b6044820152606401610782565b60006127106122e9601934614ac9565b6122f39190614ae6565b905060006123018234614b08565b905081156123bb576002546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612356576040519150601f19603f3d011682016040523d82523d6000602084013e61235b565b606091505b50509050806123a25760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610782565b82600360008282546123b49190614b1b565b9091555050505b60006123c56115a8565b90506000600080516020614e758339815191526001600160a01b0316637ff36ab584878533600554426123f89190614b1b565b6040518663ffffffff1660e01b81526004016124179493929190614d01565b60006040518083038185885af1158015612435573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261245e9190810190614b96565b9050336001600160a01b03167f8e3075c3ab83d55decf7f0bcc1b3893764b4bb37388fdd5d217991eb056bf0e234836001855161249b9190614b08565b815181106124ab576124ab614b44565b6020908102919091018101516040805193845291830152810187905260600160405180910390a2505060018055505050565b6000546001600160a01b031633146125075760405162461bcd60e51b815260040161078290614cb3565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114612554576040519150601f19603f3d011682016040523d82523d6000602084013e612559565b606091505b5050905080611b375760405162461bcd60e51b8152602060048201526011602482015270115512081c995cd8dd594819985a5b1959607a1b6044820152606401610782565b60405163e6a4390560e01b81526001600160a01b03838116600483015282166024820152600090819081908190738909dc15e40173ff4699343b6eb8132c65e18ec69063e6a4390590604401602060405180830381865afa158015612607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262b9190614d36565b90506001600160a01b03811661264c57600080600093509350935050612788565b6000819050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b69190614d6f565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614d36565b9050896001600160a01b0316816001600160a01b03160361275757826001600160701b03169650816001600160701b03169550612770565b816001600160701b03169650826001600160701b031695505b6000871180156127805750600086115b975050505050505b9250925092565b6002600154036127b15760405162461bcd60e51b815260040161078290614a5a565b6002600155816127d35760405162461bcd60e51b815260040161078290614a91565b6128086001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561427a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561286f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128939190614c6d565b905060006127106128a5601984614ac9565b6128af9190614ae6565b905060006128bd8284614b08565b90508115612917576002546128ff906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684614381565b81600360008282546129119190614b1b565b90915550505b6129507f0000000000000000000000000000000000000000000000000000000000000000600080516020614e758339815191528361447f565b60408051600480825260a08201909252600091602082016080803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106129a7576129a7614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e55833981519152816001815181106129e9576129e9614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600281518110612a2457612a24614b44565b60200260200101906001600160a01b031690816001600160a01b03168152505073833589fcd6edb6e08f4c7c32d4f71b54bda0291381600381518110612a6c57612a6c614b44565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b815233600482015260009073833589fcd6edb6e08f4c7c32d4f71b54bda02913906370a0823190602401602060405180830381865afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb9190614c6d565b9050600080516020614e758339815191526001600160a01b0316635c11d7958488853360055442612b2c9190614b1b565b6040518663ffffffff1660e01b8152600401612b4c959493929190614b5a565b600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526000925083915073833589fcd6edb6e08f4c7c32d4f71b54bda02913906370a0823190602401602060405180830381865afa158015612bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf69190614c6d565b612c009190614b08565b905086811015612c225760405162461bcd60e51b815260040161078290614c86565b604080518981526020810183905290810186905273833589fcd6edb6e08f4c7c32d4f71b54bda029139033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b324090606001611f89565b6000821580612c85575081155b15612c935750612710612008565b6000612ca1856103e5614ac9565b90506000612caf8483614ac9565b9050600082612cc0876103e8614ac9565b612cca9190614b1b565b90506000612cd88284614ae6565b9050600087612cef88670de0b6b3a7640000614ac9565b612cf99190614ae6565b90506000612d078a8a614b1b565b90506000612d15848a614b08565b905080600003612d3057612710975050505050505050612008565b600082612d4583670de0b6b3a7640000614ac9565b612d4f9190614ae6565b905080841115612d825783612710612d678383614b08565b612d719190614ac9565b612d7b9190614ae6565b9850612d87565b600098505b50505050505050509392505050565b60606000612da4858561259e565b505090508015612ed6576040805160028082526060820183526000926020830190803683370190505090508581600081518110612de357612de3614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110612e1757612e17614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90612e629087908590600401614c54565b600060405180830381865afa925050508015612ea057506040513d6000823e601f3d908101601f19168201604052612e9d9190810190614b96565b60015b15612ed457600081600181518110612eba57612eba614b44565b60200260200101511115612ed2575091506120089050565b505b505b60408051600380825260808201909252600091602082016060803683370190505090508581600081518110612f0d57612f0d614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110612f4857612f48614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600281518110612f7c57612f7c614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90612fc79087908590600401614c54565b600060405180830381865afa92505050801561300557506040513d6000823e601f3d908101601f191682016040526130029190810190614b96565b60015b156131c05760008160028151811061301f5761301f614b44565b602002602001015111156131be576040805160038082526080820190925260009160208201606080368337019050509050878160008151811061306457613064614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e55833981519152816001815181106130a6576130a6614b44565b60200260200101906001600160a01b031690816001600160a01b03168152505086816002815181106130da576130da614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f906131259089908590600401614c54565b600060405180830381865afa92505050801561316357506040513d6000823e601f3d908101601f191682016040526131609190810190614b96565b60015b156131b2578260028151811061317b5761317b614b44565b60200260200101518160028151811061319657613196614b44565b602002602001015111156131b05750935061200892505050565b505b82945050505050612008565b505b604080516003808252608082019092526000916020820160608036833701905050905086816000815181106131f7576131f7614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160018151811061323957613239614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050858160028151811061326d5761326d614b44565b6001600160a01b0390921660209283029190910190910152925050509392505050565b6002600154036132b25760405162461bcd60e51b815260040161078290614a5a565b6002600155816132d45760405162461bcd60e51b815260040161078290614a91565b6132ee600080516020614e5583398151915233308561427a565b60006127106132fe601985614ac9565b6133089190614ae6565b905060006133168285614b08565b9050811561335c5760025461334490600080516020614e55833981519152906001600160a01b031684614381565b81600360008282546133569190614b1b565b90915550505b613383600080516020614e55833981519152600080516020614e758339815191528361447f565b604080516002808252606082018352600092602083019080368337019050509050600080516020614e55833981519152816000815181106133c6576133c6614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061341a5761341a614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506000600080516020614e758339815191526001600160a01b03166338ed1739848785336005544261346b9190614b1b565b6040518663ffffffff1660e01b815260040161348b959493929190614b5a565b6000604051808303816000875af11580156134aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134d29190810190614b96565b9050600080516020614e558339815191526001600160a01b0316336001600160a01b03167fa6e29c00bf1680ba19c30d2a8f45ddaf0f86e04debb29673869c716d220e0818888460018651610a9d9190614b08565b6000546001600160a01b031633146135515760405162461bcd60e51b815260040161078290614cb3565b6001600160a01b0381166135945760405162461bcd60e51b815260206004820152600a602482015269074726561737572793d360b41b6044820152606401610782565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b6000546001600160a01b031633146136085760405162461bcd60e51b815260040161078290614cb3565b6001600160a01b0381166136565760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610782565b61365f81614668565b50565b6000808080871561377157600061271061367d60198b614ac9565b6136879190614ae6565b613691908a614b08565b9050600061369d6115a8565b60405163d06ca61f60e01b8152909150600080516020614e758339815191529063d06ca61f906136d39085908590600401614c54565b600060405180830381865afa92505050801561371157506040513d6000823e601f3d908101601f1916820160405261370e9190810190614b96565b60015b61371e576000955061376e565b805160030361376c5761271060045461271061373a9190614b08565b8260028151811061374d5761374d614b44565b602002602001015161375f9190614ac9565b6137699190614ae6565b96505b505b50505b86156139a457600061271061378760198a614ac9565b6137919190614ae6565b61379b9089614b08565b60408051600480825260a08201909252919250600091906020820160808036833701905050905073833589fcd6edb6e08f4c7c32d4f71b54bda02913816000815181106137ea576137ea614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b018160018151811061382557613825614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e558339815191528160028151811061386757613867614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816003815181106138bb576138bb614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f906139069085908590600401614c54565b600060405180830381865afa92505050801561394457506040513d6000823e601f3d908101601f191682016040526139419190810190614b96565b60015b61395157600094506139a1565b805160040361399f5761271060045461271061396d9190614b08565b8260038151811061398057613980614b44565b60200260200101516139929190614ac9565b61399c9190614ae6565b95505b505b50505b8515613bd75760006127106139ba601989614ac9565b6139c49190614ae6565b6139ce9088614b08565b60408051600480825260a08201909252919250600091906020820160808036833701905050905073cbb7c0000ab88b473b1f5afd9ef808440eed33bf81600081518110613a1d57613a1d614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110613a5857613a58614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600281518110613a9a57613a9a614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110613aee57613aee614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90613b399085908590600401614c54565b600060405180830381865afa925050508015613b7757506040513d6000823e601f3d908101601f19168201604052613b749190810190614b96565b60015b613b845760009350613bd4565b8051600403613bd257612710600454612710613ba09190614b08565b82600381518110613bb357613bb3614b44565b6020026020010151613bc59190614ac9565b613bcf9190614ae6565b94505b505b50505b8415613d86576000612710613bed601988614ac9565b613bf79190614ae6565b613c019087614b08565b6040805160028082526060820183529293506000929091602083019080368337019050509050600080516020614e5583398151915281600081518110613c4957613c49614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110613c9d57613c9d614b44565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b8152600080516020614e758339815191529063d06ca61f90613ce89085908590600401614c54565b600060405180830381865afa925050508015613d2657506040513d6000823e601f3d908101601f19168201604052613d239190810190614b96565b60015b613d335760009250613d83565b8051600203613d8157612710600454612710613d4f9190614b08565b82600181518110613d6257613d62614b44565b6020026020010151613d749190614ac9565b613d7e9190614ae6565b93505b505b50505b945094509450949050565b600260015403613db35760405162461bcd60e51b815260040161078290614a5a565b600260015581613dd55760405162461bcd60e51b815260040161078290614a91565b613e0a6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561427a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e959190614c6d565b90506000612710613ea7601984614ac9565b613eb19190614ae6565b90506000613ebf8284614b08565b90508115613f1957600254613f01906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684614381565b8160036000828254613f139190614b1b565b90915550505b613f527f0000000000000000000000000000000000000000000000000000000000000000600080516020614e758339815191528361447f565b60408051600480825260a08201909252600091602082016080803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110613fa957613fa9614b44565b60200260200101906001600160a01b031690816001600160a01b031681525050600080516020614e5583398151915281600181518110613feb57613feb614b44565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b018160028151811061402657614026614b44565b60200260200101906001600160a01b031690816001600160a01b03168152505073cbb7c0000ab88b473b1f5afd9ef808440eed33bf8160038151811061406e5761406e614b44565b6001600160a01b0392909216602092830291909101909101526040516370a0823160e01b815233600482015260009073cbb7c0000ab88b473b1f5afd9ef808440eed33bf906370a0823190602401602060405180830381865afa1580156140d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fd9190614c6d565b9050600080516020614e758339815191526001600160a01b0316635c11d795848885336005544261412e9190614b1b565b6040518663ffffffff1660e01b815260040161414e959493929190614b5a565b600060405180830381600087803b15801561416857600080fd5b505af115801561417c573d6000803e3d6000fd5b50506040516370a0823160e01b81523360048201526000925083915073cbb7c0000ab88b473b1f5afd9ef808440eed33bf906370a0823190602401602060405180830381865afa1580156141d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f89190614c6d565b6142029190614b08565b9050868110156142245760405162461bcd60e51b815260040161078290614c86565b604080518981526020810183905290810186905273cbb7c0000ab88b473b1f5afd9ef808440eed33bf9033907fdf35fa1ebc47cd0ec524c55adf1469142d2c7aead6329cc08ad53e7e7d0b324090606001611f89565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092018352602080830180516001600160e01b03166323b872dd60e01b1790528351808501909452601e84527f5361666545524332303a207472616e7366657246726f6d206661696c6564000090840152909160009161430f919088169084906146b8565b805190915015614379578080602001905181019061432d9190614dbf565b6143795760405162461bcd60e51b815260206004820152601e60248201527f5361666545524332303a207472616e7366657246726f6d206661696c656400006044820152606401610782565b505050505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b1790528351808501909452601a84527f5361666545524332303a207472616e73666572206661696c656400000000000090840152909160009161440e919087169084906146b8565b805190915015614478578080602001905181019061442c9190614dbf565b6144785760405162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a207472616e73666572206661696c65640000000000006044820152606401610782565b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151909160009182918716906144dd908590614e05565b6000604051808303816000865af19150503d806000811461451a576040519150601f19603f3d011682016040523d82523d6000602084013e61451f565b606091505b50915091508180156145495750805115806145495750808060200190518101906145499190614dbf565b61437957604080516001600160a01b03878116602483015260006044808401919091528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601f84527f5361666545524332303a20726573657420617070726f7665206661696c656400908401526145d79290891691906146b8565b50604080516001600160a01b03878116602483015260448083018890528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601c84527f5361666545524332303a2072652d617070726f7665206661696c6564000000009084015261465f9290891691906146b8565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600080856001600160a01b0316856040516146d59190614e05565b6000604051808303816000865af19150503d8060008114614712576040519150601f19603f3d011682016040523d82523d6000602084013e614717565b606091505b509150915061472886838387614732565b9695505050505050565b606083156147a157825160000361479a576001600160a01b0385163b61479a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610782565b50816147cb565b8251156147b15782518084602001fd5b8160405162461bcd60e51b81526004016107829190614e21565b949350505050565b600080604083850312156147e657600080fd5b50508035926020909101359150565b60006020828403121561480757600080fd5b5035919050565b600081518084526020808501945080840160005b838110156148475781516001600160a01b031687529582019590820190600101614822565b509495945050505050565b602081526000612008602083018461480e565b6001600160a01b038116811461365f57600080fd5b6000806040838503121561488d57600080fd5b823561489881614865565b946020939093013593505050565b6000806000606084860312156148bb57600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156148e757600080fd5b833567ffffffffffffffff808211156148ff57600080fd5b818601915086601f83011261491357600080fd5b81358181111561492257600080fd5b8760208260051b850101111561493757600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b8181101561498557835183529284019291840191600101614969565b50909695505050505050565b600080604083850312156149a457600080fd5b82356149af81614865565b915060208301356149bf81614865565b809150509250929050565b6000806000606084860312156149df57600080fd5b83356149ea81614865565b925060208401356149fa81614865565b929592945050506040919091013590565b600060208284031215614a1d57600080fd5b813561200881614865565b60008060008060808587031215614a3e57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600890820152670416d6f756e743d360c41b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417614ae057614ae0614ab3565b92915050565b600082614b0357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115614ae057614ae0614ab3565b80820180821115614ae057614ae0614ab3565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b85815284602082015260a060408201526000614b7960a083018661480e565b6001600160a01b0394909416606083015250608001529392505050565b60006020808385031215614ba957600080fd5b825167ffffffffffffffff80821115614bc157600080fd5b818501915085601f830112614bd557600080fd5b815181811115614be757614be7614b2e565b8060051b604051601f19603f83011681018181108582111715614c0c57614c0c614b2e565b604052918252848201925083810185019188831115614c2a57600080fd5b938501935b82851015614c4857845184529385019392850192614c2f565b98975050505050505050565b8281526040602082015260006147cb604083018461480e565b600060208284031215614c7f57600080fd5b5051919050565b602080825260139082015272125b9cdd59999a58da595b9d081bdd5d1c1d5d606a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060018201614cfa57614cfa614ab3565b5060010190565b848152608060208201526000614d1a608083018661480e565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614d4857600080fd5b815161200881614865565b80516001600160701b0381168114614d6a57600080fd5b919050565b600080600060608486031215614d8457600080fd5b614d8d84614d53565b9250614d9b60208501614d53565b9150604084015163ffffffff81168114614db457600080fd5b809150509250925092565b600060208284031215614dd157600080fd5b8151801515811461200857600080fd5b60005b83811015614dfc578181015183820152602001614de4565b50506000910152565b60008251614e17818460208701614de1565b9190910192915050565b6020815260008251806020840152614e40816040850160208701614de1565b601f01601f1916919091016040019291505056fe0000000000000000000000000b3e328455c4059eeb9e3f84b5543f74e24e7e1b0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24a26469706673582212204e3e49182fd451ef840dbb882aabae55c9a805aee2b11371bec12c507b99247164736f6c634300081300330000000000000000000000000e6214f42992683a9177ce65d022f163d7bbd1d2000000000000000000000000ee0b91a41eb1faef101cc4ce3722499a7276f6bd