0 txs
3 calls
constructor
constructor(address _balancerVault, address _balancerHelpers, address _protocolToken, address _quoteToken, address _bptToken, address _amo, uint64 _protocolTokenIndexInPool, bytes32 _balancerPoolId)
functions
amo
viewfunction amo() view returns (address)
applySlippage
purefunction applySlippage(uint256 amountIn, uint256 slippageBps) pure returns (uint256 amountOut)
balancerHelpers
viewfunction balancerHelpers() view returns (address)
balancerPoolId
viewfunction balancerPoolId() view returns (bytes32)
balancerVault
viewfunction balancerVault() view returns (address)
BPS_PRECISION
viewfunction BPS_PRECISION() view returns (uint256)
bptToken
viewfunction bptToken() view returns (address)
getBalances
viewfunction getBalances() view returns (uint256[] balances)
getPairBalances
viewfunction getPairBalances() view returns (uint256 protocolTokenBalance, uint256 quoteTokenBalance)
getSlippage
viewfunction getSlippage(uint256 spotPriceBefore) view returns (uint256)
getSpotPrice
viewfunction getSpotPrice() view returns (uint256)
isSpotPriceAboveTpi
viewfunction isSpotPriceAboveTpi(uint256 slippage, uint256 treasuryPriceIndex) view returns (bool)
isSpotPriceAboveTpi
viewfunction isSpotPriceAboveTpi(uint256 treasuryPriceIndex) view returns (bool)
isSpotPriceAboveTpiUpperBound
viewfunction isSpotPriceAboveTpiUpperBound(uint256 rebalancePercentageBoundUp, uint256 treasuryPriceIndex) view returns (bool)
isSpotPriceBelowTpi
viewfunction isSpotPriceBelowTpi(uint256 slippage, uint256 treasuryPriceIndex) view returns (bool)
isSpotPriceBelowTpi
viewfunction isSpotPriceBelowTpi(uint256 treasuryPriceIndex) view returns (bool)
isSpotPriceBelowTpiLowerBound
viewfunction isSpotPriceBelowTpiLowerBound(uint256 rebalancePercentageBoundLow, uint256 treasuryPriceIndex) view returns (bool)
PRICE_PRECISION
viewfunction PRICE_PRECISION() view returns (uint256)
protocolToken
viewfunction protocolToken() view returns (address)
protocolTokenIndexInBalancerPool
viewfunction protocolTokenIndexInBalancerPool() view returns (uint64)
quoteToken
viewfunction quoteToken() view returns (address)
willExitTakePriceAboveTpiUpperBound
viewfunction willExitTakePriceAboveTpiUpperBound(uint256 tokensOut, uint256 rebalancePercentageBoundUp, uint256 treasuryPriceIndex) view returns (bool)
willJoinTakePriceBelowTpiLowerBound
viewfunction willJoinTakePriceBelowTpiLowerBound(uint256 tokensIn, uint256 rebalancePercentageBoundLow, uint256 treasuryPriceIndex) view returns (bool)
willQuoteTokenExitTakePriceBelowTpiLowerBound
viewfunction willQuoteTokenExitTakePriceBelowTpiLowerBound(uint256 tokensOut, uint256 rebalancePercentageBoundLow, uint256 treasuryPriceIndex) view returns (bool)
willQuoteTokenJoinTakePriceAboveTpiUpperBound
viewfunction willQuoteTokenJoinTakePriceAboveTpiUpperBound(uint256 tokensIn, uint256 rebalancePercentageBoundUp, uint256 treasuryPriceIndex) view returns (bool)
exitPool
nonpayablefunction exitPool(uint256 bptAmountIn, uint256 minAmountOut, uint256 rebalancePercentageBoundLow, uint256 rebalancePercentageBoundUp, uint256 postRebalanceDelta, uint256 exitTokenIndex, uint256 treasuryPriceIndex, address exitPoolToken) returns (uint256 amountOut)
joinPool
nonpayablefunction joinPool(uint256 amountIn, uint256 minBptOut, uint256 rebalancePercentageBoundUp, uint256 rebalancePercentageBoundLow, uint256 treasuryPriceIndex, uint256 postRebalanceDelta, uint256 joinTokenIndex, address joinPoolToken) returns (uint256 bptOut)
proportionalAddLiquidityQuote
nonpayablefunction proportionalAddLiquidityQuote(uint256 quoteTokenAmount, uint256 slippageBps) returns (uint256 protocolTokenAmount, uint256 expectedBptAmount, uint256 minBptAmount, tuple requestData)
proportionalRemoveLiquidityQuote
nonpayablefunction proportionalRemoveLiquidityQuote(uint256 bptAmount, uint256 slippageBps) returns (uint256 expectedProtocolTokenAmount, uint256 expectedQuoteTokenAmount, uint256 minProtocolTokenAmount, uint256 minQuoteTokenAmount, tuple requestData)
events
No events.
errors
HighSlippage
error HighSlippage()
NoRebalanceDown
error NoRebalanceDown()
NoRebalanceUp
error NoRebalanceUp()
OnlyAMO
error OnlyAMO()
creation bytecode
0x6101806040523480156200001257600080fd5b5060405162002f4e38038062002f4e833981016040819052620000359162000096565b610160526001600160a01b0396871660805294861660a05292851660e05290841661010052831660c052909116610120526001600160401b03166101405262000145565b80516001600160a01b03811681146200009157600080fd5b919050565b600080600080600080600080610100898b031215620000b457600080fd5b620000bf8962000079565b9750620000cf60208a0162000079565b9650620000df60408a0162000079565b9550620000ef60608a0162000079565b9450620000ff60808a0162000079565b93506200010f60a08a0162000079565b60c08a01519093506001600160401b03811681146200012d57600080fd5b8092505060e089015190509295985092959890939650565b60805160a05160c05160e05161010051610120516101405161016051612c68620002e66000396000818161046c0152818161053b01528181610ab601528181610dcc015281816112d701526118b701526000818161031c0152818161069b015281816108630152818161097e015281816110c00152818161139b0152818161146a01528181611bcc0152611e9d0152600081816104de01528181610ad801528181610beb015281816112f901526115710152600081816102bc01528181610893015281816108fb015281816110f00152818161115801528181611bf301528181611c5b01528181611ec40152611f2c015260008181610295015281816108b4015281816108da01528181610c440152818161111101528181611137015281816115ca01528181611c1401528181611c3a01528181611ee50152611f0b0152600081816103b3015281816117be015261194701526000818161049b01528181610a8901526112aa0152600081816102490152818161056401528181610d9f015281816116880152818161172701528181611768015261188a0152612c686000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637b3a475911610104578063db6c581a116100a2578063e3da5a2911610071578063e3da5a29146104bd578063e41de313146104d0578063fa706552146104d9578063ffd051831461050057600080fd5b8063db6c581a14610454578063dbbb64b914610467578063dc76fabc1461048e578063dd0cca0b1461049657600080fd5b8063a4710a90116100de578063a4710a90146103f7578063ac79a3a01461040a578063c470bc201461041d578063d7fc90ea1461043057600080fd5b80637b3a4759146103ae578063841d3e78146103d557806395082d25146103e857600080fd5b806321dcc0501161017157806364293ef51161014b57806364293ef5146103175780636ec2a4fa146103575780637908f4981461036a5780637a23bf601461038d57600080fd5b806321dcc050146102de57806324abfabf146102f15780632974c6781461030457600080fd5b806313e789e4116101ad57806313e789e414610231578063158274a5146102445780631a465fe114610290578063217a4b70146102b757600080fd5b8062113e08146101d35780630affc347146101f15780630c39bcfd14610214575b600080fd5b6101db610513565b6040516101e891906125c7565b60405180910390f35b6102046101ff3660046125da565b61060d565b60405190151581526020016101e8565b61021c610681565b604080519283526020830191909152016101e8565b61020461023f366004612606565b61073c565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046102ec366004612628565b610775565b6102046102ff366004612628565b610787565b610204610312366004612606565b610799565b61033e7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020016101e8565b610204610365366004612606565b6107ac565b61037d610378366004612606565b6107b8565b6040516101e89493929190612753565b6103a061039b3660046127a7565b610bd1565b6040519081526020016101e8565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6102046103e33660046125da565b610f16565b6103a0670de0b6b3a764000081565b6103a0610405366004612628565b610f8a565b6102046104183660046125da565b610fcd565b6103a061042b366004612606565b611027565b61044361043e366004612606565b61104a565b6040516101e8959493929190612811565b610204610462366004612606565b6114ea565b6103a07f000000000000000000000000000000000000000000000000000000000000000081565b6103a0611521565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b6103a06104cb3660046127a7565b611557565b6103a061271081565b61026b7f000000000000000000000000000000000000000000000000000000000000000081565b61020461050e3660046125da565b611a22565b6040517ff94d46680000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f94d466890602401600060405180830381865afa1580156105c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106069190810190612949565b5092915050565b6000806127108361061e8683612a46565b6106289190612a59565b6106329190612a70565b905060008061063f610681565b909250905060006106508883612a46565b9050600083610667670de0b6b3a764000084612a59565b6106719190612a70565b9490941198975050505050505050565b600080600061068e610513565b905067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156106fb57806001815181106106d3576106d3612aab565b6020026020010151816000815181106106ee576106ee612aab565b6020026020010151610732565b8060008151811061070e5761070e612aab565b60200260200101518160018151811061072957610729612aab565b60200260200101515b9094909350915050565b60008061271061074c8486612a59565b6107569190612a70565b90506107628184612ada565b61076a611521565b109150505b92915050565b600081610780611521565b1192915050565b600081610792611521565b1092915050565b60006107a583836114ea565b9392505050565b60006107a5838361073c565b60008060006107ea60405180608001604052806060815260200160608152602001606081526020016000151581525090565b6000806107f5610681565b915091508060001461081b578061080c8984612a59565b6108169190612a70565b61081d565b875b60408051600280825260608201835292985091906020830190803683375050508352604080516002808252606082018352909160208301908036833750505060208401527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16156108d8577f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061091b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8451805160009061092e5761092e612aab565b60200260200101856000015160018151811061094c5761094c612aab565b73ffffffffffffffffffffffffffffffffffffffff93841660209182029290920101529116905267ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156109aa5787866109ad565b85885b84602001516000815181106109c4576109c4612aab565b6020026020010185602001516001815181106109e2576109e2612aab565b60200260200101828152508281525050506000600184602001516000604051602001610a1093929190612aed565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815285810182905260006060870152517f9ebbf05d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639ebbf05d90610b04907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908a90600401612b19565b6000604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b699190810190612b58565b509550610b768689611027565b94506001846020015186604051602001610b9293929190612b9f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152850152509497939650919450925050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c42576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610ca657610ca188878986611a7c565b610cb2565b610cb288878986611b04565b6000610cbf8a8a87611b4f565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190612bc8565b90506000610d5f611521565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638bdb391390610dfa907f000000000000000000000000000000000000000000000000000000000000000090309033908990600401612b19565b600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000925073ffffffffffffffffffffffffffffffffffffffff881691506370a0823190602401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612bc8565b9050828103945088610ece83610f8a565b1115610f06576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505098975050505050505050565b60008061271083610f278683612ada565b610f319190612a59565b610f3b9190612a70565b9050600080610f48610681565b90925090506000610f598884612a46565b9050600081610f70670de0b6b3a764000085612a59565b610f7a9190612a70565b9490941098975050505050505050565b600080610f95611521565b90506000838211610fa857818403610fac565b8382035b905083610fbb61271083612a59565b610fc59190612a70565b949350505050565b60008061271083610fde8683612a46565b610fe89190612a59565b610ff29190612a70565b9050600080610fff610681565b909250905060006110108884612ada565b9050600081610667670de0b6b3a764000085612a59565b60006127106110368382612ada565b6110409085612a59565b6107a59190612a70565b60008060008061107d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835290916020830190803683375050508152604080516002808252606082018352909160208301908036833750505060208201527f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1615611135577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611178565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b8251805160009061118b5761118b612aab565b6020026020010183600001516001815181106111a9576111a9612aab565b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050506000600188604051602001611231929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815283810182905260006060850152517fc7b2c52c00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c7b2c52c90611325907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009081908890600401612b19565b6000604051808303816000875af1158015611344573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261138a9190810190612b58565b60208401525067ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016156114035781602001516001815181106113d7576113d7612aab565b602002602001015182602001516000815181106113f6576113f6612aab565b6020026020010151611442565b816020015160008151811061141a5761141a612aab565b6020026020010151826020015160018151811061143957611439612aab565b60200260200101515b90965094506114518688611027565b935061145d8588611027565b925067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611496578284611499565b83835b83602001516000815181106114b0576114b0612aab565b6020026020010184602001516001815181106114ce576114ce612aab565b6020026020010182815250828152505050509295509295909350565b6000806127106114fa8486612a59565b6115049190612a70565b90506115108184612a46565b611518611521565b11949350505050565b600080600061152e610681565b90925090508161154682670de0b6b3a7640000612a59565b6115509190612a70565b9250505090565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146115c8576040517f1ae67f6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461162c5761162789888888611d8a565b611638565b61163889888888611dd5565b60006116458a858b611e20565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015291925060009185169063dd62ed3e90604401602060405180830381865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117019190612bc8565b90508a81101561178d5761174c73ffffffffffffffffffffffffffffffffffffffff85167f000000000000000000000000000000000000000000000000000000000000000083612008565b61178d73ffffffffffffffffffffffffffffffffffffffff85167f00000000000000000000000000000000000000000000000000000000000000008d61220e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561181a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183e9190612bc8565b9050600061184a611521565b6040517fb95cac2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b95cac28906118e5907f000000000000000000000000000000000000000000000000000000000000000090309033908a90600401612b19565b600060405180830381600087803b1580156118ff57600080fd5b505af1158015611913573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152600092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691506370a0823190602401602060405180830381865afa1580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c89190612bc8565b90508281039550886119d983610f8a565b1115611a11576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505098975050505050505050565b60008061271083611a338683612ada565b611a3d9190612a59565b611a479190612a70565b9050600080611a54610681565b90925090506000611a658883612ada565b9050600083610f70670de0b6b3a764000084612a59565b611a868382610799565b611abc576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383611a22565b15611afe576040517f4c9b2c5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611b0e82826107ac565b611b44576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848483610fcd565b611b7c60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611c38577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611c7b565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611c8e57611c8e612aab565b6020026020010184600181518110611ca857611ca8612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528315611cdd57600085611ce1565b8460005b82600081518110611cf457611cf4612aab565b6020026020010183600181518110611d0e57611d0e612aab565b60209081029190910181019290925291909152604080516000928101839052908101889052606081018690526080015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815293855260208501929092525090820152600060608201529392505050565b611d9482826107ac565b611dca576040517fb9e2326b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac784848361060d565b611ddf8382610799565b611e15576040517ffab904b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac7848383610f16565b611e4d60405180608001604052806060815260200160608152602001606081526020016000151581525090565b60408051600280825260608201835260009260208301908036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001615611f09577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f4c565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b83600081518110611f5f57611f5f612aab565b6020026020010184600181518110611f7957611f79612aab565b73ffffffffffffffffffffffffffffffffffffffff9384166020918202929092010152911690528415611fae57600086611fb2565b8560005b82600081518110611fc557611fc5612aab565b6020026020010183600181518110611fdf57611fdf612aab565b6020026020010182815250828152505050600060018286604051602001611d3e93929190612b9f565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190612bc8565b905081811015612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e6365206260448201527f656c6f77207a65726f000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff841660248201528282036044820152611afe9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612307565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a89190612bc8565b9050611afe847f095ea7b300000000000000000000000000000000000000000000000000000000856122da8686612a46565b60405173ffffffffffffffffffffffffffffffffffffffff9092166024830152604482015260640161218c565b6000612369826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661241b9092919063ffffffff16565b905080516000148061238a57508080602001905181019061238a9190612be1565b612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401612130565b505050565b6060610fc58484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161244f9190612c03565b60006040518083038185875af1925050503d806000811461248c576040519150601f19603f3d011682016040523d82523d6000602084013e612491565b606091505b50915091506124a2878383876124ad565b979650505050505050565b6060831561254357825160000361253c5773ffffffffffffffffffffffffffffffffffffffff85163b61253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612130565b5081610fc5565b610fc583838151156125585781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121309190612c1f565b600081518084526020808501945080840160005b838110156125bc578151875295820195908201906001016125a0565b509495945050505050565b6020815260006107a5602083018461258c565b6000806000606084860312156125ef57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561261957600080fd5b50508035926020909101359150565b60006020828403121561263a57600080fd5b5035919050565b60005b8381101561265c578181015183820152602001612644565b50506000910152565b6000815180845261267d816020860160208601612641565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561270157835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016126cf565b50508285015191508581038387015261271a818361258c565b92505050604083015184820360408601526127358282612665565b915050606083015161274b606086018215159052565b509392505050565b84815283602082015282604082015260806060820152600061277860808301846126af565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146127a457600080fd5b50565b600080600080600080600080610100898b0312156127c457600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e089013561280081612782565b809150509295985092959890939650565b85815284602082015283604082015282606082015260a0608082015260006124a260a08301846126af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128b2576128b261283c565b604052919050565b600067ffffffffffffffff8211156128d4576128d461283c565b5060051b60200190565b600082601f8301126128ef57600080fd5b815160206129046128ff836128ba565b61286b565b82815260059290921b8401810191818101908684111561292357600080fd5b8286015b8481101561293e5780518352918301918301612927565b509695505050505050565b60008060006060848603121561295e57600080fd5b835167ffffffffffffffff8082111561297657600080fd5b818601915086601f83011261298a57600080fd5b8151602061299a6128ff836128ba565b82815260059290921b8401810191818101908a8411156129b957600080fd5b948201945b838610156129e05785516129d181612782565b825294820194908201906129be565b918901519197509093505050808211156129f957600080fd5b50612a06868287016128de565b925050604084015190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076f5761076f612a17565b808202811582820484141761076f5761076f612a17565b600082612aa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561076f5761076f612a17565b838152606060208201526000612b06606083018561258c565b905060ff83166040830152949350505050565b848152600073ffffffffffffffffffffffffffffffffffffffff80861660208401528085166040840152506080606083015261277860808301846126af565b60008060408385031215612b6b57600080fd5b82519150602083015167ffffffffffffffff811115612b8957600080fd5b612b95858286016128de565b9150509250929050565b838152606060208201526000612bb8606083018561258c565b9050826040830152949350505050565b600060208284031215612bda57600080fd5b5051919050565b600060208284031215612bf357600080fd5b815180151581146107a557600080fd5b60008251612c15818460208701612641565b9190910192915050565b6020815260006107a5602083018461266556fea264697066735822122065bc6323d437f3a154f1485032ddbfe097b3bfc93954b6030c2211215f8f35db64736f6c63430008130033000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80000000000000000000000005addcca35b7a0d07c74063c48700c8590e87864e000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000008bd4a1e74a27182d23b98c10fd21d4fbb0ed4ba0000000000000000000000000ddf499e726bfde29ce035f6b355e55757f08b5ef00000000000000000000000000000000000000000000000000000000000000008bd4a1e74a27182d23b98c10fd21d4fbb0ed4ba00002000000000000000004ed