{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_logic",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "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": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "allSourcePaths": {
    "10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/Proxy.sol",
    "8": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/ERC1967/ERC1967Proxy.sol",
    "9": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/ERC1967/ERC1967Upgrade.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/ERC1967/ERC1967Proxy.sol",
    "exportedSymbols": {
      "Address": [
        17676
      ],
      "ERC1967Proxy": [
        16915
      ],
      "ERC1967Upgrade": [
        18030
      ],
      "IBeacon": [
        18386
      ],
      "IERC1822Proxiable": [
        18376
      ],
      "Proxy": [
        18082
      ],
      "StorageSlot": [
        18446
      ]
    },
    "id": 16916,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16880,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "114:23:8"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/Proxy.sol",
        "file": "../Proxy.sol",
        "id": 16881,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 16916,
        "sourceUnit": 18083,
        "src": "139:22:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
        "file": "./ERC1967Upgrade.sol",
        "id": 16882,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 16916,
        "sourceUnit": 18031,
        "src": "162:30:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 16884,
              "name": "Proxy",
              "nameLocations": [
                "592:5:8"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18082,
              "src": "592:5:8"
            },
            "id": 16885,
            "nodeType": "InheritanceSpecifier",
            "src": "592:5:8"
          },
          {
            "baseName": {
              "id": 16886,
              "name": "ERC1967Upgrade",
              "nameLocations": [
                "599:14:8"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 18030,
              "src": "599:14:8"
            },
            "id": 16887,
            "nodeType": "InheritanceSpecifier",
            "src": "599:14:8"
          }
        ],
        "canonicalName": "ERC1967Proxy",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 16883,
          "nodeType": "StructuredDocumentation",
          "src": "194:372:8",
          "text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."
        },
        "fullyImplemented": true,
        "id": 16915,
        "linearizedBaseContracts": [
          16915,
          18030,
          18082
        ],
        "name": "ERC1967Proxy",
        "nameLocation": "576:12:8",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 16901,
              "nodeType": "Block",
              "src": "1014:56:8",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 16896,
                        "name": "_logic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16890,
                        "src": "1042:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 16897,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16892,
                        "src": "1050:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 16898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1057:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16895,
                      "name": "_upgradeToAndCall",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17813,
                      "src": "1024:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                        "typeString": "function (address,bytes memory,bool)"
                      }
                    },
                    "id": 16899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1024:39:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16900,
                  "nodeType": "ExpressionStatement",
                  "src": "1024:39:8"
                }
              ]
            },
            "documentation": {
              "id": 16888,
              "nodeType": "StructuredDocumentation",
              "src": "620:333:8",
              "text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."
            },
            "id": 16902,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16890,
                  "mutability": "mutable",
                  "name": "_logic",
                  "nameLocation": "978:6:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 16902,
                  "src": "970:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16892,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "999:5:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 16902,
                  "src": "986:18:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 16891,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "969:36:8"
            },
            "returnParameters": {
              "id": 16894,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1014:0:8"
            },
            "scope": 16915,
            "src": "958:112:8",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              18047
            ],
            "body": {
              "id": 16913,
              "nodeType": "Block",
              "src": "1229:59:8",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 16909,
                        "name": "ERC1967Upgrade",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18030,
                        "src": "1246:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1967Upgrade_$18030_$",
                          "typeString": "type(contract ERC1967Upgrade)"
                        }
                      },
                      "id": 16910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1261:18:8",
                      "memberName": "_getImplementation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17744,
                      "src": "1246:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 16911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1246:35:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 16908,
                  "id": 16912,
                  "nodeType": "Return",
                  "src": "1239:42:8"
                }
              ]
            },
            "documentation": {
              "id": 16903,
              "nodeType": "StructuredDocumentation",
              "src": "1076:67:8",
              "text": " @dev Returns the current implementation address."
            },
            "id": 16914,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_implementation",
            "nameLocation": "1157:15:8",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 16905,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1197:8:8"
            },
            "parameters": {
              "id": 16904,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1172:2:8"
            },
            "returnParameters": {
              "id": 16908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16907,
                  "mutability": "mutable",
                  "name": "impl",
                  "nameLocation": "1223:4:8",
                  "nodeType": "VariableDeclaration",
                  "scope": 16914,
                  "src": "1215:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1214:14:8"
            },
            "scope": 16915,
            "src": "1148:140:8",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 16916,
        "src": "567:723:8",
        "usedErrors": []
      }
    ],
    "src": "114:1177:8"
  },
  "bytecode": "60806040526040516104e13803806104e1833981016040819052610022916102de565b61002e82826000610035565b50506103fb565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104ba60279139610180565b9392505050565b6001600160a01b0381163b61013f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019d91906103ac565b600060405180830381855af49150503d80600081146101d8576040519150601f19603f3d011682016040523d82523d6000602084013e6101dd565b606091505b5090925090506101ef868383876101f9565b9695505050505050565b60608315610268578251600003610261576001600160a01b0385163b6102615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610136565b5081610272565b610272838361027a565b949350505050565b81511561028a5781518083602001fd5b8060405162461bcd60e51b815260040161013691906103c8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102d55781810151838201526020016102bd565b50506000910152565b600080604083850312156102f157600080fd5b82516001600160a01b038116811461030857600080fd5b60208401519092506001600160401b038082111561032557600080fd5b818501915085601f83011261033957600080fd5b81518181111561034b5761034b6102a4565b604051601f8201601f19908116603f01168101908382118183101715610373576103736102a4565b8160405282815288602084870101111561038c57600080fd5b61039d8360208301602088016102ba565b80955050505050509250929050565b600082516103be8184602087016102ba565b9190910192915050565b60208152600082518060208401526103e78160408501602087016102ba565b601f01601f19169190910160400192915050565b60b1806104096000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212206af21798a46c5e54d37cd83942fa702c7d58656eb92821ce763a2b6768c3184d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "ERC1967Proxy",
  "coverageMap": {
    "branches": {
      "10": {},
      "8": {},
      "9": {}
    },
    "statements": {
      "10": {
        "Proxy.<fallback>": {
          "1": [
            2675,
            2686
          ]
        },
        "Proxy.<receive>": {
          "0": [
            2898,
            2909
          ]
        },
        "Proxy._fallback": {
          "2": [
            2397,
            2425
          ]
        }
      },
      "8": {
        "ERC1967Proxy._implementation": {
          "3": [
            1239,
            1281
          ]
        }
      },
      "9": {
        "ERC1967Upgrade._getImplementation": {
          "4": [
            1373,
            1434
          ]
        }
      }
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.8.2/ERC1967Upgrade",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Proxy"
  ],
  "deployedBytecode": "608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212206af21798a46c5e54d37cd83942fa702c7d58656eb92821ce763a2b6768c3184d64736f6c63430008130033",
  "deployedSourceMap": "567:723:8:-:0;;;;;;2898:11:10;:9;:11::i;:::-;567:723:8;;2675:11:10;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;1148:140:8:-;1215:12;1246:35;1030:66:9;1380:54;-1:-1:-1;;;;;1380:54:9;;1301:140;1246:35:8;1239:42;;1148:140;:::o;948:895:10:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27",
  "language": "Solidity",
  "natspec": {
    "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.",
    "events": {
      "AdminChanged(address,address)": {
        "details": "Emitted when the admin account has changed."
      },
      "BeaconUpgraded(address)": {
        "details": "Emitted when the beacon is upgraded."
      },
      "Upgraded(address)": {
        "details": "Emitted when the implementation is upgraded."
      }
    },
    "kind": "dev",
    "methods": {
      "constructor": {
        "details": "Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."
      }
    },
    "version": 1
  },
  "offset": [
    567,
    1290
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH1 0x10 JUMPI PUSH1 0xE PUSH1 0x13 JUMP JUMPDEST STOP JUMPDEST PUSH1 0xE JUMPDEST PUSH1 0x1F PUSH1 0x1B PUSH1 0x21 JUMP JUMPDEST PUSH1 0x58 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x53 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x76 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0xF21798A46C5E54D37CD839 TIMESTAMP STATICCALL PUSH17 0x2C7D58656EB92821CE763A2B6768C3184D PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        567,
        1290
      ],
      "op": "PUSH1",
      "path": "8",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        567,
        1290
      ],
      "op": "PUSH1",
      "path": "8",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        567,
        1290
      ],
      "op": "MSTORE",
      "path": "8"
    },
    "5": {
      "fn": null,
      "offset": [
        567,
        1290
      ],
      "op": "CALLDATASIZE",
      "path": "8"
    },
    "6": {
      "fn": null,
      "offset": [
        567,
        1290
      ],
      "op": "PUSH1",
      "path": "8",
      "value": "0x10"
    },
    "8": {
      "fn": null,
      "offset": [
        567,
        1290
      ],
      "op": "JUMPI",
      "path": "8"
    },
    "9": {
      "fn": "Proxy.<receive>",
      "offset": [
        2898,
        2909
      ],
      "op": "PUSH1",
      "path": "10",
      "statement": 0,
      "value": "0xE"
    },
    "11": {
      "fn": "Proxy.<receive>",
      "offset": [
        2898,
        2907
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x13"
    },
    "13": {
      "fn": "Proxy.<receive>",
      "jump": "i",
      "offset": [
        2898,
        2909
      ],
      "op": "JUMP",
      "path": "10"
    },
    "14": {
      "fn": "Proxy.<receive>",
      "offset": [
        2898,
        2909
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "15": {
      "offset": [
        567,
        1290
      ],
      "op": "STOP",
      "path": "8"
    },
    "16": {
      "fn": "Proxy.<receive>",
      "offset": [
        567,
        1290
      ],
      "op": "JUMPDEST",
      "path": "8"
    },
    "17": {
      "fn": "Proxy.<fallback>",
      "offset": [
        2675,
        2686
      ],
      "op": "PUSH1",
      "path": "10",
      "statement": 1,
      "value": "0xE"
    },
    "19": {
      "fn": "Proxy._fallback",
      "offset": [
        2322,
        2432
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "20": {
      "fn": "Proxy._fallback",
      "offset": [
        2397,
        2425
      ],
      "op": "PUSH1",
      "path": "10",
      "statement": 2,
      "value": "0x1F"
    },
    "22": {
      "fn": "Proxy._fallback",
      "offset": [
        2407,
        2424
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x1B"
    },
    "24": {
      "fn": "Proxy._fallback",
      "offset": [
        2407,
        2422
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x21"
    },
    "26": {
      "fn": "Proxy._fallback",
      "jump": "i",
      "offset": [
        2407,
        2424
      ],
      "op": "JUMP",
      "path": "10"
    },
    "27": {
      "fn": "Proxy._fallback",
      "offset": [
        2407,
        2424
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "28": {
      "fn": "Proxy._fallback",
      "offset": [
        2397,
        2406
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x58"
    },
    "30": {
      "fn": "Proxy._fallback",
      "jump": "i",
      "offset": [
        2397,
        2425
      ],
      "op": "JUMP",
      "path": "10"
    },
    "31": {
      "fn": "Proxy._fallback",
      "offset": [
        2397,
        2425
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "32": {
      "fn": "Proxy._fallback",
      "jump": "o",
      "offset": [
        2322,
        2432
      ],
      "op": "JUMP",
      "path": "10"
    },
    "33": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1148,
        1288
      ],
      "op": "JUMPDEST",
      "path": "8"
    },
    "34": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1215,
        1227
      ],
      "op": "PUSH1",
      "path": "8",
      "value": "0x0"
    },
    "36": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1246,
        1281
      ],
      "op": "PUSH1",
      "path": "8",
      "statement": 3,
      "value": "0x53"
    },
    "38": {
      "offset": [
        1030,
        1096
      ],
      "op": "PUSH32",
      "path": "9",
      "value": "0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC"
    },
    "71": {
      "fn": "ERC1967Upgrade._getImplementation",
      "offset": [
        1380,
        1434
      ],
      "op": "SLOAD",
      "path": "9",
      "statement": 4
    },
    "72": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "74": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "76": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "78": {
      "op": "SHL"
    },
    "79": {
      "op": "SUB"
    },
    "80": {
      "fn": "ERC1967Upgrade._getImplementation",
      "offset": [
        1380,
        1434
      ],
      "op": "AND",
      "path": "9"
    },
    "81": {
      "fn": "ERC1967Upgrade._getImplementation",
      "offset": [
        1380,
        1434
      ],
      "op": "SWAP1",
      "path": "9"
    },
    "82": {
      "fn": "ERC1967Upgrade._getImplementation",
      "offset": [
        1301,
        1441
      ],
      "op": "JUMP",
      "path": "9"
    },
    "83": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1246,
        1281
      ],
      "op": "JUMPDEST",
      "path": "8"
    },
    "84": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1239,
        1281
      ],
      "op": "SWAP1",
      "path": "8"
    },
    "85": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1239,
        1281
      ],
      "op": "POP",
      "path": "8"
    },
    "86": {
      "fn": "ERC1967Proxy._implementation",
      "offset": [
        1148,
        1288
      ],
      "op": "SWAP1",
      "path": "8"
    },
    "87": {
      "fn": "ERC1967Proxy._implementation",
      "jump": "o",
      "offset": [
        1148,
        1288
      ],
      "op": "JUMP",
      "path": "8"
    },
    "88": {
      "fn": "Proxy._delegate",
      "offset": [
        948,
        1843
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "89": {
      "fn": "Proxy._delegate",
      "offset": [
        1286,
        1300
      ],
      "op": "CALLDATASIZE",
      "path": "10"
    },
    "90": {
      "fn": "Proxy._delegate",
      "offset": [
        1283,
        1284
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "92": {
      "fn": "Proxy._delegate",
      "offset": [
        1280,
        1281
      ],
      "op": "DUP1",
      "path": "10"
    },
    "93": {
      "fn": "Proxy._delegate",
      "offset": [
        1267,
        1301
      ],
      "op": "CALLDATACOPY",
      "path": "10"
    },
    "94": {
      "fn": "Proxy._delegate",
      "offset": [
        1500,
        1501
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "96": {
      "fn": "Proxy._delegate",
      "offset": [
        1497,
        1498
      ],
      "op": "DUP1",
      "path": "10"
    },
    "97": {
      "fn": "Proxy._delegate",
      "offset": [
        1481,
        1495
      ],
      "op": "CALLDATASIZE",
      "path": "10"
    },
    "98": {
      "fn": "Proxy._delegate",
      "offset": [
        1478,
        1479
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "100": {
      "fn": "Proxy._delegate",
      "offset": [
        1462,
        1476
      ],
      "op": "DUP5",
      "path": "10"
    },
    "101": {
      "fn": "Proxy._delegate",
      "offset": [
        1455,
        1460
      ],
      "op": "GAS",
      "path": "10"
    },
    "102": {
      "fn": "Proxy._delegate",
      "offset": [
        1442,
        1502
      ],
      "op": "DELEGATECALL",
      "path": "10"
    },
    "103": {
      "fn": "Proxy._delegate",
      "offset": [
        1576,
        1592
      ],
      "op": "RETURNDATASIZE",
      "path": "10"
    },
    "104": {
      "fn": "Proxy._delegate",
      "offset": [
        1573,
        1574
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "106": {
      "fn": "Proxy._delegate",
      "offset": [
        1570,
        1571
      ],
      "op": "DUP1",
      "path": "10"
    },
    "107": {
      "fn": "Proxy._delegate",
      "offset": [
        1555,
        1593
      ],
      "op": "RETURNDATACOPY",
      "path": "10"
    },
    "108": {
      "fn": "Proxy._delegate",
      "offset": [
        1614,
        1620
      ],
      "op": "DUP1",
      "path": "10"
    },
    "109": {
      "fn": "Proxy._delegate",
      "offset": [
        1681,
        1747
      ],
      "op": "DUP1",
      "path": "10"
    },
    "110": {
      "fn": "Proxy._delegate",
      "offset": [
        1681,
        1747
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "111": {
      "fn": "Proxy._delegate",
      "offset": [
        1681,
        1747
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x76"
    },
    "113": {
      "fn": "Proxy._delegate",
      "offset": [
        1681,
        1747
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "114": {
      "fn": "Proxy._delegate",
      "offset": [
        1796,
        1812
      ],
      "op": "RETURNDATASIZE",
      "path": "10"
    },
    "115": {
      "fn": "Proxy._delegate",
      "offset": [
        1793,
        1794
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "117": {
      "fn": "Proxy._delegate",
      "offset": [
        1786,
        1813
      ],
      "op": "RETURN",
      "path": "10"
    },
    "118": {
      "fn": "Proxy._delegate",
      "offset": [
        1681,
        1747
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "119": {
      "fn": "Proxy._delegate",
      "offset": [
        1716,
        1732
      ],
      "op": "RETURNDATASIZE",
      "path": "10"
    },
    "120": {
      "fn": "Proxy._delegate",
      "offset": [
        1713,
        1714
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "122": {
      "fn": "Proxy._delegate",
      "offset": [
        1706,
        1733
      ],
      "op": "REVERT",
      "path": "10"
    }
  },
  "sha1": "6d8e76e6172afcf7857809407ed272a7ab7a88ea",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n     * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n     */\n    constructor(address _logic, bytes memory _data) payable {\n        _upgradeToAndCall(_logic, _data, false);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _implementation() internal view virtual override returns (address impl) {\n        return ERC1967Upgrade._getImplementation();\n    }\n}\n",
  "sourceMap": "567:723:8:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2183:295:9;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;:53::i;:::-;;2360:112;2183:295;;;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:9;;;;;;;;1897:152;:::o;6469:198:22:-;6552:12;6583:77;6604:6;6612:4;6583:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6576:84;6469:198;-1:-1:-1;;;6469:198:22:o;1532:259:9:-;-1:-1:-1;;;;;1465:19:22;;;1605:95:9;;;;-1:-1:-1;;;1605:95:9;;1671:2:67;1605:95:9;;;1653:21:67;1710:2;1690:18;;;1683:30;1749:34;1729:18;;;1722:62;-1:-1:-1;;;1800:18:67;;;1793:43;1853:19;;1605:95:9;;;;;;;;;1030:66;1710:74;;-1:-1:-1;;;;;;1710:74:9;-1:-1:-1;;;;;1710:74:9;;;;;;;;;;1532:259::o;6853:325:22:-;6994:12;7019;7033:23;7060:6;-1:-1:-1;;;;;7060:19:22;7080:4;7060:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7018:67:22;;-1:-1:-1;7018:67:22;-1:-1:-1;7102:69:22;7129:6;7018:67;;7158:12;7102:26;:69::i;:::-;7095:76;6853:325;-1:-1:-1;;;;;;6853:325:22:o;7466:628::-;7646:12;7674:7;7670:418;;;7701:10;:17;7722:1;7701:22;7697:286;;-1:-1:-1;;;;;1465:19:22;;;7908:60;;;;-1:-1:-1;;;7908:60:22;;2377:2:67;7908:60:22;;;2359:21:67;2416:2;2396:18;;;2389:30;2455:31;2435:18;;;2428:59;2504:18;;7908:60:22;2175:353:67;7908:60:22;-1:-1:-1;8003:10:22;7996:17;;7670:418;8044:33;8052:10;8064:12;8044:7;:33::i;:::-;7466:628;;;;;;:::o;8616:540::-;8775:17;;:21;8771:379;;9003:10;8997:17;9059:15;9046:10;9042:2;9038:19;9031:44;8771:379;9126:12;9119:20;;-1:-1:-1;;;9119:20:22;;;;;;;;:::i;14:127:67:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:67;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:67;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:67;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:67;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1883:287::-;2012:3;2050:6;2044:13;2066:66;2125:6;2120:3;2113:4;2105:6;2101:17;2066:66;:::i;:::-;2148:16;;;;;1883:287;-1:-1:-1;;1883:287:67:o;2533:396::-;2682:2;2671:9;2664:21;2645:4;2714:6;2708:13;2757:6;2752:2;2741:9;2737:18;2730:34;2773:79;2845:6;2840:2;2829:9;2825:18;2820:2;2812:6;2808:15;2773:79;:::i;:::-;2913:2;2892:15;-1:-1:-1;;2888:29:67;2873:45;;;;2920:2;2869:54;;2533:396;-1:-1:-1;;2533:396:67:o;:::-;567:723:8;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/proxy/ERC1967/ERC1967Proxy.sol",
  "type": "contract"
}