[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "ProxyOwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "impl", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxyOwner", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferProxyOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b5061001a3361001f565b610043565b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba55565b6104e1806100526000396000f3fe60806040526004361061004e5760003560e01c8063025313a2146100655780633659cfe6146100965780634f1ef286146100c95780635c60da1b1461017f578063f1739cae146101945761005d565b3661005d5761005b6101c7565b005b61005b6101c7565b34801561007157600080fd5b5061007a61020b565b604080516001600160a01b039092168252519081900360200190f35b3480156100a257600080fd5b5061005b600480360360208110156100b957600080fd5b50356001600160a01b0316610230565b61005b600480360360408110156100df57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561010a57600080fd5b82018360208201111561011c57600080fd5b8035906020019184600183028401116401000000008311171561013e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610261945050505050565b34801561018b57600080fd5b5061007a610346565b3480156101a057600080fd5b5061005b600480360360208110156101b757600080fd5b50356001600160a01b031661036b565b60006101d1610346565b90506001600160a01b0381166101e657600080fd5b60405136600082376000803683855af43d806000843e818015610207578184f35b8184fd5b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba5490565b61023861020b565b6001600160a01b0316336001600160a01b03161461025557600080fd5b61025e816103f7565b50565b61026961020b565b6001600160a01b0316336001600160a01b03161461028657600080fd5b61028f82610230565b6000306001600160a01b031634836040518082805190602001908083835b602083106102cc5780518252601f1990920191602091820191016102ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461032e576040519150601f19603f3d011682016040523d82523d6000602084013e610333565b606091505b505090508061034157600080fd5b505050565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b61037361020b565b6001600160a01b0316336001600160a01b03161461039057600080fd5b6001600160a01b0381166103a357600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103cc61020b565b604080516001600160a01b03928316815291841660208301528051918290030190a161025e81610463565b6000610401610346565b9050816001600160a01b0316816001600160a01b0316141561042257600080fd5b61042b82610487565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba55565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35556fea264697066735822122089b2136ebfabe33e62322a17d2b4ff55d6d38cf41b58762d1b48fa40ad9f7c8b64736f6c63430007000033