0 txs
22 calls
constructor
No constructor.
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStrategyInstance
viewfunction getStrategyInstance(address strategyAddress) view returns (tuple strategyInstance)
getStrategyInstanceCount
viewfunction getStrategyInstanceCount() view returns (uint256 count)
getStrategyType
viewfunction getStrategyType(address strategy) view returns (string description, bool active, address implementation, uint256 strategyCount)
getStrategyTypeById
viewfunction getStrategyTypeById(uint256 typeId) view returns (string description, bool active, address implementation, uint256 strategyCount)
getStrategyTypeCount
viewfunction getStrategyTypeCount() view returns (uint256 count)
getTypeStrategies
viewfunction getTypeStrategies(uint256 typeId) view returns (tuple[] typeStrategyInstances)
getTypeStrategyByIndex
viewfunction getTypeStrategyByIndex(uint256 typeId, uint256 index) view returns (tuple strategyInstance)
getTypeStrategyCount
viewfunction getTypeStrategyCount(uint256 typeId) view returns (uint256 count)
getVaultByIndex
viewfunction getVaultByIndex(uint256 index) view returns (address vault)
getVaultCount
viewfunction getVaultCount() view returns (uint256 count)
getVaultStrategies
viewfunction getVaultStrategies(address vaultAddress) view returns (tuple[] vaultStrategyInstances)
getVaultStrategyByIndex
viewfunction getVaultStrategyByIndex(address vaultAddress, uint256 index) view returns (tuple strategyInstance)
getVaultStrategyCount
viewfunction getVaultStrategyCount(address vaultAddress) view returns (uint256 count)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isStrategyEnabled
viewfunction isStrategyEnabled(address strategyAddress) view returns (bool isEnabled)
isStrategyInstance
viewfunction isStrategyInstance(address strategyAddress) view returns (bool isIndeed)
isStrategyType
viewfunction isStrategyType(uint256 typeId) view returns (bool isIndeed)
isVaultStrategy
viewfunction isVaultStrategy(address vaultAddress, address strategyAddress) view returns (bool isIndeed)
LEGACY_STRATEGY_REGISTRAR_ROLE
viewfunction LEGACY_STRATEGY_REGISTRAR_ROLE() view returns (bytes32)
STRATEGY_DEPLOYER_ROLE
viewfunction STRATEGY_DEPLOYER_ROLE() view returns (bytes32)
STRATEGY_ENABLE_SETTER_ROLE
viewfunction STRATEGY_ENABLE_SETTER_ROLE() view returns (bytes32)
STRATEGY_TYPE_ACTIVE_SETTER_ROLE
viewfunction STRATEGY_TYPE_ACTIVE_SETTER_ROLE() view returns (bytes32)
STRATEGY_TYPE_REGISTRAR_ROLE
viewfunction STRATEGY_TYPE_REGISTRAR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
deployStrategyInstance
nonpayablefunction deployStrategyInstance(uint256 typeId, address owner, address vault, address vaultFactory, bytes initData) returns (address strategyInstance)
disableStrategyType
nonpayablefunction disableStrategyType(uint256 typeId)
enableStrategyType
nonpayablefunction enableStrategyType(uint256 typeId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize()
markStrategyDisabled
nonpayablefunction markStrategyDisabled(address strategyAddress)
markStrategyEnabled
nonpayablefunction markStrategyEnabled(address strategyAddress)
registerLegacyStrategy
nonpayablefunction registerLegacyStrategy(uint256 typeId, address strategyInstance, address vault, address vaultFactory)
registerStrategyType
nonpayablefunction registerStrategyType(address implementation, string description, bool deployable)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
events
Initialized
event Initialized(uint8 version)
LegacyStrategyRegistered
event LegacyStrategyRegistered(uint256 indexed typeId, address indexed strategyInstance, address indexed vault)
RebalancerFactoryInitialized
event RebalancerFactoryInitialized()
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
StrategyDisabled
event StrategyDisabled(address indexed strategyInstance)
StrategyEnabled
event StrategyEnabled(address indexed strategyInstance)
StrategyInstanceDeployed
event StrategyInstanceDeployed(uint256 indexed typeId, address indexed strategyInstance, address indexed owner, address vault, bytes initData)
StrategyTypeDisabled
event StrategyTypeDisabled(uint256 indexed typeId)
StrategyTypeEnabled
event StrategyTypeEnabled(uint256 indexed typeId)
StrategyTypeRegistered
event StrategyTypeRegistered(uint256 indexed typeId, address indexed implementation, bool indexed deployable, string description)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50612edd806100206000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806367a6282811610130578063a2f0c426116100b8578063d2dfd87a1161007c578063d2dfd87a14610519578063d547741f1461052c578063da2a6f771461053f578063e2488f7114610547578063ea49ba971461055a57600080fd5b8063a2f0c426146104a6578063aa7dfecd146104b9578063b007e0a2146104cc578063b2900c60146104df578063c59ab9cb146104f257600080fd5b80638af25a95116100ff5780638af25a951461043a5780638c3d60901461044d57806391d1485414610478578063929039b11461048b578063a217fddf1461049e57600080fd5b806367a628281461040257806374d4e491146104155780637c72528b1461041d5780638129fc1c1461043257600080fd5b806336568abe116101b35780634b8ac7c2116101825780634b8ac7c2146103935780634ce8b647146103a657806352da4169146103b957806359c8f9b7146103cc5780635a0dc33f146103df57600080fd5b806336568abe14610350578063367bbce514610363578063462804801461036b578063477c21751461037e57600080fd5b80631958bbe8116101fa5780631958bbe8146102a95780632062c72f146102cc578063248a9ca3146102f35780632f2ff15d1461031657806333d5af101461032957600080fd5b806301ffc9a71461022c5780630f59cd8814610254578063115aeaae1461027457806314e3c62014610289575b600080fd5b61023f61023a366004612782565b61056d565b60405190151581526020015b60405180910390f35b6102676102623660046127ac565b6105a4565b60405161024b91906127c5565b610287610282366004612859565b61077f565b005b61029c610297366004612859565b610856565b60405161024b9190612876565b6102be600080516020612eb183398151915281565b60405190815260200161024b565b6102be7f066dd98915fadcac50ac86aad5edc16bb5c5fbef11d30a9e3491c0bc45d4202e81565b6102be6103013660046127ac565b60009081526065602052604090206001015490565b6102876103243660046128b4565b61093c565b6102be7f29020f1e23f0f50ab8ba0b8bffec7064fd7cf78d6682eb0e09be39c5bb12e2f881565b61028761035e3660046128b4565b610966565b6102be6109e4565b6102876103793660046128e4565b6109f5565b6102be600080516020612e9183398151915281565b6102876103a1366004612980565b610d17565b61029c6103b43660046129e2565b610ee7565b6102876103c73660046127ac565b611079565b6102676103da366004612859565b61115a565b6103f26103ed366004612859565b611314565b60405161024b9493929190612a54565b610287610410366004612859565b6113af565b6102be611481565b61023f61042b3660046127ac565b6097541190565b61028761148d565b6102876104483660046127ac565b611680565b61046061045b3660046127ac565b611800565b6040516001600160a01b03909116815260200161024b565b61023f6104863660046128b4565b611873565b61023f610499366004612859565b61189e565b6102be600081565b6102be6104b43660046127ac565b6118ab565b6103f26104c73660046127ac565b611929565b6102be6104da366004612859565b611a79565b61023f6104ed366004612a8c565b611b04565b6102be7f235397475b64dee1932be0f179772472a58fe9889cd97c7305e829a0bed7515881565b61029c610527366004612aba565b611b91565b61028761053a3660046128b4565b611cd9565b6097546102be565b610460610555366004612ae6565b611cfe565b61023f610568366004612859565b61213e565b60006001600160e01b03198216637965db0b60e01b148061059e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606105b1826097541190565b61060e5760405162461bcd60e51b815260206004820152602360248201527f52463a67657454797065537472617465676965733a496e76616c69642074797060448201526219525960ea1b60648201526084015b60405180910390fd5b61063a6097838154811061062457610624612b6b565b90600052602060002090600502016003016121d0565b67ffffffffffffffff81111561065257610652612b81565b6040519080825280602002602001820160405280156106a457816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816106705790505b50905060005b81518110156107795760006106eb82609786815481106106cc576106cc612b6b565b90600052602060002090600502016003016121da90919063ffffffff16565b6001600160a01b038181166000908152609d602090815260409182902082516080810184528154815260018201548516928101929092526002015492831691810191909152600160a01b90910460ff161515606082015284519192509084908490811061075a5761075a612b6b565b602002602001018190525050808061077190612bad565b9150506106aa565b50919050565b600080516020612eb1833981519152610797816121e6565b6107a2609b836121f0565b6108005760405162461bcd60e51b815260206004820152602960248201527f52463a6d61726b5374726174656779456e61626c65643a5374726174656779206044820152681b9bdd08199bdd5b9960ba1b6064820152608401610605565b6001600160a01b0382166000818152609d6020526040808220600201805460ff60a01b1916600160a01b179055517fa6434bc2d6b34a56c06d20a8631c14f0e7204ed0664719aa112bf7db556c06ab9190a25050565b6040805160808101825260008082526020820181905291810182905260608101919091526108838261189e565b6108e15760405162461bcd60e51b815260206004820152602960248201527f52463a6765745374726174656779496e7374616e63653a7374726174656779206044820152681b9bdd08199bdd5b9960ba1b6064820152608401610605565b506001600160a01b039081166000908152609d602090815260409182902082516080810184528154815260018201548516928101929092526002015492831691810191909152600160a01b90910460ff161515606082015290565b600082815260656020526040902060010154610957816121e6565b6109618383612212565b505050565b6001600160a01b03811633146109d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610605565b6109e08282612298565b5050565b60006109f0609b6121d0565b905090565b7f235397475b64dee1932be0f179772472a58fe9889cd97c7305e829a0bed75158610a1f816121e6565b610a2a856097541190565b610a875760405162461bcd60e51b815260206004820152602860248201527f52463a72656769737465724c656761637953747261746567793a496e76616c6960448201526719081d1e5c19525960c21b6064820152608401610605565b6001600160a01b038416610b035760405162461bcd60e51b815260206004820152603a60248201527f52463a72656769737465724c656761637953747261746567793a73747261746560448201527f677920696e7374616e63652063616e6e6f74206265206e756c6c0000000000006064820152608401610605565b6001600160a01b038316610b6f5760405162461bcd60e51b815260206004820152602d60248201527f52463a72656769737465724c656761637953747261746567793a7661756c742060448201526c18d85b9bdd081899481b9d5b1b609a1b6064820152608401610605565b6001600160a01b038216610be35760405162461bcd60e51b815260206004820152603560248201527f52463a72656769737465724c656761637953747261746567793a7661756c74466044820152741858dd1bdc9e4818d85b9b9bdd081899481b9d5b1b605a1b6064820152608401610605565b816001600160a01b0316836001600160a01b031663dd81fa636040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190612bc6565b6001600160a01b031614610cc45760405162461bcd60e51b815260206004820152603660248201527f52463a72656769737465724c656761637953747261746567793a7661756c74206044820152750c2dcc840ccc2c6e8dee4f240daeae6e840dac2e8c6d60531b6064820152608401610605565b610ccf8585856122ff565b826001600160a01b0316846001600160a01b0316867f0dadcd948cbcd16ebf1e209818c9cac1534e367be3e5089a59131b4e222d931660405160405180910390a45050505050565b7f29020f1e23f0f50ab8ba0b8bffec7064fd7cf78d6682eb0e09be39c5bb12e2f8610d41816121e6565b811580610d5657506001600160a01b03851615155b610dc05760405162461bcd60e51b815260206004820152603560248201527f52463a72656769737465725374726174656779547970653a696d706c656d656e6044820152741d185d1a5bdb8818d85b9b9bdd081899481b9d5b1b605a1b6064820152608401610605565b82610e265760405162461bcd60e51b815260206004820152603060248201527f52463a72656769737465725374726174656779547970653a646573637269707460448201526f696f6e2063616e6e6f7420656d70747960801b6064820152608401610605565b6097805460018101808355600083815291929083908110610e4957610e49612b6b565b6000918252602090912060059091020180546001600160a01b0319166001600160a01b038916178155905060018101610e83868883612c65565b5060028101805460ff19168515159081179091556040516001600160a01b0389169084907fce464171b25bc459d83bf0dd2f75a53fb119182cc2110053637d16425c89799890610ed6908b908b90612d4e565b60405180910390a450505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152610f16836097541190565b610f755760405162461bcd60e51b815260206004820152602a60248201527f52463a6765745479706553747261746567794279496e6465783a747970654964604482015269081b9bdd08199bdd5b9960b21b6064820152608401610605565b600060978481548110610f8a57610f8a612b6b565b90600052602060002090600502019050610fa6816003016121d0565b83106110095760405162461bcd60e51b815260206004820152602c60248201527f52463a6765745479706553747261746567794279496e6465783a696e6465782060448201526b6f7574206f662072616e676560a01b6064820152608401610605565b609d600061101a60038401866121da565b6001600160a01b039081168252602080830193909352604091820160002082516080810184528154815260018201548316948101949094526002015490811691830191909152600160a01b900460ff1615156060820152949350505050565b600080516020612e91833981519152611091816121e6565b61109c826097541190565b6110f65760405162461bcd60e51b815260206004820152602560248201527f52463a64697361626c655374726174656779547970653a496e76616c696420746044820152641e5c19525960da1b6064820152608401610605565b60006097838154811061110b5761110b612b6b565b60009182526020822060059190910201600201805460ff19169215159290921790915560405183917feb41495d7074cc44c33dc7dfa77a485db85363e717a1bdb59fdddeb28bf900a191a25050565b60606111676098836121f0565b6111c15760405162461bcd60e51b815260206004820152602560248201527f52463a6765745661756c74537472617465676965733a7661756c74206e6f7420604482015264199bdd5b9960da1b6064820152608401610605565b6001600160a01b0382166000908152609a602052604081206111e2906121d0565b90508067ffffffffffffffff8111156111fd576111fd612b81565b60405190808252806020026020018201604052801561124f57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161121b5790505b50915060005b8181101561130d576001600160a01b0384166000908152609a6020526040812061127f90836121da565b6001600160a01b038181166000908152609d602090815260409182902082516080810184528154815260018201548516928101929092526002015492831691810191909152600160a01b90910460ff16151560608201528551919250908590849081106112ee576112ee612b6b565b602002602001018190525050808061130590612bad565b915050611255565b5050919050565b606060008060006113248561189e565b61137e5760405162461bcd60e51b815260206004820152602560248201527f52463a6765745374726174656779547970653a5374726174656779206e6f7420604482015264199bdd5b9960da1b6064820152608401610605565b6001600160a01b0385166000908152609d60205260409020546113a090611929565b93509350935093509193509193565b600080516020612eb18339815191526113c7816121e6565b6113d2609b836121f0565b6114315760405162461bcd60e51b815260206004820152602a60248201527f52463a6d61726b537472617465677944697361626c65643a5374726174656779604482015269081b9bdd08199bdd5b9960b21b6064820152608401610605565b6001600160a01b0382166000818152609d6020526040808220600201805460ff60a01b19169055517f23d1e43aa530f63e967ef5fb407e8e66bfbbdf41f853a173a9d3587c7bed4e459190a25050565b60006109f060986121d0565b600054610100900460ff16158080156114ad5750600054600160ff909116105b806114c75750303b1580156114c7575060005460ff166001145b61152a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610605565b6000805460ff19166001179055801561154d576000805461ff0019166101001790555b6115556123dc565b611560600033612449565b61158a7f29020f1e23f0f50ab8ba0b8bffec7064fd7cf78d6682eb0e09be39c5bb12e2f833612449565b6115b47f066dd98915fadcac50ac86aad5edc16bb5c5fbef11d30a9e3491c0bc45d4202e33612449565b6115de7f235397475b64dee1932be0f179772472a58fe9889cd97c7305e829a0bed7515833612449565b6115f6600080516020612e9183398151915233612449565b61160e600080516020612eb183398151915233612449565b6040517f5d9a840bbe799678920b5f41640e7cd10a817753c11622a4f354f2d9d7939eba90600090a1801561167d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612e91833981519152611698816121e6565b6116a3826097541190565b6116fb5760405162461bcd60e51b8152602060048201526024808201527f52463a656e61626c655374726174656779547970653a496e76616c69642074796044820152631c19525960e21b6064820152608401610605565b60006001600160a01b03166097838154811061171957611719612b6b565b60009182526020909120600590910201546001600160a01b03160361179c5760405162461bcd60e51b815260206004820152603360248201527f52463a656e61626c655374726174656779547970653a696d706c656d656e74616044820152721d1a5bdb8818d85b9b9bdd081899481b9d5b1b606a1b6064820152608401610605565b6001609783815481106117b1576117b1612b6b565b60009182526020822060059190910201600201805460ff19169215159290921790915560405183917ff49f595e470f78c881afbd5c3a7fd68567ff7b725e79b077cea0e3040fb9334a91a25050565b600061180c60986121d0565b82106118685760405162461bcd60e51b815260206004820152602560248201527f52463a6765745661756c744279496e6465783a696e646578206f7574206f662060448201526472616e676560d81b6064820152608401610605565b61059e6098836121da565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061059e609b836121f0565b60006118b8826097541190565b6119135760405162461bcd60e51b815260206004820152602660248201527f52463a676574547970655374726174656779436f756e743a496e76616c6964206044820152651d1e5c19525960d21b6064820152608401610605565b61059e6097838154811061062457610624612b6b565b6060600080600061193b856097541190565b6119975760405162461bcd60e51b815260206004820152602760248201527f52463a676574537472617465677954797065427949643a747970654964206e6f6044820152661d08199bdd5b9960ca1b6064820152608401610605565b6000609786815481106119ac576119ac612b6b565b906000526020600020906005020190508060010180546119cb90612be3565b80601f01602080910402602001604051908101604052809291908181526020018280546119f790612be3565b8015611a445780601f10611a1957610100808354040283529160200191611a44565b820191906000526020600020905b815481529060010190602001808311611a2757829003601f168201915b505050506002830154835492975060ff169550506001600160a01b03169250611a6f600382016121d0565b9150509193509193565b6000611a866098836121f0565b611ae35760405162461bcd60e51b815260206004820152602860248201527f52463a6765745661756c745374726174656779436f756e743a7661756c74206e6044820152671bdd08199bdd5b9960c21b6064820152608401610605565b6001600160a01b0382166000908152609a6020526040902061059e906121d0565b6000611b116098846121f0565b611b685760405162461bcd60e51b815260206004820152602260248201527f52463a69735661756c7453747261746567793a7661756c74206e6f7420666f756044820152611b9960f21b6064820152608401610605565b6001600160a01b0383166000908152609a60205260409020611b8a90836121f0565b9392505050565b604080516080810182526000808252602082018190529181018290526060810191909152611bc06098846121f0565b611c1f5760405162461bcd60e51b815260206004820152602a60248201527f52463a6765745661756c7453747261746567794279496e6465783a7661756c74604482015269081b9bdd08199bdd5b9960b21b6064820152608401610605565b6001600160a01b0383166000908152609a60205260409020611c40906121d0565b8210611ca45760405162461bcd60e51b815260206004820152602d60248201527f52463a6765745661756c7453747261746567794279496e6465783a696e64657860448201526c206f7574206f662072616e676560981b6064820152608401610605565b6001600160a01b0383166000908152609a60205260408120611cc690846121da565b9050611cd181610856565b949350505050565b600082815260656020526040902060010154611cf4816121e6565b6109618383612298565b60007f066dd98915fadcac50ac86aad5edc16bb5c5fbef11d30a9e3491c0bc45d4202e611d2a816121e6565b611d35886097541190565b611d925760405162461bcd60e51b815260206004820152602860248201527f52463a6465706c6f795374726174656779496e7374616e63653a496e76616c6960448201526719081d1e5c19525960c21b6064820152608401610605565b6001600160a01b038716611dff5760405162461bcd60e51b815260206004820152602e60248201527f52463a6465706c6f795374726174656779496e7374616e63653a6f776e65722060448201526d18d85b9b9bdd081899481b9d5b1b60921b6064820152608401610605565b6001600160a01b038616611e6c5760405162461bcd60e51b815260206004820152602e60248201527f52463a6465706c6f795374726174656779496e7374616e63653a7661756c742060448201526d18d85b9b9bdd081899481b9d5b1b60921b6064820152608401610605565b6001600160a01b038516611ee05760405162461bcd60e51b815260206004820152603560248201527f52463a6465706c6f795374726174656779496e7374616e63653a7661756c74466044820152741858dd1bdc9e4818d85b9b9bdd081899481b9d5b1b605a1b6064820152608401610605565b846001600160a01b0316866001600160a01b031663dd81fa636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4c9190612bc6565b6001600160a01b031614611fc15760405162461bcd60e51b815260206004820152603660248201527f52463a6465706c6f795374726174656779496e7374616e63653a7661756c74206044820152750c2dcc840ccc2c6e8dee4f240daeae6e840dac2e8c6d60531b6064820152608401610605565b600060978981548110611fd657611fd6612b6b565b60009182526020909120600590910201600281015490915060ff1661205c5760405162461bcd60e51b815260206004820152603660248201527f52463a6465706c6f795374726174656779496e7374616e63653a53747261746560448201527567792074797065206e6f74206465706c6f7961626c6560501b6064820152608401610605565b8054612070906001600160a01b0316612453565b60405163cf7a1d7760e01b81529093506001600160a01b0384169063cf7a1d77906120a5908a908c908a908a90600401612d62565b600060405180830381600087803b1580156120bf57600080fd5b505af11580156120d3573d6000803e3d6000fd5b505050506120e28984896122ff565b876001600160a01b0316836001600160a01b03168a7f2dbe20259a7214dac203f14ae9c51d640a9dff5099f6cb8fec19cc43401fd6c68a898960405161212a93929190612d99565b60405180910390a450509695505050505050565b600061214b609b836121f0565b6121a75760405162461bcd60e51b815260206004820152602760248201527f52463a69735374726174656779456e61626c65643a7374726174656779206e6f6044820152661d08199bdd5b9960ca1b6064820152608401610605565b506001600160a01b03166000908152609d6020526040902060020154600160a01b900460ff1690565b600061059e825490565b6000611b8a83836124ed565b61167d8133612517565b6001600160a01b03811660009081526001830160205260408120541515611b8a565b61221c8282611873565b6109e05760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556122543390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6122a28282611873565b156109e05760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006097848154811061231457612314612b6b565b906000526020600020906005020190506123388260986121f090919063ffffffff16565b61234957612347609883612570565b505b612354609b84612570565b506001600160a01b038084166000818152609d602052604090208681556001810180546001600160a01b03191690921790915560020180546001600160a81b03191691841691909117600160a01b1790556123b26003820184612570565b506001600160a01b0382166000908152609a602052604090206123d59084612570565b5050505050565b600054610100900460ff166124475760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610605565b565b6109e08282612212565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166124e85760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610605565b919050565b600082600001828154811061250457612504612b6b565b9060005260206000200154905092915050565b6125218282611873565b6109e05761252e81612585565b612539836020612597565b60405160200161254a929190612dc7565b60408051601f198184030181529082905262461bcd60e51b825261060591600401612e3c565b6000611b8a836001600160a01b038416612733565b606061059e6001600160a01b03831660145b606060006125a6836002612e4f565b6125b1906002612e66565b67ffffffffffffffff8111156125c9576125c9612b81565b6040519080825280601f01601f1916602001820160405280156125f3576020820181803683370190505b509050600360fc1b8160008151811061260e5761260e612b6b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061263d5761263d612b6b565b60200101906001600160f81b031916908160001a9053506000612661846002612e4f565b61266c906001612e66565b90505b60018111156126e4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106126a0576126a0612b6b565b1a60f81b8282815181106126b6576126b6612b6b565b60200101906001600160f81b031916908160001a90535060049490941c936126dd81612e79565b905061266f565b508315611b8a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610605565b600081815260018301602052604081205461277a5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059e565b50600061059e565b60006020828403121561279457600080fd5b81356001600160e01b031981168114611b8a57600080fd5b6000602082840312156127be57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561283857612825838551805182526020808201516001600160a01b0390811691840191909152604080830151909116908301526060908101511515910152565b92840192608092909201916001016127e1565b50909695505050505050565b6001600160a01b038116811461167d57600080fd5b60006020828403121561286b57600080fd5b8135611b8a81612844565b815181526020808301516001600160a01b0390811691830191909152604080840151909116908201526060808301511515908201526080810161059e565b600080604083850312156128c757600080fd5b8235915060208301356128d981612844565b809150509250929050565b600080600080608085870312156128fa57600080fd5b84359350602085013561290c81612844565b9250604085013561291c81612844565b9150606085013561292c81612844565b939692955090935050565b60008083601f84011261294957600080fd5b50813567ffffffffffffffff81111561296157600080fd5b60208301915083602082850101111561297957600080fd5b9250929050565b6000806000806060858703121561299657600080fd5b84356129a181612844565b9350602085013567ffffffffffffffff8111156129bd57600080fd5b6129c987828801612937565b9094509250506040850135801515811461292c57600080fd5b600080604083850312156129f557600080fd5b50508035926020909101359150565b60005b83811015612a1f578181015183820152602001612a07565b50506000910152565b60008151808452612a40816020860160208601612a04565b601f01601f19169290920160200192915050565b608081526000612a676080830187612a28565b9415156020830152506001600160a01b03929092166040830152606090910152919050565b60008060408385031215612a9f57600080fd5b8235612aaa81612844565b915060208301356128d981612844565b60008060408385031215612acd57600080fd5b8235612ad881612844565b946020939093013593505050565b60008060008060008060a08789031215612aff57600080fd5b863595506020870135612b1181612844565b94506040870135612b2181612844565b93506060870135612b3181612844565b9250608087013567ffffffffffffffff811115612b4d57600080fd5b612b5989828a01612937565b979a9699509497509295939492505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bbf57612bbf612b97565b5060010190565b600060208284031215612bd857600080fd5b8151611b8a81612844565b600181811c90821680612bf757607f821691505b60208210810361077957634e487b7160e01b600052602260045260246000fd5b601f82111561096157600081815260208120601f850160051c81016020861015612c3e5750805b601f850160051c820191505b81811015612c5d57828155600101612c4a565b505050505050565b67ffffffffffffffff831115612c7d57612c7d612b81565b612c9183612c8b8354612be3565b83612c17565b6000601f841160018114612cc55760008515612cad5750838201355b600019600387901b1c1916600186901b1783556123d5565b600083815260209020601f19861690835b82811015612cf65786850135825560209485019460019092019101612cd6565b5086821015612d135760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611cd1602083018486612d25565b6001600160a01b03858116825284166020820152606060408201819052600090612d8f9083018486612d25565b9695505050505050565b6001600160a01b0384168152604060208201819052600090612dbe9083018486612d25565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612dff816017850160208801612a04565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612e30816028840160208801612a04565b01602801949350505050565b602081526000611b8a6020830184612a28565b808202811582820484141761059e5761059e612b97565b8082018082111561059e5761059e612b97565b600081612e8857612e88612b97565b50600019019056fe50ca5f36e447a7662aa0d37cc5573d1bf3f840877a4c2b456659a652581b26735a42b4823d10a87c9cb88395d54e8fd0ef3963af3434927c432feda6a75f5170a164736f6c6343000811000a