0 txs
3 calls
constructor
constructor()
functions
getPortfolioList
viewfunction getPortfolioList(uint256 portfoliofundId) view returns (address)
gnosisFallbackLibrary
viewfunction gnosisFallbackLibrary() view returns (address)
gnosisMultisendLibrary
viewfunction gnosisMultisendLibrary() view returns (address)
gnosisSafeProxyFactory
viewfunction gnosisSafeProxyFactory() view returns (address)
gnosisSingleton
viewfunction gnosisSingleton() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
portfolioId
viewfunction portfolioId() view returns (uint256)
PortfolioInfolList
viewfunction PortfolioInfolList(uint256) view returns (address portfolio, address tokenExclusionManager, address rebalancing, address owner, address assetManagementConfig, address feeModule, address vaultAddress, address gnosisModule)
protocolConfig
viewfunction protocolConfig() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
whitelistedPortfolioAddress
viewfunction whitelistedPortfolioAddress(address) view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
createPortfolioCustodial
nonpayablefunction createPortfolioCustodial(tuple initData, address[] _owners, uint256 _threshold)
createPortfolioNonCustodial
nonpayablefunction createPortfolioNonCustodial(tuple initData)
initialize
nonpayablefunction initialize(tuple initData)
renounceOwnership
nonpayablefunction renounceOwnership()
setPortfolioCreationState
nonpayablefunction setPortfolioCreationState(bool _state)
setTokenRemovalVaultModule
nonpayablefunction setTokenRemovalVaultModule(address _newImpl)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferSuperAdminOwnership
nonpayablefunction transferSuperAdminOwnership(address _accessController, address _account)
updateGnosisAddresses
nonpayablefunction updateGnosisAddresses(address _newGnosisSingleton, address _newGnosisFallbackLibrary, address _newGnosisMultisendLibrary, address _newGnosisSafeProxyFactory)
upgradeAssetManagerConfig
nonpayablefunction upgradeAssetManagerConfig(address[] _proxy, address _newImpl)
upgradeFeeModule
nonpayablefunction upgradeFeeModule(address[] _proxy, address _newImpl)
upgradePortfolio
nonpayablefunction upgradePortfolio(address[] _proxy, address _newImpl)
upgradeRebalance
nonpayablefunction upgradeRebalance(address[] _proxy, address _newImpl)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
upgradeTokenExclusionManager
nonpayablefunction upgradeTokenExclusionManager(address[] _proxy, address _newImpl)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PortfolioCreationState
event PortfolioCreationState(bool indexed state)
PortfolioInfo
event PortfolioInfo((address portfolio, address tokenExclusionManager, address rebalancing, address owner, address assetManagementConfig, address feeModule, address vaultAddress, address gnosisModule) portfolioData, uint256 indexed portfolioId, string _name, string _symbol, address indexed _owner, address indexed _accessController, bool isPublicPortfolio)
TransferSuperAdminOwnership
event TransferSuperAdminOwnership(address indexed newOwner)
UpdataTokenRemovalVaultBaseAddress
event UpdataTokenRemovalVaultBaseAddress(address indexed newImplementation)
UpdateGnosisAddresses
event UpdateGnosisAddresses(address indexed newGnosisSingleton, address indexed newGnosisFallbackLibrary, address indexed newGnosisMultisendLibrary, address newGnosisSafeProxyFactory)
UpgradeAssetManagerConfig
event UpgradeAssetManagerConfig(address indexed newImplementation)
Upgraded
event Upgraded(address indexed implementation)
UpgradeFeeModule
event UpgradeFeeModule(address indexed newImplementation)
UpgradePortfolio
event UpgradePortfolio(address indexed newImplementation)
UpgradeRebalance
event UpgradeRebalance(address indexed newImplementation)
UpgradeTokenExclusionManager
event UpgradeTokenExclusionManager(address indexed newImplementation)
errors
CallerNotSuperAdmin
error CallerNotSuperAdmin()
InvalidAddress
error InvalidAddress()
InvalidThresholdLength
error InvalidThresholdLength()
ModuleNotInitialised
error ModuleNotInitialised()
NoOwnerPassed
error NoOwnerPassed()
PortfolioCreationIsPause
error PortfolioCreationIsPause()
ProtocolIsPaused
error ProtocolIsPaused()
ProtocolNotPaused
error ProtocolNotPaused()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051614cb46200011f60003960008181610794015281816107e001528181610c3e01528181610c810152610d740152614cb46000f3fe608060405260043610620001e75760003560e01c8063715018a6116200010b578063a1d603e511620000a1578063ee013718116200006c578063ee01371814620005da578063f0fa28b914620005ff578063f2fde38b1462000622578063f5efbb4f146200064757600080fd5b8063a1d603e5146200054b578063a595c2941462000570578063d2d1ca121462000595578063e30c397814620005ba57600080fd5b8063881e4ea411620000e2578063881e4ea414620004be5780638da5cb5b14620004e15780638f6b4394146200050157806395811573146200052657600080fd5b8063715018a61462000469578063728f8fb9146200048157806379ba509714620004a657600080fd5b8063490b7a7911620001815780635167554c11620001585780635167554c14620003df57806352d1902d1462000404578063556fbb38146200042b5780636fc4455e146200045057600080fd5b8063490b7a7914620003805780634d014f7f14620003a35780634f1ef28614620003c857600080fd5b806324987b3f11620001c257806324987b3f146200027857806335150a43146200029d5780633659cfe614620002e357806336c4e63c146200030857600080fd5b80630151ee6a14620001ec57806310ed1078146200021357806321d56a431462000238575b600080fd5b348015620001f957600080fd5b50620002116200020b36600462002ad4565b6200066a565b005b3480156200022057600080fd5b50620002116200023236600462002afb565b620006b6565b3480156200024557600080fd5b50610135546200025b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200028557600080fd5b50620002116200029736600462002ea3565b62000711565b348015620002aa57600080fd5b50620002d2620002bc36600462002ad4565b61013a6020526000908152604090205460ff1681565b60405190151581526020016200026f565b348015620002f057600080fd5b50620002116200030236600462002ad4565b6200078a565b3480156200031557600080fd5b506200032d6200032736600462002f17565b6200087e565b604080516001600160a01b03998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e0820152610100016200026f565b3480156200038d57600080fd5b50610138546200025b906001600160a01b031681565b348015620003b057600080fd5b5062000211620003c236600462002f31565b620008ef565b62000211620003d936600462003038565b62000c34565b348015620003ec57600080fd5b5062000211620003fe36600462002afb565b62000d0c565b3480156200041157600080fd5b506200041c62000d67565b6040519081526020016200026f565b3480156200043857600080fd5b50620002116200044a366004620030a3565b62000e1d565b3480156200045d57600080fd5b506200041c6101395481565b3480156200047657600080fd5b506200021162000e71565b3480156200048e57600080fd5b506200025b620004a036600462002f17565b62000e89565b348015620004b357600080fd5b506200021162000ec2565b348015620004cb57600080fd5b50610137546200025b906001600160a01b031681565b348015620004ee57600080fd5b506033546001600160a01b03166200025b565b3480156200050e57600080fd5b50620002116200052036600462002afb565b62000f3d565b3480156200053357600080fd5b50620002116200054536600462002afb565b62000f98565b3480156200055857600080fd5b50620002116200056a366004620030c3565b62000ff3565b3480156200057d57600080fd5b50620002116200058f366004620030fc565b62001073565b348015620005a257600080fd5b5062000211620005b436600462003161565b62001172565b348015620005c757600080fd5b506065546001600160a01b03166200025b565b348015620005e757600080fd5b5062000211620005f936600462002afb565b620012ff565b3480156200060c57600080fd5b50610136546200025b906001600160a01b031681565b3480156200062f57600080fd5b50620002116200064136600462002ad4565b6200135a565b3480156200065457600080fd5b50610134546200025b906001600160a01b031681565b62000674620013ce565b6200067f816200142a565b6040516001600160a01b038216907f05008503e4e20e615947d13836f1c754556c84f3f44ee0ff72fa804a166edb3c90600090a250565b620006c0620013ce565b620006cb816200144d565b620006d883838362001470565b6040516001600160a01b038216907fffaebf73f0a719d427366de34a3213dd510d06f0410b03c46f9fb9072ad152f790600090a2505050565b6200071b62001649565b81516000036200073e57604051631ac1fc8560e01b815260040160405180910390fd5b81518111806200074c575080155b156200076b5760405163f39a002560e01b815260040160405180910390fd5b6200077a8360018484620016a4565b620007856001609755565b505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620007de5760405162461bcd60e51b8152600401620007d5906200319f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200082960008051602062004c38833981519152546001600160a01b031690565b6001600160a01b031614620008525760405162461bcd60e51b8152600401620007d590620031eb565b6200085d816200219c565b604080516000808252602082019092526200087b91839190620021a6565b50565b61013b81815481106200089057600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b0396871698509486169693861695928316949183169390831692908116911688565b600054610100900460ff1615808015620009105750600054600160ff909116105b806200092c5750303b1580156200092c575060005460ff166001145b620009915760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620007d5565b6000805460ff191660011790558015620009b5576000805461ff0019166101001790555b620009bf6200231e565b620009c962002352565b620009d362002386565b81516001600160a01b03161580620009f6575060208201516001600160a01b0316155b8062000a0d575060408201516001600160a01b0316155b8062000a24575060608201516001600160a01b0316155b8062000a3b575060808201516001600160a01b0316155b8062000a52575060c08201516001600160a01b0316155b8062000a69575060e08201516001600160a01b0316155b8062000a8157506101008201516001600160a01b0316155b8062000a9957506101208201516001600160a01b0316155b8062000ab157506101408201516001600160a01b0316155b8062000ac957506101608201516001600160a01b0316155b8062000ae0575060a08201516001600160a01b0316155b1562000aff5760405163e6c4247b60e01b815260040160405180910390fd5b815162000b0c90620023b0565b62000b1b8260400151620023d3565b62000b2a8260200151620023f6565b62000b39826060015162002419565b62000b4882608001516200144d565b62000b578260a001516200142a565b60c082015161013280546001600160a01b03199081166001600160a01b03938416179091556101608401516101348054831691841691909117905560e084015161013580548316918416919091179055610100840151610136805483169184169190911790556101208401516101378054831691841691909117905561014084015161013880549092169216919091179055801562000c30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000c7f5760405162461bcd60e51b8152600401620007d5906200319f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000cca60008051602062004c38833981519152546001600160a01b031690565b6001600160a01b03161462000cf35760405162461bcd60e51b8152600401620007d590620031eb565b62000cfe826200219c565b62000c3082826001620021a6565b62000d16620013ce565b62000d218162002419565b62000d2e83838362001470565b6040516001600160a01b038216907f839d947d20e47eaa5d342bc56d9abc93f4d1280c93e4e2e8bfd0dee163b00a0d90600090a2505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000e095760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401620007d5565b5060008051602062004c3883398151915290565b62000e27620013ce565b610134805460ff60a01b1916600160a01b831515908102919091179091556040517f1901c6712ca0a0bee3970d67f3aab6d5bb149d201f4d9c329b04e50bb5704b5990600090a250565b62000e7b620013ce565b62000e8760006200243c565b565b600061013b828154811062000ea25762000ea262003237565b60009182526020909120600890910201546001600160a01b031692915050565b60655433906001600160a01b0316811462000f325760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401620007d5565b6200087b816200243c565b62000f47620013ce565b62000f5281620023f6565b62000f5f83838362001470565b6040516001600160a01b038216907f474835e1fceba544cfbcd95832cb29e7f75ff5e9deccaddd99849794e1c4fef190600090a2505050565b62000fa2620013ce565b62000fad81620023b0565b62000fba83838362001470565b6040516001600160a01b038216907fc1a641eea54ca78b6d8f103389a53c108ce94da502405e16f6efcdca8dc941a290600090a2505050565b62000ffd62001649565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811062001037576200103762003237565b60200260200101906001600160a01b031690816001600160a01b03168152505062001067826000836001620016a4565b506200087b6001609755565b6200107d620013ce565b6001600160a01b0384161515806200109d57506001600160a01b03831615155b80620010b157506001600160a01b03821615155b80620010c557506001600160a01b03811615155b15620010e45760405163e6c4247b60e01b815260040160405180910390fd5b61013580546001600160a01b03199081166001600160a01b038781169182179093556101368054831687851690811790915561013780548416878616908117909155610138805490941694861694851790935560405193845291927f3b54f80f809e7611fa499574f3ebd3eff761ff58a9744e9f85e3f68f6d89b5209060200160405180910390a450505050565b6001600160a01b03821615806200119057506001600160a01b038116155b15620011af5760405163e6c4247b60e01b815260040160405180910390fd5b604051632474521560e21b81527fd980155b32cf66e6af51e0972d64b9d5efe0e6f237dfaa4bdc83f990dd79e9c8600482018190523360248301529083906001600160a01b038216906391d1485490604401602060405180830381865afa1580156200121f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200124591906200324d565b620012625760405162469b1b60e21b815260040160405180910390fd5b604051636968e50960e11b81523360048201526001600160a01b03848116602483015282169063d2d1ca1290604401600060405180830381600087803b158015620012ac57600080fd5b505af1158015620012c1573d6000803e3d6000fd5b50506040516001600160a01b03861692507fc76e6bb67654793dfce1920f8f46b4b9c29d360d94273cb7d8e3181b52c444b69150600090a250505050565b62001309620013ce565b6200131481620023d3565b6200132183838362001470565b6040516001600160a01b038216907f7adef3769a9c31d2f203eeaacd137134939efae5eb1fb2ee894e25e2b3432c0790600090a2505050565b62001364620013ce565b606580546001600160a01b0383166001600160a01b03199091168117909155620013966033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b0316331462000e875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007d5565b61013380546001600160a01b0319166001600160a01b0392909216919091179055565b61013180546001600160a01b0319166001600160a01b0392909216919091179055565b6200147a620013ce565b61013460009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa158015620014cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014f591906200324d565b62001513576040516334c61a3f60e21b815260040160405180910390fd5b6001600160a01b0381166200153b5760405163e6c4247b60e01b815260040160405180910390fd5b8160005b81811015620016425760008585838181106200155f576200155f62003237565b905060200201602081019062001576919062002ad4565b90506001600160a01b038116620015a05760405163e6c4247b60e01b815260040160405180910390fd5b858583818110620015b557620015b562003237565b9050602002016020810190620015cc919062002ad4565b604051631b2ce7f360e11b81526001600160a01b0386811660048301529190911690633659cfe690602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b50505050508080620016399062003283565b9150506200153f565b5050505050565b6002609754036200169d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620007d5565b6002609755565b61013454600160a01b900460ff1615620016d15760405163cd0996c560e01b815260040160405180910390fd5b83516001600160a01b0316620016fa5760405163e6c4247b60e01b815260040160405180910390fd5b61013460009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177591906200324d565b156200179457604051632bc2c01360e21b815260040160405180910390fd5b61012e54604080516020810182526000808252915191926001600160a01b031691620017c09062002a95565b620017cd929190620032f3565b604051809103906000f080158015620017ea573d6000803e3d6000fd5b5061013154604080516020810182526000808252915193945090926001600160a01b03909216916200181c9062002a95565b62001829929190620032f3565b604051809103906000f08015801562001846573d6000803e3d6000fd5b5090506000604051620018599062002aa3565b604051809103906000f08015801562001876573d6000803e3d6000fd5b509050600061013060009054906101000a90046001600160a01b0316638b04138360e01b604051806101e001604052808b6040015181526020018b6060015181526020018b6080015181526020018b60a0015181526020018b60c0015181526020018b60e00151815260200161013460009054906101000a90046001600160a01b03166001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b031681526020018b600001516001600160a01b031681526020018b6020015181526020018b6101000151151581526020018b6101200151151581526020018b6101400151151581526020018b610160015115158152506040516024016200198691906200335f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051620019c59062002a95565b620019d2929190620032f3565b604051809103906000f080158015620019ef573d6000803e3d6000fd5b5061012d54604080516020810182526000808252915193945090926001600160a01b039092169162001a219062002a95565b62001a2e929190620032f3565b604051809103906000f08015801562001a4b573d6000803e3d6000fd5b506001600160a01b038116600090815261013a60205260408120805460ff19166001179055909150808962001ab657828960008151811062001a915762001a9162003237565b60200260200101906001600160a01b031690816001600160a01b031681525050600197505b6040805160e081018252610135546001600160a01b039081168252610138548116602083015261013754811692820192909252610136548216606082015261013254909116608082015260a081018a905260c0810189905262001b199062002457565b60408051610120810182526101808f015181526101a08f015160208201526001600160a01b038085168284015280841660608301528b8116608083015289811660a083015261013454811660c083015288811660e08301528a8116610100830152915163c147af5160e01b815293955091935085169163c147af519162001ba3916004016200348e565b600060405180830381600087803b15801562001bbe57600080fd5b505af115801562001bd3573d6000803e3d6000fd5b505050506101008b01516101808c01516101a08d0151610134546101335460405163184b955960e01b81526001600160a01b038b8116600483015292831660248201529082166044820152908b169063184b955990606401600060405180830381600087803b15801562001c4657600080fd5b505af115801562001c5b573d6000803e3d6000fd5b505061013754604080516001600160a01b038a811660208301528b81168284015292831660608083019190915282518083039091018152608082019283905263a4f9edbf60e01b909252918816935063a4f9edbf925062001cbf9160840162003577565b600060405180830381600087803b15801562001cda57600080fd5b505af115801562001cef573d6000803e3d6000fd5b505061012f54604080516001600160a01b038b811660248301528d811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663784d200b60e11b17905291516000955091909216925062001d579062002a95565b62001d64929190620032f3565b604051809103906000f08015801562001d81573d6000803e3d6000fd5b50905061013b604051806101000160405280896001600160a01b031681526020018d6001600160a01b03168152602001836001600160a01b03168152602001336001600160a01b031681526020018a6001600160a01b031681526020018c6001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b0316815250908060018154018082558091505060019003906000526020600020906008020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160060160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050886001600160a01b0316631d1c77f460405180608001604052808a6001600160a01b03168152602001336001600160a01b03168152602001846001600160a01b031681526020018d6001600160a01b03168152506040518263ffffffff1660e01b815260040162002043919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b600060405180830381600087803b1580156200205e57600080fd5b505af115801562002073573d6000803e3d6000fd5b5050610134546040516306552ff360e01b81526001600160a01b038b811660048301528c8116602483015291821660448201528c82166064820152908d1692506306552ff39150608401600060405180830381600087803b158015620020d857600080fd5b505af1158015620020ed573d6000803e3d6000fd5b50505050886001600160a01b0316336001600160a01b0316610139547f485e52c3dab18f093f91aa2fd2a28a15821274ec766dd31b2e959bf633022e8d61013b610139548154811062002144576200214462003237565b906000526020600020906008020187878a6040516200216794939291906200358c565b60405180910390a461013954620021809060016200365a565b61013955505050505050505050505050505050565b6001609755565b6200087b620013ce565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620021dc576200078583620026d2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562002239575060408051601f3d908101601f19168201909252620022369181019062003670565b60015b6200229e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620007d5565b60008051602062004c388339815191528114620023105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620007d5565b506200078583838362002771565b600054610100900460ff16620023485760405162461bcd60e51b8152600401620007d5906200368a565b62000e87620027a2565b600054610100900460ff166200237c5760405162461bcd60e51b8152600401620007d5906200368a565b62000e87620027d7565b600054610100900460ff1662000e875760405162461bcd60e51b8152600401620007d5906200368a565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b61012e80546001600160a01b0319166001600160a01b0392909216919091179055565b61013080546001600160a01b0319166001600160a01b0392909216919091179055565b606580546001600160a01b03191690556200087b8162002801565b6020808201518251604080519384018152600080855290516361b69abd60e01b8152909384939284926001600160a01b038516926361b69abd92620024a292909190600401620032f3565b6020604051808303816000875af1158015620024c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024e89190620036d5565b90506000620024fb866080015162002853565b6040516001600160a01b038216602482015290915060009060440160408051601f19818403018152918152602080830180516001600160e01b031663610b592560e01b17905282519151929350600092620025609284928892849291889101620036f5565b604051602081830303815290604052905060008160405160240162002586919062003577565b60408051601f198184030181529181526020820180516001600160e01b03166346c07f8560e11b17905260a08b015160c08c01518c83015160608e0151935163b63e800d60e01b81529495506001600160a01b038a169463b63e800d94620025fe94939291889190600090819081906004016200374d565b600060405180830381600087803b1580156200261957600080fd5b505af11580156200262e573d6000803e3d6000fd5b5050604051632d9ad53d60e01b81526001600160a01b038088166004830152979a50959850899689969088169250632d9ad53d9150602401602060405180830381865afa15801562002684573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026aa91906200324d565b620026c75760405162e85aaf60e21b815260040160405180910390fd5b505050505050915091565b6001600160a01b0381163b620027415760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620007d5565b60008051602062004c3883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6200277c83620028ef565b6000825111806200278a5750805b1562000785576200279c838362002931565b50505050565b600054610100900460ff16620027cc5760405162461bcd60e51b8152600401620007d5906200368a565b62000e87336200243c565b600054610100900460ff16620021955760405162461bcd60e51b8152600401620007d5906200368a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620028ea5760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401620007d5565b919050565b620028fa81620026d2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062002959838360405180606001604052806027815260200162004c586027913962002962565b90505b92915050565b6060600080856001600160a01b031685604051620029819190620037bc565b600060405180830381855af49150503d8060008114620029be576040519150601f19603f3d011682016040523d82523d6000602084013e620029c3565b606091505b5091509150620029d686838387620029e0565b9695505050505050565b6060831562002a5457825160000362002a4c576001600160a01b0385163b62002a4c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007d5565b508162002a60565b62002a60838362002a68565b949350505050565b81511562002a795781518083602001fd5b8060405162461bcd60e51b8152600401620007d5919062003577565b61072780620037db83390190565b610d368062003f0283390190565b6001600160a01b03811681146200087b57600080fd5b8035620028ea8162002ab1565b60006020828403121562002ae757600080fd5b813562002af48162002ab1565b9392505050565b60008060006040848603121562002b1157600080fd5b833567ffffffffffffffff8082111562002b2a57600080fd5b818601915086601f83011262002b3f57600080fd5b81358181111562002b4f57600080fd5b8760208260051b850101111562002b6557600080fd5b6020928301955093505084013562002b7d8162002ab1565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff8111828210171562002bc55762002bc562002b88565b60405290565b604051610180810167ffffffffffffffff8111828210171562002bc55762002bc562002b88565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002c1e5762002c1e62002b88565b604052919050565b600082601f83011262002c3857600080fd5b8135602067ffffffffffffffff82111562002c575762002c5762002b88565b8160051b62002c6882820162002bf2565b928352848101820192828101908785111562002c8357600080fd5b83870192505b8483101562002caf57823562002c9f8162002ab1565b8252918301919083019062002c89565b979650505050505050565b80151581146200087b57600080fd5b8035620028ea8162002cba565b600067ffffffffffffffff83111562002cf35762002cf362002b88565b62002d08601f8401601f191660200162002bf2565b905082815283838301111562002d1d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011262002d4657600080fd5b620029598383356020850162002cd6565b60006101c0828403121562002d6b57600080fd5b62002d7562002b9e565b905062002d828262002ac7565b8152602082013567ffffffffffffffff8082111562002da057600080fd5b62002dae8583860162002c26565b602084015260408401356040840152606084013560608401526080840135608084015260a084013560a084015260c084013560c084015260e084013560e0840152610100915062002e0182850162002cc9565b82840152610120915062002e1782850162002cc9565b82840152610140915062002e2d82850162002cc9565b82840152610160915062002e4382850162002cc9565b828401526101809150818401358181111562002e5e57600080fd5b62002e6c8682870162002d34565b83850152506101a09150818401358181111562002e8857600080fd5b62002e968682870162002d34565b8385015250505092915050565b60008060006060848603121562002eb957600080fd5b833567ffffffffffffffff8082111562002ed257600080fd5b62002ee08783880162002d57565b9450602086013591508082111562002ef757600080fd5b5062002f068682870162002c26565b925050604084013590509250925092565b60006020828403121562002f2a57600080fd5b5035919050565b6000610180828403121562002f4557600080fd5b62002f4f62002bcb565b62002f5a8362002ac7565b815262002f6a6020840162002ac7565b602082015262002f7d6040840162002ac7565b604082015262002f906060840162002ac7565b606082015262002fa36080840162002ac7565b608082015262002fb660a0840162002ac7565b60a082015262002fc960c0840162002ac7565b60c082015262002fdc60e0840162002ac7565b60e082015261010062002ff181850162002ac7565b908201526101206200300584820162002ac7565b908201526101406200301984820162002ac7565b908201526101606200302d84820162002ac7565b908201529392505050565b600080604083850312156200304c57600080fd5b8235620030598162002ab1565b9150602083013567ffffffffffffffff8111156200307657600080fd5b8301601f810185136200308857600080fd5b620030998582356020840162002cd6565b9150509250929050565b600060208284031215620030b657600080fd5b813562002af48162002cba565b600060208284031215620030d657600080fd5b813567ffffffffffffffff811115620030ee57600080fd5b62002a608482850162002d57565b600080600080608085870312156200311357600080fd5b8435620031208162002ab1565b93506020850135620031328162002ab1565b92506040850135620031448162002ab1565b91506060850135620031568162002ab1565b939692955090935050565b600080604083850312156200317557600080fd5b8235620031828162002ab1565b91506020830135620031948162002ab1565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200326057600080fd5b815162002af48162002cba565b634e487b7160e01b600052601160045260246000fd5b6000600182016200329857620032986200326d565b5060010190565b60005b83811015620032bc578181015183820152602001620032a2565b50506000910152565b60008151808452620032df8160208601602086016200329f565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009062002a6090830184620032c5565b600081518084526020808501945080840160005b83811015620033545781516001600160a01b0316875295820195908201906001016200332d565b509495945050505050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c0820152600060c0830151620033b960e08401826001600160a01b03169052565b5060e0830151610100620033d7818501836001600160a01b03169052565b8401519050610120620033f4848201836001600160a01b03169052565b840151905061014062003411848201836001600160a01b03169052565b808501519150506101e061016081818601526200343361020086018462003319565b908601519092506101806200344b8682018315159052565b86015190506101a0620034618682018315159052565b86015190506101c0620034778682018315159052565b8601518015158387015290505b5090949350505050565b6020815260008251610120806020850152620034af610140850183620032c5565b91506020850151601f19858403016040860152620034ce8382620032c5565b9250506040850151620034ec60608601826001600160a01b03169052565b5060608501516001600160a01b03811660808601525060808501516001600160a01b03811660a08601525060a08501516001600160a01b03811660c08601525060c08501516001600160a01b03811660e08601525060e08501516101006200355e818701836001600160a01b03169052565b8601516001600160a01b03811683870152905062003484565b602081526000620029596020830184620032c5565b6000610160620035b583620035a889546001600160a01b031690565b6001600160a01b03169052565b60018701546001600160a01b0390811660208501526002880154811660408501526003880154811660608501526004880154811660808501526005880154811660a08501526006880154811660c085015260078801541660e084015261010083018190526200362781840187620032c5565b90508281036101208401526200363e8186620032c5565b9150506200365161014083018415159052565b95945050505050565b808201808211156200295c576200295c6200326d565b6000602082840312156200368357600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215620036e857600080fd5b815162002af48162002ab1565b60ff60f81b8660f81b1681526bffffffffffffffffffffffff198560601b166001820152836015820152826035820152600082516200373c8160558501602087016200329f565b919091016055019695505050505050565b6000610100808352620037638184018c62003319565b602084018b90526001600160a01b038a81166040860152848203606086015290915062003791828a620032c5565b978116608085015295861660a0840152505060c081019290925290911660e090910152949350505050565b60008251620037d08184602087016200329f565b919091019291505056fe608060405260405161072738038061072783398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610700602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b6102bb806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203d912d0abbe116b83dfa1d3a82e612e3256de4ef536ea1a35d0e77601b02b17764736f6c63430008110033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b5061001c600033610021565b6100ec565b61002b82826100a6565b6100a2576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556100613390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006100bc83836100c360201b6105e81760201c565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610c3b806100fb6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806391d148541161006657806391d1485414610137578063a217fddf1461014a578063d2d1ca1214610152578063d547741f14610165578063fa82ac761461017857600080fd5b806301ffc9a7146100a35780631d1c77f4146100cb578063248a9ca3146100e05780632f2ff15d1461011157806336568abe14610124575b600080fd5b6100b66100b1366004610956565b61018b565b60405190151581526020015b60405180910390f35b6100de6100d93660046109b2565b6101c2565b005b6101036100ee366004610a3d565b60009081526020819052604090206001015490565b6040519081526020016100c2565b6100de61011f366004610a56565b61047d565b6100de610132366004610a56565b6104a7565b6100b6610145366004610a56565b61052a565b610103600081565b6100de610160366004610a82565b61053d565b6100de610173366004610a56565b610591565b6100de610186366004610a56565b6105b6565b60006001600160e01b03198216637965db0b60e01b14806101bc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd60003361052a565b6101ea5760405163036c8cf960e11b815260040160405180910390fd5b6102187f780492c026a8ec3177646a290c79c4977c9f11e95690c54a0ac8ee134587be038260000151610611565b610234600080516020610be68339815191528260200151610611565b61026c7fc5f56b202d004644c051ff6057ecbf2a2764b8d81e0a6641e536e1cfa55dfd42600080516020610be6833981519152610695565b6102a47f15900ee5215ef76a9f5d2b8a5ec2fe469c362cbf4d7bef6646ab417b6d169e88600080516020610be6833981519152610695565b6102ee7f9c6e3ae929b539a99db03120eac7d9f862d68479b44f1eec05ab6036fcf568307f15900ee5215ef76a9f5d2b8a5ec2fe469c362cbf4d7bef6646ab417b6d169e88610695565b6103387f827de50cc5532fcea9338402dc65442c2567a37fbd0cd8eb56858d00e9e842bd7fc5f56b202d004644c051ff6057ecbf2a2764b8d81e0a6641e536e1cfa55dfd42610695565b6103667fc5f56b202d004644c051ff6057ecbf2a2764b8d81e0a6641e536e1cfa55dfd428260200151610611565b6103947f827de50cc5532fcea9338402dc65442c2567a37fbd0cd8eb56858d00e9e842bd8260200151610611565b6103c27f15900ee5215ef76a9f5d2b8a5ec2fe469c362cbf4d7bef6646ab417b6d169e888260200151610611565b6103f07f9c6e3ae929b539a99db03120eac7d9f862d68479b44f1eec05ab6036fcf568308260200151610611565b61041e7f780492c026a8ec3177646a290c79c4977c9f11e95690c54a0ac8ee134587be038260400151610611565b61044c7f8e73530dd444215065cdf478f826e993aeb5e2798587f0bbf5a978bd97df63ea8260400151610611565b61047a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68260600151610611565b50565b600082815260208190526040902060010154610498816106e0565b6104a28383610611565b505050565b6001600160a01b038116331461051c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61052682826106ea565b5050565b600061053683836105e8565b9392505050565b61054860003361052a565b6105655760405163036c8cf960e11b815260040160405180910390fd5b61057d600080516020610be683398151915282610611565b610526600080516020610be6833981519152835b6000828152602081905260409020600101546105ac816106e0565b6104a283836106ea565b6105c160003361052a565b6105de5760405163036c8cf960e11b815260040160405180910390fd5b6105268282610611565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61061b828261052a565b610526576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556106513390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b61047a813361074f565b6106f4828261052a565b15610526576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610759828261052a565b61052657610766816107a8565b6107718360206107ba565b604051602001610782929190610ad0565b60408051601f198184030181529082905262461bcd60e51b825261051391600401610b45565b60606101bc6001600160a01b03831660145b606060006107c9836002610b8e565b6107d4906002610ba5565b67ffffffffffffffff8111156107ec576107ec610980565b6040519080825280601f01601f191660200182016040528015610816576020820181803683370190505b509050600360fc1b8160008151811061083157610831610bb8565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061086057610860610bb8565b60200101906001600160f81b031916908160001a9053506000610884846002610b8e565b61088f906001610ba5565b90505b6001811115610907576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106108c3576108c3610bb8565b1a60f81b8282815181106108d9576108d9610bb8565b60200101906001600160f81b031916908160001a90535060049490941c9361090081610bce565b9050610892565b5083156105365760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610513565b60006020828403121561096857600080fd5b81356001600160e01b03198116811461053657600080fd5b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b03811681146109ad57600080fd5b919050565b6000608082840312156109c457600080fd5b6040516080810181811067ffffffffffffffff821117156109f557634e487b7160e01b600052604160045260246000fd5b604052610a0183610996565b8152610a0f60208401610996565b6020820152610a2060408401610996565b6040820152610a3160608401610996565b60608201529392505050565b600060208284031215610a4f57600080fd5b5035919050565b60008060408385031215610a6957600080fd5b82359150610a7960208401610996565b90509250929050565b60008060408385031215610a9557600080fd5b610a9e83610996565b9150610a7960208401610996565b60005b83811015610ac7578181015183820152602001610aaf565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610b08816017850160208801610aac565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610b39816028840160208801610aac565b01602801949350505050565b6020815260008251806020840152610b64816040850160208701610aac565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101bc576101bc610b78565b808201808211156101bc576101bc610b78565b634e487b7160e01b600052603260045260246000fd5b600081610bdd57610bdd610b78565b50600019019056fed980155b32cf66e6af51e0972d64b9d5efe0e6f237dfaa4bdc83f990dd79e9c8a26469706673582212206182185a3bdb48568146de5ddc879e9f44885c81b0bd0a0b48951ce12feff4f364736f6c63430008110033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202a94637d198edcfde767289e1e49d58eb1b752d6b08f46a93c4deef0ea51bad464736f6c63430008110033