[ { "inputs": [ { "internalType": "address", "name": "implementationContract", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "changeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
608060405234801561001057600080fd5b506040516108b23803806108b283398101604081905261002f9161010f565b808061003a8161006a565b50610063337f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b505061013f565b6001600160a01b0381163b6100eb5760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015260840160405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355565b60006020828403121561012157600080fd5b81516001600160a01b038116811461013857600080fd5b9392505050565b6107648061014e6000396000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b146100975780638f283970146100d5578063f851a440146100f55761005a565b80633659cfe6146100645780634f1ef28614610084575b61006261010a565b005b34801561007057600080fd5b5061006261007f366004610679565b610144565b61006261009236600461069b565b610196565b3480156100a357600080fd5b506100ac61026a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100e157600080fd5b506100626100f0366004610679565b610299565b34801561010157600080fd5b506100ac61041f565b610112610449565b61014261013d7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b61050f565b565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5473ffffffffffffffffffffffffffffffffffffffff16330361018e5761018b81610533565b50565b61018b61010a565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5473ffffffffffffffffffffffffffffffffffffffff16330361025d576101dd83610533565b60003073ffffffffffffffffffffffffffffffffffffffff1634848460405161020792919061071e565b60006040518083038185875af1925050503d8060008114610244576040519150601f19603f3d011682016040523d82523d6000602084013e610249565b606091505b505090508061025757600080fd5b50505050565b61026561010a565b505050565b60006102947f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b905090565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5473ffffffffffffffffffffffffffffffffffffffff16330361018e5773ffffffffffffffffffffffffffffffffffffffff811661037f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f60448201527f787920746f20746865207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103c87f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5490565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b817f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b60006102947f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5490565b7f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5473ffffffffffffffffffffffffffffffffffffffff163303610142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152608401610376565b3660008037600080366000845af43d6000803e80801561052e573d6000f35b3d6000fd5b61053c81610588565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9060200160405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff81163b61062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152608401610376565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355565b803573ffffffffffffffffffffffffffffffffffffffff8116811461067457600080fd5b919050565b60006020828403121561068b57600080fd5b61069482610650565b9392505050565b6000806000604084860312156106b057600080fd5b6106b984610650565b9250602084013567ffffffffffffffff808211156106d657600080fd5b818601915086601f8301126106ea57600080fd5b8135818111156106f957600080fd5b87602082850101111561070b57600080fd5b6020830194508093505050509250925092565b818382376000910190815291905056fea2646970667358221220c9208272db2b2c6addcebc09de39c66fd16b9752977f1672a2c76536f65a7d2964736f6c63430008160033000000000000000000000000fbda5f676cb37624f28265a144a48b0d6e87d3b6