0 txs
1 call
constructor
constructor(uint8 _decimals)
functions
aliasFor
viewfunction aliasFor(address sourceToken) view returns (uint256)
balancerV2BptPrice
viewfunction balancerV2BptPrice(address balancerVault, address bptToken) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
div
viewfunction div(bytes numerator, bytes denominator) view returns (uint256)
erc4626TokenPrice
viewfunction erc4626TokenPrice(address vault) view returns (uint256)
kodiakIslandPrice
viewfunction kodiakIslandPrice(address island) view returns (uint256)
kodiakV3Price
viewfunction kodiakV3Price(address pool, bool inQuotedOrder) view returns (uint256)
mul
viewfunction mul(bytes v1, bytes v2) view returns (uint256)
oraclePrice
viewfunction oraclePrice(address _oracle, uint256 _stalenessThreshold) view returns (uint256 price)
origamiOraclePrice
viewfunction origamiOraclePrice(address origamiOracle, uint8 priceType, uint8 roundingMode) view returns (uint256)
owner
viewfunction owner() view returns (address)
priceFnCalldata
viewfunction priceFnCalldata(address) view returns (bytes)
repricingTokenPrice
viewfunction repricingTokenPrice(address _repricingToken) view returns (uint256)
scalar
purefunction scalar(uint256 _amount) pure returns (uint256)
tokenizedBalanceSheetTokenPrice
viewfunction tokenizedBalanceSheetTokenPrice(address vault) view returns (uint256)
tokenPrice
viewfunction tokenPrice(address token) view returns (uint256 price)
tokenPrices
viewfunction tokenPrices(address[] tokens) view returns (uint256[] prices)
traderJoeBestPrice
viewfunction traderJoeBestPrice(address joeQuoter, address sellToken, address buyToken) view returns (uint256)
univ3Price
viewfunction univ3Price(address pool, bool inQuotedOrder) view returns (uint256)
wstEthRatio
viewfunction wstEthRatio(address _stEthToken) view returns (uint256 ratio)
renounceOwnership
nonpayablefunction renounceOwnership()
setTokenPriceFunction
nonpayablefunction setTokenPriceFunction(address token, bytes fnCalldata)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TokenPriceFunctionSet
event TokenPriceFunctionSet(address indexed token, bytes fnCalldata)
errors
FailedPriceLookup
error FailedPriceLookup(bytes fnCalldata)
InvalidPrice
error InvalidPrice(int256)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
creation bytecode
0x60a06040523480156200001157600080fd5b506040516200309b3803806200309b83398101604081905262000034916200009b565b6200003f336200004b565b60ff16608052620000c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000ae57600080fd5b815160ff81168114620000c057600080fd5b9392505050565b608051612f79620001226000396000818161022d0152818161053b01528181610730015281816108e60152818161124501528181611acf01528181611afd01528181611b2e01528181611cb30152611dfa0152612f796000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80637eb11c63116100e3578063a67a68431161008c578063cd28308511610066578063cd28308514610355578063f2fde38b14610375578063fd47f60f1461038857600080fd5b8063a67a68431461031c578063c02486d01461032f578063cbf4f6511461034257600080fd5b80638da5cb5b116100bd5780638da5cb5b146102db57806391b694fc146102f65780639a59b9bd1461030957600080fd5b80637eb11c63146102a2578063843a3b50146102b557806384ba3f69146102c857600080fd5b80632b6173b51161014557806365b4c6e11161011f57806365b4c6e114610274578063695ee9ae14610287578063715018a61461029a57600080fd5b80632b6173b514610215578063313ce5671461022857806356cdeb0b1461026157600080fd5b806304b395341161017657806304b39534146101dc5780630983b122146101ef5780631f96b34e1461020057600080fd5b80630433067614610192578063047d3ee7146101bb575b600080fd5b6101a56101a03660046120a4565b61039b565b6040516101b29190612119565b60405180910390f35b6101ce6101c93660046121a6565b6104f5565b6040519081526020016101b2565b6101ce6101ea366004612234565b6105bf565b6101ce6101fd36600461227f565b90565b61021361020e366004612298565b6106a4565b005b6101ce6102233660046122ed565b610718565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101b2565b6101ce61026f3660046121a6565b610729565b6101ce610282366004612318565b610795565b6101ce6102953660046122ed565b6108d0565b61021361096b565b6101ce6102b03660046122ed565b61097f565b6101ce6102c3366004612351565b610ad7565b6101ce6102d63660046122ed565b610c49565b6000546040516001600160a01b0390911681526020016101b2565b6101ce6103043660046122ed565b610c71565b6101ce610317366004612318565b610f5e565b6101ce61032a36600461237d565b610fc3565b6101ce61033d3660046122ed565b61128e565b6101ce6103503660046123bd565b6114b3565b6103686103633660046122ed565b61170f565b6040516101b2919061240f565b6102136103833660046122ed565b6117a9565b6101ce6103963660046122ed565b611853565b60608167ffffffffffffffff8111156103b6576103b6612442565b6040519080825280602002602001820160405280156103df578160200160208202803683370190505b50905060005b828110156104ee576104c96001600086868581811061040657610406612471565b905060200201602081019061041b91906122ed565b6001600160a01b03166001600160a01b031681526020019081526020016000208054610446906124a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610472906124a0565b80156104bf5780601f10610494576101008083540402835291602001916104bf565b820191906000526020600020905b8154815290600101906020018083116104a257829003601f168201915b5050505050611a1b565b8282815181106104db576104db612471565b60209081029190910101526001016103e5565b5092915050565b600061053683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a1b92505050565b6105617f0000000000000000000000000000000000000000000000000000000000000000600a612606565b6105a087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a1b92505050565b6105aa9190612615565b6105b4919061265b565b90505b949350505050565b600061069a846001600160a01b031663c6845a0985856040518363ffffffff1660e01b81526004016105f29291906126fc565b602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190612722565b856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190612751565b611acb565b90505b9392505050565b6106ac611b6b565b826001600160a01b03167f93fa1ce7e48dfdc05f1ed4d25b05cf97a746916f5b7db908adee4d56082d8fcd83836040516106e792919061276c565b60405180910390a26001600160a01b03831660009081526001602052604090206107128284836127ec565b50505050565b600061072382610c49565b92915050565b60006107567f0000000000000000000000000000000000000000000000000000000000000000600a612606565b61056184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a1b92505050565b600080836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa91906128d1565b50505050505090506105b78184866001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108699190612969565b876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cb9190612969565b611bdf565b60006001600160a01b038216637a28fb8861090c7f0000000000000000000000000000000000000000000000000000000000000000600a612606565b6040518263ffffffff1660e01b815260040161092a91815260200190565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190612722565b610973611b6b565b61097d6000611e6f565b565b6000808290506000816001600160a01b031663f4325d676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612969565b9050806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190612751565b610a5890600a612606565b826001600160a01b0316631902848a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aba9190612722565b610ac383610c49565b610acd9190612615565b6105b7919061265b565b600080839050600080600080846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906129a0565b9450945050935093508369ffffffffffffffffffff168169ffffffffffffffffffff1611158015610b7e575086610b7c83426129f0565b115b15610bbd576040517f38ee04a7000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b6000831215610bfb576040517f38ee04a700000000000000000000000000000000000000000000000000000000815260048101849052602401610bb4565b610c3d83866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610671573d6000803e3d6000fd5b98975050505050505050565b6001600160a01b038116600090815260016020526040812080546107239190610446906124a0565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd69190612969565b90506000836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190612969565b9050600080856001600160a01b0316631322d9546040518163ffffffff1660e01b81526004016040805180830381865afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190612a03565b915091506000610e2982610db586610c49565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e179190612751565b610e2290600a612606565b6000611ed7565b610e7484610e3688610c49565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df3573d6000803e3d6000fd5b610e7e9190612a27565b9050610f5381886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee69190612751565b610ef190600a612606565b896001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e229190612722565b979650505050505050565b600080836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa9190612a3a565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610ffc57610ffc612471565b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061103057611030612471565b60200260200101906001600160a01b031690816001600160a01b0316815250506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b49190612751565b90506000856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111a9190612751565b905060006001600160a01b03881663c1b7687b8561113985600a612606565b6040518363ffffffff1660e01b8152600401611156929190612ab6565b600060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261119b9190810190612c61565b905060006111c782608001516000815181106111b9576111b9612471565b602002602001015184611acb565b90506000670de0b6b3a76400008360a001516000815181106111eb576111eb612471565b6020026020010151836111fe9190612615565b611208919061265b565b90506000611234846080015160018151811061122657611226612471565b602002602001015187611acb565b905061124082846129f0565b61126b7f0000000000000000000000000000000000000000000000000000000000000000600a612606565b6112759083612615565b61127f919061265b565b9b9a5050505050505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190612751565b9050826000806001600160a01b038316638f39a80b61131386600a612606565b6040518263ffffffff1660e01b815260040161133191815260200190565b600060405180830381865afa15801561134e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113769190810190612d82565b91509150600080846001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e39190810190612de6565b915091506000805b83518110156114445761143084828151811061140957611409612471565b602002602001015187838151811061142357611423612471565b6020026020010151611f6a565b61143a9083612e40565b91506001016113eb565b5060005b82518110156114945761148083828151811061146657611466612471565b602002602001015186838151811061142357611423612471565b61148a9083612e68565b9150600101611448565b50600081136114a45760006114a6565b805b9998505050505050505050565b6000806000846001600160a01b031663f94d4668856001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115299190612722565b6040518263ffffffff1660e01b815260040161154791815260200190565b600060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261158c9190810190612e88565b50915091506000805b83518110156116555760008482815181106115b2576115b2612471565b60200260200101519050866001600160a01b0316816001600160a01b0316036115db575061164d565b61163f8483815181106115f0576115f0612471565b602002602001015161160183610c49565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df3573d6000803e3d6000fd5b6116499084612a27565b9250505b600101611595565b5061170581866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190612751565b6116c790600a612606565b876001600160a01b031663876f303b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2f573d6000803e3d6000fd5b9695505050505050565b60016020526000908152604090208054611728906124a0565b80601f0160208091040260200160405190810160405280929190818152602001828054611754906124a0565b80156117a15780601f10611776576101008083540402835291602001916117a1565b820191906000526020600020905b81548152906001019060200180831161178457829003601f168201915b505050505081565b6117b1611b6b565b6001600160a01b038116611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610bb4565b61185081611e6f565b50565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b89190612751565b905060008390506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119239190612969565b90506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119899190612751565b905061170561199783610c49565b6001600160a01b0385166307a2d13a6119b188600a612606565b6040518263ffffffff1660e01b81526004016119cf91815260200190565b602060405180830381865afa1580156119ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a109190612722565b610e2284600a612606565b6000806000306001600160a01b031684604051611a389190612ef5565b600060405180830381855afa9150503d8060008114611a73576040519150601f19603f3d011682016040523d82523d6000602084013e611a78565b606091505b50915091508115611a9757808060200190518101906105b79190612722565b836040517f1d07c994000000000000000000000000000000000000000000000000000000008152600401610bb4919061240f565b60007f000000000000000000000000000000000000000000000000000000000000000060ff168260ff1611611b2c57817f00000000000000000000000000000000000000000000000000000000000000000360ff16600a0a83029050610723565b7f0000000000000000000000000000000000000000000000000000000000000000820360ff16600a0a8381611b6357611b6361262c565b049050610723565b6000546001600160a01b0316331461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bb4565b60008315611d2e576000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4b9190612751565b846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad9190612751565b611cd7907f0000000000000000000000000000000000000000000000000000000000000000612f11565b611ce19190612f2a565b611cec90600a612606565b9050611d26611d046001600160a01b03881680612615565b8278010000000000000000000000000000000000000000000000006000611ed7565b9150506105b7565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190612751565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df49190612751565b611e1e907f0000000000000000000000000000000000000000000000000000000000000000612f11565b611e289190612f2a565b611e3390600a612606565b90506001600160a01b038616611e65780100000000000000000000000000000000000000000000000083836000611ed7565b611d26919061265b565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611ee4858585611fb7565b90506001826001811115611efa57611efa612696565b036105b7578280611f0d57611f0d61262c565b848609156105b757600019811015611f27576001016105b7565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610bb4565b600061069d611f7884610c49565b83856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df3573d6000803e3d6000fd5b6000808060001985870985870292508281108382030391505080600003611ff157838281611fe757611fe761262c565b049250505061069d565b83811061203b576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610bb4565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600080602083850312156120b757600080fd5b823567ffffffffffffffff808211156120cf57600080fd5b818501915085601f8301126120e357600080fd5b8135818111156120f257600080fd5b8660208260051b850101111561210757600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561215157835183529284019291840191600101612135565b50909695505050505050565b60008083601f84011261216f57600080fd5b50813567ffffffffffffffff81111561218757600080fd5b60208301915083602082850101111561219f57600080fd5b9250929050565b600080600080604085870312156121bc57600080fd5b843567ffffffffffffffff808211156121d457600080fd5b6121e08883890161215d565b909650945060208701359150808211156121f957600080fd5b506122068782880161215d565b95989497509550505050565b6001600160a01b038116811461185057600080fd5b6002811061185057600080fd5b60008060006060848603121561224957600080fd5b833561225481612212565b9250602084013561226481612227565b9150604084013561227481612227565b809150509250925092565b60006020828403121561229157600080fd5b5035919050565b6000806000604084860312156122ad57600080fd5b83356122b881612212565b9250602084013567ffffffffffffffff8111156122d457600080fd5b6122e08682870161215d565b9497909650939450505050565b6000602082840312156122ff57600080fd5b813561069d81612212565b801515811461185057600080fd5b6000806040838503121561232b57600080fd5b823561233681612212565b915060208301356123468161230a565b809150509250929050565b6000806040838503121561236457600080fd5b823561236f81612212565b946020939093013593505050565b60008060006060848603121561239257600080fd5b833561239d81612212565b925060208401356123ad81612212565b9150604084013561227481612212565b600080604083850312156123d057600080fd5b82356123db81612212565b9150602083013561234681612212565b60005b838110156124065781810151838201526020016123ee565b50506000910152565b602081526000825180602084015261242e8160408501602087016123eb565b601f01601f19169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806124b457607f821691505b6020821081036124ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561255d578160001904821115612543576125436124f3565b8085161561255057918102915b93841c9390800290612527565b509250929050565b60008261257457506001610723565b8161258157506000610723565b816001811461259757600281146125a1576125bd565b6001915050610723565b60ff8411156125b2576125b26124f3565b50506001821b610723565b5060208310610133831016604e8410600b84101617156125e0575081810a610723565b6125ea8383612522565b80600019048211156125fe576125fe6124f3565b029392505050565b600061069d60ff841683612565565b8082028115828204841417610723576107236124f3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110611850577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60408101612709846126c5565b838252612715836126c5565b8260208301529392505050565b60006020828403121561273457600080fd5b5051919050565b805160ff8116811461274c57600080fd5b919050565b60006020828403121561276357600080fd5b61069d8261273b565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b601f8211156127e7576000816000526020600020601f850160051c810160208610156127c45750805b601f850160051c820191505b818110156127e3578281556001016127d0565b5050505b505050565b67ffffffffffffffff83111561280457612804612442565b6128188361281283546124a0565b8361279b565b6000601f84116001811461284c57600085156128345750838201355b600019600387901b1c1916600186901b1783556128a6565b600083815260209020601f19861690835b8281101561287d578685013582556020948501946001909201910161285d565b508682101561289a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8051600281900b811461274c57600080fd5b805161ffff8116811461274c57600080fd5b600080600080600080600060e0888a0312156128ec57600080fd5b87516128f781612212565b9650612905602089016128ad565b9550612913604089016128bf565b9450612921606089016128bf565b935061292f608089016128bf565b925060a088015163ffffffff8116811461294857600080fd5b60c08901519092506129598161230a565b8091505092959891949750929550565b60006020828403121561297b57600080fd5b815161069d81612212565b805169ffffffffffffffffffff8116811461274c57600080fd5b600080600080600060a086880312156129b857600080fd5b6129c186612986565b94506020860151935060408601519250606086015191506129e460808701612986565b90509295509295909350565b81810381811115610723576107236124f3565b60008060408385031215612a1657600080fd5b505080516020909101519092909150565b80820180821115610723576107236124f3565b600080600080600080600060e0888a031215612a5557600080fd5b8751612a6081612212565b9650612a6e602089016128ad565b9550612a7c604089016128bf565b9450612a8a606089016128bf565b9350612a98608089016128bf565b9250612aa660a0890161273b565b915060c08801516129598161230a565b604080825283519082018190526000906020906060840190828701845b82811015612af85781516001600160a01b031684529284019290840190600101612ad3565b505050602093909301939093525092915050565b60405160c0810167ffffffffffffffff81118282101715612b2f57612b2f612442565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b5e57612b5e612442565b604052919050565b600067ffffffffffffffff821115612b8057612b80612442565b5060051b60200190565b600082601f830112612b9b57600080fd5b81516020612bb0612bab83612b66565b612b35565b8083825260208201915060208460051b870101935086841115612bd257600080fd5b602086015b84811015612bf7578051612bea81612212565b8352918301918301612bd7565b509695505050505050565b600082601f830112612c1357600080fd5b81516020612c23612bab83612b66565b8083825260208201915060208460051b870101935086841115612c4557600080fd5b602086015b84811015612bf75780518352918301918301612c4a565b600060208284031215612c7357600080fd5b815167ffffffffffffffff80821115612c8b57600080fd5b9083019060c08286031215612c9f57600080fd5b612ca7612b0c565b825182811115612cb657600080fd5b612cc287828601612b8a565b825250602083015182811115612cd757600080fd5b612ce387828601612b8a565b602083015250604083015182811115612cfb57600080fd5b612d0787828601612c02565b604083015250606083015182811115612d1f57600080fd5b612d2b87828601612c02565b606083015250608083015182811115612d4357600080fd5b612d4f87828601612c02565b60808301525060a083015182811115612d6757600080fd5b612d7387828601612c02565b60a08301525095945050505050565b60008060408385031215612d9557600080fd5b825167ffffffffffffffff80821115612dad57600080fd5b612db986838701612c02565b93506020850151915080821115612dcf57600080fd5b50612ddc85828601612c02565b9150509250929050565b60008060408385031215612df957600080fd5b825167ffffffffffffffff80821115612e1157600080fd5b612e1d86838701612b8a565b93506020850151915080821115612e3357600080fd5b50612ddc85828601612b8a565b8082018281126000831280158216821582161715612e6057612e606124f3565b505092915050565b81810360008312801583831316838312821617156104ee576104ee6124f3565b600080600060608486031215612e9d57600080fd5b835167ffffffffffffffff80821115612eb557600080fd5b612ec187838801612b8a565b94506020860151915080821115612ed757600080fd5b50612ee486828701612c02565b925050604084015190509250925092565b60008251612f078184602087016123eb565b9190910192915050565b60ff8181168382160190811115610723576107236124f3565b60ff8281168282160390811115610723576107236124f356fea2646970667358221220118b035d8a5c9d48dc9ff25f26afa0459675a54ac39d220e40e34d3237279f2a64736f6c63430008160033000000000000000000000000000000000000000000000000000000000000001e