0 txs
0 calls
constructor
constructor(address wnative)
functions
getDefaultOperator
viewfunction getDefaultOperator() view returns (address)
getFeeRecipient
viewfunction getFeeRecipient() view returns (address)
getNumberOfStrategies
viewfunction getNumberOfStrategies(uint8 sType) view returns (uint256)
getNumberOfVaults
viewfunction getNumberOfVaults(uint8 vType) view returns (uint256)
getStrategyAt
viewfunction getStrategyAt(uint8 sType, uint256 index) view returns (address)
getStrategyImplementation
viewfunction getStrategyImplementation(uint8 sType) view returns (address)
getStrategyType
viewfunction getStrategyType(address strategy) view returns (uint8)
getVaultAt
viewfunction getVaultAt(uint8 vType, uint256 index) view returns (address)
getVaultImplementation
viewfunction getVaultImplementation(uint8 vType) view returns (address)
getVaultType
viewfunction getVaultType(address vault) view returns (uint8)
getWNative
viewfunction getWNative() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addToWhitelist
nonpayablefunction addToWhitelist(address vault, address[] addresses)
batchRedeemQueuedWithdrawals
nonpayablefunction batchRedeemQueuedWithdrawals(address[] vaults, uint256[] rounds, bool[] withdrawNative)
createDefaultStrategy
nonpayablefunction createDefaultStrategy(address vault) returns (address strategy)
createOracleVault
nonpayablefunction createOracleVault(address lbPair, address dataFeedX, address dataFeedY) returns (address vault)
createOracleVaultAndDefaultStrategy
nonpayablefunction createOracleVaultAndDefaultStrategy(address lbPair, address dataFeedX, address dataFeedY) returns (address vault, address strategy)
createSimpleVault
nonpayablefunction createSimpleVault(address lbPair) returns (address vault)
createSimpleVaultAndDefaultStrategy
nonpayablefunction createSimpleVaultAndDefaultStrategy(address lbPair) returns (address vault, address strategy)
initialize
nonpayablefunction initialize(address owner)
linkVaultToStrategy
nonpayablefunction linkVaultToStrategy(address vault, address strategy)
pauseDeposits
nonpayablefunction pauseDeposits(address vault)
recoverERC20
nonpayablefunction recoverERC20(address vault, address token, address recipient, uint256 amount)
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address vault, address[] addresses)
renounceOwnership
nonpayablefunction renounceOwnership()
resetPendingAumAnnualFee
nonpayablefunction resetPendingAumAnnualFee(address vault)
resumeDeposits
nonpayablefunction resumeDeposits(address vault)
setDefaultOperator
nonpayablefunction setDefaultOperator(address defaultOperator)
setEmergencyMode
nonpayablefunction setEmergencyMode(address vault)
setFeeRecipient
nonpayablefunction setFeeRecipient(address feeRecipient)
setOperator
nonpayablefunction setOperator(address strategy, address operator)
setPendingAumAnnualFee
nonpayablefunction setPendingAumAnnualFee(address vault, uint16 pendingAumAnnualFee)
setStrategyImplementation
nonpayablefunction setStrategyImplementation(uint8 sType, address strategyImplementation)
setVaultImplementation
nonpayablefunction setVaultImplementation(uint8 vType, address vaultImplementation)
setWhitelistState
nonpayablefunction setWhitelistState(address vault, bool isWhitelisted)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DefaultOperatorSet
event DefaultOperatorSet(address indexed sender, address indexed defaultOperator)
FeeRecipientSet
event FeeRecipientSet(address indexed sender, address indexed feeRecipient)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
StrategyCreated
event StrategyCreated(uint8 indexed sType, address indexed strategy, address indexed vault, address lbPair, uint256 strategyIndex)
StrategyImplementationSet
event StrategyImplementationSet(uint8 indexed sType, address indexed strategyImplementation)
VaultCreated
event VaultCreated(uint8 indexed vType, address indexed vault, address indexed lbPair, uint256 vaultIndex, address tokenX, address tokenY)
VaultImplementationSet
event VaultImplementationSet(uint8 indexed vType, address indexed vaultImplementation)
errors
VaultFactory__InvalidDecimals
error VaultFactory__InvalidDecimals()
VaultFactory__InvalidFeeRecipient
error VaultFactory__InvalidFeeRecipient()
VaultFactory__InvalidLength
error VaultFactory__InvalidLength()
VaultFactory__InvalidOraclePrice
error VaultFactory__InvalidOraclePrice()
VaultFactory__InvalidOwner
error VaultFactory__InvalidOwner()
VaultFactory__InvalidStrategy
error VaultFactory__InvalidStrategy()
VaultFactory__InvalidType
error VaultFactory__InvalidType()
VaultFactory__StrategyImplementationNotSet
error VaultFactory__StrategyImplementationNotSet(uint8 sType)
VaultFactory__VaultImplementationNotSet
error VaultFactory__VaultImplementationNotSet(uint8 vType)
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162002e7b38038062002e7b83398101604081905262000034916200017e565b6200003e620000bc565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801562000083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a99190620001b0565b506001600160a01b0316608052620001ca565b600054610100900460ff1615620001295760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200017c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200019157600080fd5b81516001600160a01b0381168114620001a957600080fd5b9392505050565b600060208284031215620001c357600080fd5b5051919050565b608051612c95620001e660003960006104210152612c956000f3fe608060405234801561001057600080fd5b50600436106102915760003560e01c806384b726cd11610160578063c509f29f116100d8578063f07826481161008c578063f2fde38b11610071578063f2fde38b146105bd578063fd577343146105d0578063ff46ab19146105e357600080fd5b8063f078264814610597578063f1ead126146105aa57600080fd5b8063e30c3978116100bd578063e30c397814610560578063e559afd914610571578063e74b981b1461058457600080fd5b8063c509f29f1461053a578063d2ea3e6f1461054d57600080fd5b8063ad3e080a1161012f578063b80ec4c711610114578063b80ec4c714610503578063c196982514610514578063c4d66de81461052757600080fd5b8063ad3e080a146104dd578063af00ec66146104f057600080fd5b806384b726cd146104935780638da5cb5b146104a6578063a06c215c146104b7578063a1f6277e146104ca57600080fd5b80635a0dc33f1161020e57806371594abb116101c257806373e82e31116101a757806373e82e31146104455780637420fc241461047857806379ba50971461048b57600080fd5b806371594abb1461040c578063719a08a31461041f57600080fd5b80635c3eebda116101f35780635c3eebda146103de5780636cbdc972146103f1578063715018a61461040457600080fd5b80635a0dc33f146103925780635b27437a146103cb57600080fd5b80632acff1151161026557806348ca58241161024a57806348ca58241461035b5780634c1adab11461036e5780634ccb20c01461038157600080fd5b80632acff11514610327578063422147711461033a57600080fd5b8062ebfdb4146102965780630a119622146102ab5780631f51fd93146102db57806327c71b5014610314575b600080fd5b6102a96102a436600461264a565b6105f6565b005b6102be6102b936600461264a565b610654565b6040516001600160a01b0390911681526020015b60405180910390f35b6103076102e936600461264a565b6001600160a01b031660009081526099602052604090205460ff1690565b6040516102d29190612684565b6102a961032236600461264a565b6107a7565b6102a961033536600461264a565b6107ea565b61034d6103483660046126ad565b61082d565b6040519081526020016102d2565b6102a96103693660046126c8565b61086d565b6102a961037c36600461274b565b610883565b609d546001600160a01b03166102be565b6103be6103a036600461264a565b6001600160a01b03166000908152609a602052604090205460ff1690565b6040516102d291906127e5565b6102be6103d93660046127f9565b610a9e565b6102a96103ec366004612823565b610b02565b6102a96103ff366004612884565b610b7a565b6102a9610be2565b6102be61041a36600461264a565b610bf6565b7f00000000000000000000000000000000000000000000000000000000000000006102be565b61045861045336600461264a565b610cdf565b604080516001600160a01b039384168152929091166020830152016102d2565b6104586104863660046128b9565b610de2565b6102a9610fd2565b6102be6104a1366004612913565b611065565b6033546001600160a01b03166102be565b6102be6104c536600461292e565b6110ae565b6102a96104d836600461264a565b6110d7565b6102a96104eb36600461294a565b61117b565b6102a96104fe36600461299f565b6111df565b609e546001600160a01b03166102be565b6102be6105223660046126ad565b61123d565b6102a961053536600461264a565b611266565b6102be6105483660046128b9565b6113c8565b6102a961055b3660046129bd565b6114b5565b6065546001600160a01b03166102be565b6102a961057f36600461294a565b611551565b6102a961059236600461264a565b611587565b6102a96105a53660046129f2565b611598565b6102a96105b836600461299f565b6115aa565b6102a96105cb36600461264a565b6115e0565b6102a96105de36600461264a565b611651565b61034d6105f1366004612913565b611662565b6105fe61168b565b806001600160a01b0316639ca0ac386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561063957600080fd5b505af115801561064d573d6000803e3d6000fd5b5050505050565b600061065e61168b565b6000826001600160a01b031663c1f1b1b56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c29190612a0e565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190612a0e565b90506000826001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190612a0e565b905061079c858484846116e5565b93505050505b919050565b6107af61168b565b806001600160a01b031663021919806040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561063957600080fd5b6107f261168b565b806001600160a01b031663085d0b836040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561063957600080fd5b6000609760008360028111156108455761084561266e565b60028111156108565761085661266e565b815260208101919091526040016000205492915050565b61087561168b565b61087f8282611745565b5050565b84831415806108925750848114155b156108b05760405163251a9ec960e21b815260040160405180910390fd5b60005b85811015610a95578282828181106108cd576108cd612a2b565b90506020020160208101906108e29190612a41565b156109bc578686828181106108f9576108f9612a2b565b905060200201602081019061090e919061264a565b6001600160a01b03166319fa7a1586868481811061092e5761092e612a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526020909102929092013560048301525033602482015260440160408051808303816000875af1158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b59190612a5c565b5050610a8d565b8686828181106109ce576109ce612a2b565b90506020020160208101906109e3919061264a565b6001600160a01b031663f33467d4868684818110610a0357610a03612a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526020909102929092013560048301525033602482015260440160408051808303816000875af1158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190612a5c565b50505b6001016108b3565b50505050505050565b600060976000846002811115610ab657610ab661266e565b6002811115610ac757610ac761266e565b81526020019081526020016000208281548110610ae657610ae6612a2b565b6000918252602090912001546001600160a01b03169392505050565b610b0a61168b565b604051631171bda960e01b81526001600160a01b038481166004830152838116602483015260448201839052851690631171bda990606401600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610b8261168b565b604051630ef85dc560e11b815281151560048201526001600160a01b03831690631df0bb8a906024015b600060405180830381600087803b158015610bc657600080fd5b505af1158015610bda573d6000803e3d6000fd5b505050505050565b610bea61168b565b610bf460006117d8565b565b6000610c0061168b565b6000826001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190612a0e565b90506000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cca9190612a0e565b9050610cd78483836117f1565b949350505050565b600080610cea61168b565b6000836001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e9190612a0e565b90506000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db49190612a0e565b9050610dc18583836117f1565b9350610dcf848684846116e5565b9250610ddb8484611955565b5050915091565b600080610ded61168b565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190612a80565b60ff16846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb49190612a80565b60ff1614610ed5576040516306b5647360e21b815260040160405180910390fd5b6000856001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f399190612a0e565b90506000866001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190612a0e565b9050610fae8783838989611983565b9350610fbc848884846116e5565b9250610fc88484611955565b5050935093915050565b60655433906001600160a01b031681146110595760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611062816117d8565b50565b6000609c600083600181111561107d5761107d61266e565b600181111561108e5761108e61266e565b81526020810191909152604001600020546001600160a01b031692915050565b6000609860008460018111156110c6576110c661266e565b6001811115610ac757610ac761266e565b6110df61168b565b806001600160a01b03166307da06036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111419190612a0e565b6001600160a01b0316637942fd476040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561063957600080fd5b61118361168b565b6040516315236c5d60e21b81526001600160a01b0384169063548db174906111b19085908590600401612aa3565b600060405180830381600087803b1580156111cb57600080fd5b505af1158015610a95573d6000803e3d6000fd5b6111e761168b565b6001600160a01b0381166000908152609a602052604081205460ff1660018111156112145761121461266e565b1415611233576040516324f0e93560e21b815260040160405180910390fd5b61087f8282611955565b6000609b60008360028111156112555761125561266e565b600281111561108e5761108e61266e565b600054610100900460ff16158080156112865750600054600160ff909116105b806112a05750303b1580156112a0575060005460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401611050565b6000805460ff191660011790558015611335576000805461ff0019166101001790555b6001600160a01b03821661135c57604051638320394d60e01b815260040160405180910390fd5b611364611b7d565b61136d826117d8565b61137682611bf0565b61137f82611c3b565b801561087f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006113d261168b565b6000846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114369190612a0e565b90506000856001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190612a0e565b90506114ab8683838888611983565b9695505050505050565b6114bd61168b565b816001600160a01b03166307da06036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151f9190612a0e565b60405163ddadbf8560e01b815261ffff831660048201526001600160a01b03919091169063ddadbf8590602401610bac565b61155961168b565b604051637f64978360e01b81526001600160a01b03841690637f649783906111b19085908590600401612aa3565b61158f61168b565b61106281611c3b565b6115a061168b565b61087f8282611cae565b6115b261168b565b60405163b3ab15fb60e01b81526001600160a01b03828116600483015283169063b3ab15fb90602401610bac565b6115e861168b565b606580546001600160a01b0383166001600160a01b031990911681179091556116196033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61165961168b565b61106281611bf0565b60006098600083600181111561167a5761167a61266e565b60018111156108565761085661266e565b6033546001600160a01b03163314610bf45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611050565b6040516bffffffffffffffffffffffff19606086811b8216602084015285811b8216603484015284811b8216604884015283901b16605c820152600090819060700160405160208183030381529060405290506114ab6001878784611d41565b80609b600084600281111561175c5761175c61266e565b600281111561176d5761176d61266e565b8152602081019190915260400160002080546001600160a01b0319166001600160a01b0392831617905581168260028111156117ab576117ab61266e565b6040517f1b31ea33ca3be99d1170294fb6309b6d2a332fb612bd1f17da223e2dd83e0c4190600090a35050565b606580546001600160a01b031916905561106281611faa565b600080836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118569190612a80565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc9190612a80565b6040516bffffffffffffffffffffffff19606089811b8216602084015288811b8216603484015287901b1660488201527fff0000000000000000000000000000000000000000000000000000000000000060f885811b8216605c84015283901b16605d820152909150600090605e01604051602081830303815290604052905061194a600188888885611ffc565b979650505050505050565b6040516319d0806560e11b81526001600160a01b0382811660048301528316906333a100ca90602401610bac565b600080856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e89190612a80565b90506000856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190612a80565b6040516bffffffffffffffffffffffff1960608b811b821660208401528a811b8216603484015289811b821660488401527fff0000000000000000000000000000000000000000000000000000000000000060f887811b8216605c86015285901b16605d84015288811b8216605e84015287901b1660728201529091506000906086016040516020818303038152906040529050611af060028a8a8a85611ffc565b9350836001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b549190612af1565b611b715760405163ed5ffd0760e01b815260040160405180910390fd5b50505095945050505050565b600054610100900460ff16611be85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611050565b610bf4612282565b609e80546001600160a01b0319166001600160a01b03831690811790915560405133907e4ce9d1085cd89b46b7df84d0efc22b826da4412ebb590684e4640967cd336290600090a350565b6001600160a01b038116611c625760405163576f71e760e01b815260040160405180910390fd5b609d80546001600160a01b0319166001600160a01b03831690811790915560405133907f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa7084015272190600090a350565b80609c6000846001811115611cc557611cc561266e565b6001811115611cd657611cd661266e565b8152602081019190915260400160002080546001600160a01b0319166001600160a01b039283161790558116826001811115611d1457611d1461266e565b6040517f45eaf19db36a965a668a70173c7406499b7702b1b2642fe2fa58c919f648f7bc90600090a35050565b6000846001811115611d5557611d5561266e565b60ff8116611d765760405163709d7c7560e01b815260040160405180910390fd5b6000609c6000886001811115611d8e57611d8e61266e565b6001811115611d9f57611d9f61266e565b81526020810191909152604001600020546001600160a01b0316905080611ddb57866040516302a3a35f60e51b815260040161105091906127e5565b600060986000896001811115611df357611df361266e565b6001811115611e0457611e0461266e565b815260200190815260200160002080549050905060008882604051602001611e2d929190612b0a565b604051602081830303815290604052805190602001209050611e508387836122f6565b9450609860008a6001811115611e6857611e6861266e565b6001811115611e7957611e7961266e565b8152602080820192909252604090810160009081208054600180820183559183528483200180546001600160a01b0319166001600160a01b038b169081179091558252609a9093522080548b9260ff19909116908381811115611ede57611ede61266e565b0217905550846001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f1e57600080fd5b505af1158015611f32573d6000803e3d6000fd5b50505050876001600160a01b0316856001600160a01b03168a6001811115611f5c57611f5c61266e565b604080516001600160a01b038c168152602081018790527f7f3ddd910e1c9340e31f34f1074d0c2cccc07cd667e361fac27cdaa08ae91c09910160405180910390a450505050949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008560028111156120105761201061266e565b60ff81166120315760405163709d7c7560e01b815260040160405180910390fd5b6000609b60008960028111156120495761204961266e565b600281111561205a5761205a61266e565b81526020810191909152604001600020546001600160a01b031690508061209657876040516316d2ed7160e01b81526004016110509190612684565b6000609760008a60028111156120ae576120ae61266e565b60028111156120bf576120bf61266e565b8152602001908152602001600020805490509050600089826040516020016120e8929190612b30565b60405160208183030381529060405280519060200120905061210b8387836122f6565b9450609760008b60028111156121235761212361266e565b60028111156121345761213461266e565b8152602080820192909252604090810160009081208054600180820183559183528483200180546001600160a01b0319166001600160a01b038b16908117909155825260999093522080548c9260ff199091169083600281111561219a5761219a61266e565b0217905550846001600160a01b0316634cd88b766121b88c856123b1565b6040518263ffffffff1660e01b81526004016121d49190612b72565b600060405180830381600087803b1580156121ee57600080fd5b505af1158015612202573d6000803e3d6000fd5b50505050886001600160a01b0316856001600160a01b03168b600281111561222c5761222c61266e565b604080518681526001600160a01b038d811660208301528c168183015290517f26798ef23bd7db8419fdda379cda53e0de5b8e1ffd114dd33e22b266deb974669181900360600190a45050505095945050505050565b600054610100900460ff166122ed5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401611050565b610bf4336117d8565b600060408303516020840351845180602087010180516002830161ffca8111156123285763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f5965050856123975763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60608060018460028111156123c8576123c861266e565b1415612408575060408051808201909152600681527f53696d706c6500000000000000000000000000000000000000000000000000006020820152612475565b600284600281111561241c5761241c61266e565b141561245c575060408051808201909152600681527f4f7261636c6500000000000000000000000000000000000000000000000000006020820152612475565b60405163709d7c7560e01b815260040160405180910390fd5b8061247f846124a8565b604051602001612490929190612bc8565b60405160208183030381529060405291505092915050565b606060006124b583612552565b600101905060008167ffffffffffffffff8111156124d5576124d5612c49565b6040519080825280601f01601f1916602001820160405280156124ff576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846125455761254a565b612509565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061259b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106125c7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106125e557662386f26fc10000830492506010015b6305f5e10083106125fd576305f5e100830492506008015b612710831061261157612710830492506004015b60648310612623576064830492506002015b600a831061262f576001015b92915050565b6001600160a01b038116811461106257600080fd5b60006020828403121561265c57600080fd5b813561266781612635565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106126985761269861266e565b91905290565b8035600381106107a257600080fd5b6000602082840312156126bf57600080fd5b6126678261269e565b600080604083850312156126db57600080fd5b6126e48361269e565b915060208301356126f481612635565b809150509250929050565b60008083601f84011261271157600080fd5b50813567ffffffffffffffff81111561272957600080fd5b6020830191508360208260051b850101111561274457600080fd5b9250929050565b6000806000806000806060878903121561276457600080fd5b863567ffffffffffffffff8082111561277c57600080fd5b6127888a838b016126ff565b909850965060208901359150808211156127a157600080fd5b6127ad8a838b016126ff565b909650945060408901359150808211156127c657600080fd5b506127d389828a016126ff565b979a9699509497509295939492505050565b60208101600283106126985761269861266e565b6000806040838503121561280c57600080fd5b6128158361269e565b946020939093013593505050565b6000806000806080858703121561283957600080fd5b843561284481612635565b9350602085013561285481612635565b9250604085013561286481612635565b9396929550929360600135925050565b803580151581146107a257600080fd5b6000806040838503121561289757600080fd5b82356128a281612635565b91506128b060208401612874565b90509250929050565b6000806000606084860312156128ce57600080fd5b83356128d981612635565b925060208401356128e981612635565b915060408401356128f981612635565b809150509250925092565b8035600281106107a257600080fd5b60006020828403121561292557600080fd5b61266782612904565b6000806040838503121561294157600080fd5b61281583612904565b60008060006040848603121561295f57600080fd5b833561296a81612635565b9250602084013567ffffffffffffffff81111561298657600080fd5b612992868287016126ff565b9497909650939450505050565b600080604083850312156129b257600080fd5b82356126e481612635565b600080604083850312156129d057600080fd5b82356129db81612635565b9150602083013561ffff811681146126f457600080fd5b60008060408385031215612a0557600080fd5b6126e483612904565b600060208284031215612a2057600080fd5b815161266781612635565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a5357600080fd5b61266782612874565b60008060408385031215612a6f57600080fd5b505080516020909101519092909150565b600060208284031215612a9257600080fd5b815160ff8116811461266757600080fd5b60208082528181018390526000908460408401835b86811015612ae6578235612acb81612635565b6001600160a01b031682529183019190830190600101612ab8565b509695505050505050565b600060208284031215612b0357600080fd5b5051919050565b600060028410612b1c57612b1c61266e565b5060f89290921b8252600182015260210190565b600060038410612b1c57612b1c61266e565b60005b83811015612b5d578181015183820152602001612b45565b83811115612b6c576000848401525b50505050565b6040815260008251806040840152612b91816060850160208701612b42565b601f19601f820116830190506060838203016020840152600360608201526210541560ea1b608082015260a0810191505092915050565b7f4175746f6d6174656420506f6f6c20546f6b656e202d20000000000000000000815260008351612c00816017850160208801612b42565b7f205661756c7420230000000000000000000000000000000000000000000000006017918401918201528351612c3d81601f840160208801612b42565b01601f01949350505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f331cf0b3c5ca07511e0db35f020ce7d80e5de20367d65ef422670d156a4824b64736f6c634300080a00330000000000000000000000004200000000000000000000000000000000000006