0 txs
1 call
constructor
constructor((uint256 _priceDuration, uint256 _maxPriceUpdateDelay, uint256 _minBlockInterval, uint256 _maxDeviationBasisPoints, address _fastPriceEvents, address _tokenManager, address _positionRouter) params)
functions
BASIS_POINTS_DIVISOR
viewfunction BASIS_POINTS_DIVISOR() view returns (uint256)
BITMASK_32
viewfunction BITMASK_32() view returns (uint256)
CUMULATIVE_DELTA_PRECISION
viewfunction CUMULATIVE_DELTA_PRECISION() view returns (uint256)
disableFastPriceVoteCount
viewfunction disableFastPriceVoteCount() view returns (uint256)
disableFastPriceVotes
viewfunction disableFastPriceVotes(address) view returns (bool)
fastPriceEvents
viewfunction fastPriceEvents() view returns (address)
favorFastPrice
viewfunction favorFastPrice(address _token) view returns (bool)
getPrice
viewfunction getPrice(address _token, uint256 _refPrice, bool _maximise) view returns (uint256)
getPriceData
viewfunction getPriceData(address _token) view returns (uint256, uint256, uint256, uint256)
gov
viewfunction gov() view returns (address)
isSigner
viewfunction isSigner(address) view returns (bool)
isSpreadEnabled
viewfunction isSpreadEnabled() view returns (bool)
isUpdater
viewfunction isUpdater(address) view returns (bool)
lastUpdatedAt
viewfunction lastUpdatedAt() view returns (uint256)
lastUpdatedBlock
viewfunction lastUpdatedBlock() view returns (uint256)
MAX_CUMULATIVE_FAST_DELTA
viewfunction MAX_CUMULATIVE_FAST_DELTA() view returns (uint256)
MAX_CUMULATIVE_REF_DELTA
viewfunction MAX_CUMULATIVE_REF_DELTA() view returns (uint256)
MAX_PRICE_DURATION
viewfunction MAX_PRICE_DURATION() view returns (uint256)
MAX_REF_PRICE
viewfunction MAX_REF_PRICE() view returns (uint256)
maxCumulativeDeltaDiffs
viewfunction maxCumulativeDeltaDiffs(address) view returns (uint256)
maxDeviationBasisPoints
viewfunction maxDeviationBasisPoints() view returns (uint256)
maxPriceUpdateDelay
viewfunction maxPriceUpdateDelay() view returns (uint256)
maxTimeDeviation
viewfunction maxTimeDeviation() view returns (uint256)
minAuthorizations
viewfunction minAuthorizations() view returns (uint256)
minBlockInterval
viewfunction minBlockInterval() view returns (uint256)
positionRouter
viewfunction positionRouter() view returns (address)
PRICE_PRECISION
viewfunction PRICE_PRECISION() view returns (uint256)
priceData
viewfunction priceData(address) view returns (uint160 refPrice, uint32 refTime, uint32 cumulativeRefDelta, uint32 cumulativeFastDelta)
priceDataInterval
viewfunction priceDataInterval() view returns (uint256)
priceDuration
viewfunction priceDuration() view returns (uint256)
prices
viewfunction prices(address) view returns (uint256)
spreadBasisPointsIfChainError
viewfunction spreadBasisPointsIfChainError() view returns (uint256)
spreadBasisPointsIfInactive
viewfunction spreadBasisPointsIfInactive() view returns (uint256)
tokenManager
viewfunction tokenManager() view returns (address)
tokenPrecisions
viewfunction tokenPrecisions(uint256) view returns (uint256)
tokens
viewfunction tokens(uint256) view returns (address)
vaultPriceFeed
viewfunction vaultPriceFeed() view returns (address)
disableFastPrice
nonpayablefunction disableFastPrice()
enableFastPrice
nonpayablefunction enableFastPrice()
initialize
nonpayablefunction initialize(uint256 _minAuthorizations, address[] _signers, address[] _updaters)
setCompactedPrices
nonpayablefunction setCompactedPrices(uint256[] _priceBitArray, uint256 _timestamp)
setFastPriceEvents
nonpayablefunction setFastPriceEvents(address _fastPriceEvents)
setGov
nonpayablefunction setGov(address _gov)
setIsSpreadEnabled
nonpayablefunction setIsSpreadEnabled(bool _isSpreadEnabled)
setLastUpdatedAt
nonpayablefunction setLastUpdatedAt(uint256 _lastUpdatedAt)
setMaxCumulativeDeltaDiffs
nonpayablefunction setMaxCumulativeDeltaDiffs(address[] _tokens, uint256[] _maxCumulativeDeltaDiffs)
setMaxDeviationBasisPoints
nonpayablefunction setMaxDeviationBasisPoints(uint256 _maxDeviationBasisPoints)
setMaxPriceUpdateDelay
nonpayablefunction setMaxPriceUpdateDelay(uint256 _maxPriceUpdateDelay)
setMaxTimeDeviation
nonpayablefunction setMaxTimeDeviation(uint256 _maxTimeDeviation)
setMinAuthorizations
nonpayablefunction setMinAuthorizations(uint256 _minAuthorizations)
setMinBlockInterval
nonpayablefunction setMinBlockInterval(uint256 _minBlockInterval)
setPriceDataInterval
nonpayablefunction setPriceDataInterval(uint256 _priceDataInterval)
setPriceDuration
nonpayablefunction setPriceDuration(uint256 _priceDuration)
setPrices
nonpayablefunction setPrices(address[] _tokens, uint256[] _prices, uint256 _timestamp)
setPricesWithBits
nonpayablefunction setPricesWithBits(uint256[10] _priceBits, uint256 _timestamp)
setPricesWithBitsAndExecute
nonpayablefunction setPricesWithBitsAndExecute(uint256[10] _priceBits, uint256 _timestamp, uint256 _endIndexForIncreasePositions, uint256 _endIndexForDecreasePositions, uint256 _maxIncreasePositions, uint256 _maxDecreasePositions)
setSigner
nonpayablefunction setSigner(address _account, bool _isActive)
setSpreadBasisPointsIfChainError
nonpayablefunction setSpreadBasisPointsIfChainError(uint256 _spreadBasisPointsIfChainError)
setSpreadBasisPointsIfInactive
nonpayablefunction setSpreadBasisPointsIfInactive(uint256 _spreadBasisPointsIfInactive)
setTokenManager
nonpayablefunction setTokenManager(address _tokenManager)
setTokens
nonpayablefunction setTokens(address[] _tokens, uint256[] _tokenPrecisions)
setUpdater
nonpayablefunction setUpdater(address _account, bool _isActive)
setVaultPriceFeed
nonpayablefunction setVaultPriceFeed(address _vaultPriceFeed)
events
DisableFastPrice
event DisableFastPrice(address signer)
EnableFastPrice
event EnableFastPrice(address signer)
MaxCumulativeDeltaDiffExceeded
event MaxCumulativeDeltaDiffExceeded(address token, uint256 refPrice, uint256 fastPrice, uint256 cumulativeRefDelta, uint256 cumulativeFastDelta)
PriceData
event PriceData(address token, uint256 refPrice, uint256 fastPrice, uint256 cumulativeRefDelta, uint256 cumulativeFastDelta)
errors
No errors.
creation bytecode
0x60806040526000805460ff60a01b191681556010553480156200002157600080fd5b50604051620028f6380380620028f6833981016040819052620000449162000146565b600080546001600160a01b0319163317905580516107081015620000bc5760405162461bcd60e51b815260206004820152602560248201527f466173745072696365466565643a20696e76616c6964205f707269636544757260448201526430ba34b7b760d91b606482015260840160405180910390fd5b805160075560208101516008556040810151600b556060810151600e556080810151600280546001600160a01b03199081166001600160a01b039384161790915560a083015160038054831691841691909117905560c090920151600480549093169116179055620001f1565b80516001600160a01b03811681146200014157600080fd5b919050565b600060e082840312156200015957600080fd5b60405160e081016001600160401b03811182821017156200018a57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151604082015260608301516060820152620001bf6080840162000129565b6080820152620001d260a0840162000129565b60a0820152620001e560c0840162000129565b60c08201529392505050565b6126f580620002016000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c806374bfed89116101ff578063b70c7b701161011a578063d6a153f1116100ad578063e64559ad1161007c578063e64559ad1461087f578063e68a22c014610888578063eeaa783a14610896578063f90ce5ba146108a957600080fd5b8063d6a153f11461083d578063d925351a14610850578063de0d1b9414610863578063dfb481c91461087657600080fd5b8063ce19991f116100e9578063ce19991f146107e4578063ce98dfa8146107f7578063cfad57a21461080a578063cfed246b1461081d57600080fd5b8063b70c7b7014610733578063c8390a4814610746578063c84a912414610759578063cab44b761461076157600080fd5b806382553aad11610192578063a374242511610161578063a3742425146106f8578063a6eca89614610718578063b0a2566614610721578063b3606b561461072a57600080fd5b806382553aad146106b45780638b7677f4146106c757806395082d25146106da578063a2b47c16146106ee57600080fd5b80637df73e27116101ce5780637df73e271461066b5780637fbc79c61461068e5780637fece368146106a1578063807c97821461042e57600080fd5b806374bfed8914610629578063776d16c114610632578063782661bc146106455780637cb2b79c1461065857600080fd5b80633aa08f86116102ef57806361cec6b1116102825780636c56fd05116102515780636c56fd05146105d25780636ccd47c4146105e5578063715c7536146105ed57806372279ba1146105f657600080fd5b806361cec6b11461058f57806361ef161f146105a2578063668d3d65146105b5578063695d4184146105be57600080fd5b80634d11fb4a116102be5780634d11fb4a1461053d5780634f64b2be146105505780634fdfb0861461056357806354aea1271461058657600080fd5b80633aa08f861461050e57806344c23193146105175780634bd66c1c1461042e5780634c0e31c81461052a57600080fd5b806314dd2dce11610367578063287800c911610336578063287800c9146104cc5780632a709b14146104d55780632e9cd94b146104e857806331cb6105146104fb57600080fd5b806314dd2dce14610480578063162ac4e0146104935780631a153391146104a6578063238aafb7146104b957600080fd5b80630604ddea116103a35780630604ddea1461042e5780630e9272ea14610439578063126082cf1461046457806312d43a511461046d57600080fd5b806303b04936146103ca57806303cd25711461040257806303f4d7dc14610419575b600080fd5b6103ed6103d8366004612154565b60166020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61040b60075481565b6040519081526020016103f9565b61042c610427366004612245565b6108b2565b005b61040b63ffffffff81565b60025461044c906001600160a01b031681565b6040516001600160a01b0390911681526020016103f9565b61040b61271081565b60005461044c906001600160a01b031681565b61042c61048e36600461228a565b610a69565b61042c6104a1366004612154565b610a98565b61042c6104b43660046122b3565b610ae4565b61042c6104c7366004612154565b610b39565b61040b600f5481565b60035461044c906001600160a01b031681565b61042c6104f636600461228a565b610b85565b61042c6105093660046122b3565b610bb4565b61040b600c5481565b61042c61052536600461228a565b610c09565b61042c610538366004612348565b610c98565b61040b61054b36600461228a565b610d36565b61044c61055e36600461228a565b610d57565b6103ed610571366004612154565b60116020526000908152604090205460ff1681565b61040b60055481565b61042c61059d3660046123be565b610d81565b60045461044c906001600160a01b031681565b61040b61070881565b6000546103ed90600160a01b900460ff1681565b6103ed6105e0366004612154565b610f63565b61042c610feb565b61040b600e5481565b610609610604366004612154565b6110d7565b6040805194855260208501939093529183015260608201526080016103f9565b61040b60095481565b61042c61064036600461228a565b611141565b61042c61065336600461240f565b611170565b61042c610666366004612154565b611231565b6103ed610679366004612154565b60156020526000908152604090205460ff1681565b61042c61069c36600461247c565b61127d565b61040b6106af3660046124e9565b61136f565b61042c6106c236600461228a565b6114f5565b61042c6106d536600461228a565b611524565b61040b6c0c9f2c9cd04674edea4000000081565b61040b6298968081565b61040b610706366004612154565b60146020526000908152604090205481565b61040b600a5481565b61040b60105481565b61040b600b5481565b61042c61074136600461228a565b611553565b61042c610754366004612348565b611582565b61042c611624565b6107ae61076f366004612154565b6013602052600090815260409020546001600160a01b0381169063ffffffff600160a01b8204811691600160c01b8104821691600160e01b9091041684565b604080516001600160a01b03909516855263ffffffff9384166020860152918316918401919091521660608201526080016103f9565b61042c6107f2366004612525565b61170f565b61042c610805366004612552565b611748565b61042c610818366004612154565b611790565b61040b61082b366004612154565b60126020526000908152604090205481565b61042c61084b36600461228a565b6117dc565b61042c61085e36600461228a565b61180b565b61042c61087136600461228a565b61183a565b61040b600d5481565b61040b60085481565b61040b6001600160a01b0381565b60015461044c906001600160a01b031681565b61040b60065481565b3360009081526011602052604090205460ff166108ea5760405162461bcd60e51b81526004016108e19061256d565b60405180910390fd5b60006108f582611869565b90508015610a63576002546001546001600160a01b03918216911660005b8551811015610a5f576000868281518110610930576109306125a4565b6020026020010151905060005b6008811015610a4a576000816109548560086125d0565b61095e91906125ef565b601754909150811061097557505050505050505050565b60006109828360206125d0565b905083811c63ffffffff16600060178561099d8960086125d0565b6109a791906125ef565b815481106109b7576109b76125a4565b60009182526020822001546001600160a01b031691506018866109db8a60086125d0565b6109e591906125ef565b815481106109f5576109f56125a4565b60009182526020822001549150610a2382610a1d866c0c9f2c9cd04674edea400000006119ec565b90611a01565b9050610a3183828c8e611a0d565b5050505050508080610a4290612607565b91505061093d565b50508080610a5790612607565b915050610913565b5050505b505b5050565b6000546001600160a01b03163314610a935760405162461bcd60e51b81526004016108e190612622565b600555565b6000546001600160a01b03163314610ac25760405162461bcd60e51b81526004016108e190612622565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b81526004016108e190612622565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b635760405162461bcd60e51b81526004016108e190612622565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108e19061256d565b600d55565b6000546001600160a01b03163314610bde5760405162461bcd60e51b81526004016108e190612622565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c335760405162461bcd60e51b81526004016108e190612622565b610708811115610c935760405162461bcd60e51b815260206004820152602560248201527f466173745072696365466565643a20696e76616c6964205f707269636544757260448201526430ba34b7b760d91b60648201526084016108e1565b600755565b6003546001600160a01b03163314610cc25760405162461bcd60e51b81526004016108e19061256d565b60005b8251811015610a63576000838281518110610ce257610ce26125a4565b60200260200101519050828281518110610cfe57610cfe6125a4565b6020908102919091018101516001600160a01b0390921660009081526014909152604090205580610d2e81612607565b915050610cc5565b60188181548110610d4657600080fd5b600091825260209091200154905081565b60178181548110610d6757600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526011602052604090205460ff16610db05760405162461bcd60e51b81526004016108e19061256d565b610dba8686611c97565b60048054604080516304dabc3160e51b815290516001600160a01b0390921692600092610e379287928692639b578620928083019260209291829003018189875af1158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e319190612651565b90611e38565b90506000610e7f84846001600160a01b0316639b5786206040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e0d573d6000803e3d6000fd5b905081871115610e8d578196505b80861115610e99578095505b604051629a208160e81b8152600481018890523360248201526001600160a01b03841690639a20810090604401600060405180830381600087803b158015610ee057600080fd5b505af1158015610ef4573d6000803e3d6000fd5b505060405163f3883d8b60e01b8152600481018990523360248201526001600160a01b038616925063f3883d8b9150604401600060405180830381600087803b158015610f4057600080fd5b505af1158015610f54573d6000803e3d6000fd5b50505050505050505050505050565b60008054600160a01b900460ff1615610f7e57506000919050565b600f5460105410610f9157506000919050565b600080610f9d846110d7565b9350935050508181118015610fd257506001600160a01b038416600090815260146020526040902054610fd08284611e44565b115b15610fe1575060009392505050565b5060019392505050565b3360009081526015602052604090205460ff1661101a5760405162461bcd60e51b81526004016108e19061256d565b3360009081526016602052604090205460ff166110795760405162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c6564000060448201526064016108e1565b336000908152601660205260409020805460ff1916905560105461109e906001611e44565b6010556040513381527f9fe0c305c33aa92757a537936872a60be0d91549a4303cc99fd8b7fce8a00275906020015b60405180910390a1565b6001600160a01b039081166000908152601360209081526040918290208251608081018452905493841680825263ffffffff600160a01b86048116938301849052600160c01b86048116948301859052600160e01b90950490941660609091018190529293909290565b6000546001600160a01b0316331461116b5760405162461bcd60e51b81526004016108e190612622565b600c55565b3360009081526011602052604090205460ff1661119f5760405162461bcd60e51b81526004016108e19061256d565b60006111aa82611869565b9050801561122b576002546001546001600160a01b03918216911660005b86518110156112275760008782815181106111e5576111e56125a4565b6020026020010151905061121481888481518110611205576112056125a4565b60200260200101518587611a0d565b508061121f81612607565b9150506111c8565b5050505b50505050565b6003546001600160a01b0316331461125b5760405162461bcd60e51b81526004016108e19061256d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112a75760405162461bcd60e51b81526004016108e190612622565b600f83905560005b825181101561130d5760008382815181106112cc576112cc6125a4565b6020908102919091018101516001600160a01b03166000908152601590915260409020805460ff19166001179055508061130581612607565b9150506112af565b5060005b815181101561122b57600082828151811061132e5761132e6125a4565b6020908102919091018101516001600160a01b03166000908152601190915260409020805460ff19166001179055508061136781612607565b915050611311565b6000611388600854600554611e3890919063ffffffff16565b4211156113e35781156113c3576113bc612710610a1d6113b5600a54612710611e3890919063ffffffff16565b86906119ec565b90506114ee565b6113bc612710610a1d6113b5600a54612710611e4490919063ffffffff16565b6007546005546113f291611e38565b42111561143f57811561141f576113bc612710610a1d6113b5600954612710611e3890919063ffffffff16565b6113bc612710610a1d6113b5600954612710611e4490919063ffffffff16565b6001600160a01b0384166000908152601260205260409020548061146657839150506114ee565b600081851161147e576114798286611e44565b611488565b6114888583611e44565b905061149a85610a1d836127106119ec565b905060006114a787610f63565b15806114b45750600e5482115b905080156114e85784156114db578286116114cf57826114d1565b855b93505050506114ee565b8286106114cf57826114d1565b50909150505b9392505050565b6003546001600160a01b0316331461151f5760405162461bcd60e51b81526004016108e19061256d565b600e55565b6000546001600160a01b0316331461154e5760405162461bcd60e51b81526004016108e190612622565b600855565b6000546001600160a01b0316331461157d5760405162461bcd60e51b81526004016108e190612622565b600955565b6000546001600160a01b031633146115ac5760405162461bcd60e51b81526004016108e190612622565b80518251146115fd5760405162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e67746873000060448201526064016108e1565b8151611610906017906020850190612083565b508051610a639060189060208401906120e8565b3360009081526015602052604090205460ff166116535760405162461bcd60e51b81526004016108e19061256d565b3360009081526016602052604090205460ff16156116b35760405162461bcd60e51b815260206004820152601c60248201527f466173745072696365466565643a20616c726561647920766f7465640000000060448201526064016108e1565b336000908152601660205260409020805460ff191660019081179091556010546116dc91611e38565b6010556040513381527f4c0c5fabf50e808e3bc8d19577d305e3a7163eea7e8a74a50caa8896694cd44b906020016110cd565b3360009081526011602052604090205460ff1661173e5760405162461bcd60e51b81526004016108e19061256d565b610a658282611c97565b6000546001600160a01b031633146117725760405162461bcd60e51b81526004016108e190612622565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146117ba5760405162461bcd60e51b81526004016108e190612622565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118065760405162461bcd60e51b81526004016108e190612622565b600b55565b6003546001600160a01b031633146118355760405162461bcd60e51b81526004016108e19061256d565b600f55565b6000546001600160a01b031633146118645760405162461bcd60e51b81526004016108e190612622565b600a55565b600b54600090156118ea57600b54600654611885904390611e44565b10156118ea5760405162461bcd60e51b815260206004820152602e60248201527f466173745072696365466565643a206d696e426c6f636b496e74657276616c2060448201526d1b9bdd081e595d081c185cdcd95960921b60648201526084016108e1565b600c546118f74282611e44565b831161195b5760405162461bcd60e51b815260206004820152602d60248201527f466173745072696365466565643a205f74696d657374616d702062656c6f772060448201526c616c6c6f7765642072616e676560981b60648201526084016108e1565b6119654282611e38565b83106119cb5760405162461bcd60e51b815260206004820152602f60248201527f466173745072696365466565643a205f74696d657374616d702065786365656460448201526e7320616c6c6f7765642072616e676560881b60648201526084016108e1565b6005548310156119de5750600092915050565b505060055543600655600190565b60006119f882846125d0565b90505b92915050565b60006119f88284612680565b6001600160a01b03821615611c71576040516315afe77960e21b81526001600160a01b038581166004830152600091908416906356bf9de490602401602060405180830381865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a9190612651565b6001600160a01b038616600090815260126020526040812054919250808080611ab28a6110d7565b93509350935093506000841115611b79576000848711611adb57611ad68588611e44565b611ae5565b611ae58786611e44565b905060008a8711611aff57611afa8b88611e44565b611b09565b611b09878c611e44565b9050611b20600d5442611a0190919063ffffffff16565b600d54611b2e908790611a01565b14611b3c5760009350600092505b611b57611b5087610a1d85629896806119ec565b8590611e38565b9350611b74611b6d88610a1d84629896806119ec565b8490611e38565b925050505b8181118015611ba857506001600160a01b038a16600090815260146020526040902054611ba68284611e44565b115b15611c0657604080516001600160a01b038c1681526020810188905290810186905260608101839052608081018290527fe582322b389ad06b2bbf619cd6da3f16a288ec873ea0fa6df4d72f3d9480b4479060a00160405180910390a15b611c128a878484611e50565b604080516001600160a01b038c1681526020810188905290810186905260608101839052608081018290527f23b9387f81fca646aac1dc4487ede045c65f5f7445482906565f01e05afdb3a89060a00160405180910390a15050505050505b6001600160a01b038416600090815260126020526040902083905561122b818585612012565b6000611ca282611869565b90508015610a63576002546001546001600160a01b03918216911660005b600a811015610a5f5760005b6007811015611e2557600081611ce38460076125d0565b611ced91906125ef565b90506000611cfc600783612694565b6017549091508210611d1357505050505050505050565b6000611d208260206125d0565b9050600063ffffffff828c88600a8110611d3c57611d3c6125a4565b6020020135901c16905080611d935760405162461bcd60e51b815260206004820152601c60248201527f466173745072696365466565643a20696e76616c69642070726963650000000060448201526064016108e1565b600060178581548110611da857611da86125a4565b6000918252602082200154601880546001600160a01b0390921693509087908110611dd557611dd56125a4565b60009182526020822001549150611dfd82610a1d866c0c9f2c9cd04674edea400000006119ec565b9050611e0b83828c8e611a0d565b505050505050508080611e1d90612607565b915050611ccc565b5080611e3081612607565b915050611cc0565b60006119f882846125ef565b60006119f882846126a8565b6001600160a01b038310611ea65760405162461bcd60e51b815260206004820152601f60248201527f466173745072696365466565643a20696e76616c69642072656650726963650060448201526064016108e1565b63ffffffff8210611f0b5760405162461bcd60e51b815260206004820152602960248201527f466173745072696365466565643a20696e76616c69642063756d756c617469766044820152686552656644656c746160b81b60648201526084016108e1565b63ffffffff8110611f715760405162461bcd60e51b815260206004820152602a60248201527f466173745072696365466565643a20696e76616c69642063756d756c61746976604482015269654661737444656c746160b01b60648201526084016108e1565b604080516080810182526001600160a01b03948516815263ffffffff4281166020808401918252958216838501908152948216606084019081529787166000908152601390965292909420905181549251935196518516600160e01b026001600160e01b03978616600160c01b02979097166001600160c01b0394909516600160a01b026001600160c01b0319909316951694909417171617919091179055565b6001600160a01b03831661202557505050565b60405163e0409c7160e01b81526001600160a01b0383811660048301526024820183905284169063e0409c7190604401600060405180830381600087803b15801561206f57600080fd5b505af1158015611227573d6000803e3d6000fd5b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906120a3565b506120e4929150612123565b5090565b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d8578251825591602001919060010190612108565b5b808211156120e45760008155600101612124565b80356001600160a01b038116811461214f57600080fd5b919050565b60006020828403121561216657600080fd5b6119f882612138565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121ae576121ae61216f565b604052919050565b600067ffffffffffffffff8211156121d0576121d061216f565b5060051b60200190565b600082601f8301126121eb57600080fd5b813560206122006121fb836121b6565b612185565b82815260059290921b8401810191818101908684111561221f57600080fd5b8286015b8481101561223a5780358352918301918301612223565b509695505050505050565b6000806040838503121561225857600080fd5b823567ffffffffffffffff81111561226f57600080fd5b61227b858286016121da565b95602094909401359450505050565b60006020828403121561229c57600080fd5b5035919050565b8035801515811461214f57600080fd5b600080604083850312156122c657600080fd5b6122cf83612138565b91506122dd602084016122a3565b90509250929050565b600082601f8301126122f757600080fd5b813560206123076121fb836121b6565b82815260059290921b8401810191818101908684111561232657600080fd5b8286015b8481101561223a5761233b81612138565b835291830191830161232a565b6000806040838503121561235b57600080fd5b823567ffffffffffffffff8082111561237357600080fd5b61237f868387016122e6565b9350602085013591508082111561239557600080fd5b506123a2858286016121da565b9150509250929050565b8061014081018310156119fb57600080fd5b6000806000806000806101e087890312156123d857600080fd5b6123e288886123ac565b9861014088013598506101608801359761018081013597506101a081013596506101c00135945092505050565b60008060006060848603121561242457600080fd5b833567ffffffffffffffff8082111561243c57600080fd5b612448878388016122e6565b9450602086013591508082111561245e57600080fd5b5061246b868287016121da565b925050604084013590509250925092565b60008060006060848603121561249157600080fd5b83359250602084013567ffffffffffffffff808211156124b057600080fd5b6124bc878388016122e6565b935060408601359150808211156124d257600080fd5b506124df868287016122e6565b9150509250925092565b6000806000606084860312156124fe57600080fd5b61250784612138565b92506020840135915061251c604085016122a3565b90509250925092565b600080610160838503121561253957600080fd5b61254384846123ac565b94610140939093013593505050565b60006020828403121561256457600080fd5b6119f8826122a3565b60208082526018908201527f466173745072696365466565643a20666f7262696464656e0000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156125ea576125ea6125ba565b500290565b60008219821115612602576126026125ba565b500190565b600060001982141561261b5761261b6125ba565b5060010190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b60006020828403121561266357600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261268f5761268f61266a565b500490565b6000826126a3576126a361266a565b500690565b6000828210156126ba576126ba6125ba565b50039056fea26469706673582212203dc2fe2ba47d84e62689bed15db0b796c37e488c61b45a10540e9f41a5aaff3764736f6c634300080c0033000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000008bdf36bc9ed0a96576206e92360f2f3006b430540000000000000000000000005ab623509f7f6fa60746e4b0b6466af51105a39e000000000000000000000000065f9746b33f303c6481549bac42a3885903fa44