{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockMerkleUtils",
  "sourceName": "src/v0.8/mocks/utils/merkle/MockMerkleUtils.sol",
  "abi": [
    {
      "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": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "getImplementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_roles",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "isValidMerkleProof",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_state",
          "type": "bool"
        }
      ],
      "name": "setMockValidState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516110f961004c60003960008181610177015281816101c001528181610290015281816102d0015261034c01526110f96000f3fe6080604052600436106100605760003560e01c80633659cfe6146100655780633c72a8391461008757806341c2412d146100c05780634f1ef286146100f657806352d1902d14610109578063aaf10f421461012b578063c4d66de81461014d575b600080fd5b34801561007157600080fd5b50610085610080366004610876565b61016d565b005b34801561009357600080fd5b506100856100a23660046108aa565b60658054911515600160a01b0260ff60a01b19909216919091179055565b3480156100cc57600080fd5b506100e06100db366004610a03565b61023e565b6040516100ed9190610a8b565b60405180910390f35b610085610104366004610b30565b610286565b34801561011557600080fd5b5061011e61033f565b6040516100ed9190610b8d565b34801561013757600080fd5b5061014061039c565b6040516100ed9190610ba4565b34801561015957600080fd5b50610085610168366004610876565b6103ab565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101be5760405162461bcd60e51b81526004016101b590610bec565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166101f06104a4565b6001600160a01b0316146102165760405162461bcd60e51b81526004016101b590610c33565b61021f816104c0565b6040805160008082526020820190925261023b91839190610559565b50565b606554600090600160a01b900460ff16151560011461026f5760405162461bcd60e51b81526004016101b590610c78565b50606554600160a01b900460ff165b949350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102ce5760405162461bcd60e51b81526004016101b590610bec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103006104a4565b6001600160a01b0316146103265760405162461bcd60e51b81526004016101b590610c33565b61032f826104c0565b61033b82826001610559565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103895760405162461bcd60e51b81526004016101b590610cdd565b5060008051602061107d83398151915290565b60006103a66104a4565b905090565b600054610100900460ff16158080156103cb5750600054600160ff909116105b806103ec57506103da3061063b565b1580156103ec575060005460ff166001145b6104085760405162461bcd60e51b81526004016101b590610d38565b6000805460ff19166001179055801561042b576000805461ff0019166101001790555b606580546001600160a01b0384166001600160a81b031990911617600160a01b17905561045661064a565b801561033b576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061049890600190610d5c565b60405180910390a15050565b60008051602061107d833981519152546001600160a01b031690565b606554604051632474521560e21b81526001600160a01b039091169060009082906391d14854906104f79084903390600401610d6a565b602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190610d90565b6105545760405162461bcd60e51b81526004016101b590610de2565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561058c5761055483610673565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156105e6575060408051601f3d908101601f191682019092526105e391810190610dfd565b60015b6106025760405162461bcd60e51b81526004016101b590610e69565b60008051602061107d833981519152811461062f5760405162461bcd60e51b81526004016101b590610ebf565b506105548383836106c7565b6001600160a01b03163b151590565b600054610100900460ff166106715760405162461bcd60e51b81526004016101b590610f17565b565b61067c8161063b565b6106985760405162461bcd60e51b81526004016101b590610f71565b60008051602061107d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6106d0836106f2565b6000825111806106dd5750805b15610554576106ec8383610732565b50505050565b6106fb81610673565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610757838360405180606001604052806027815260200161109d60279139610760565b90505b92915050565b6060600080856001600160a01b03168560405161077d9190610fc7565b600060405180830381855af49150503d80600081146107b8576040519150601f19603f3d011682016040523d82523d6000602084013e6107bd565b606091505b50915091506107ce868383876107da565b925050505b9392505050565b60608315610817578251600003610810576107f48561063b565b6108105760405162461bcd60e51b81526004016101b590611007565b508161027e565b61027e838381511561082c5781518083602001fd5b8060405162461bcd60e51b81526004016101b5919061104b565b60006001600160a01b03821661075a565b61086081610846565b811461023b57600080fd5b803561075a81610857565b60006020828403121561088b5761088b600080fd5b600061027e848461086b565b801515610860565b803561075a81610897565b6000602082840312156108bf576108bf600080fd5b600061027e848461089f565b80610860565b803561075a816108cb565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b610905826108dc565b81018181106001600160401b0382111715610922576109226108e6565b6040525050565b600061093460405190565b905061094082826108fc565b919050565b60006001600160401b0382111561095e5761095e6108e6565b5060209081020190565b600061097b61097684610945565b610929565b8381529050602080820190840283018581111561099a5761099a600080fd5b835b818110156109be57806109af88826108d1565b8452506020928301920161099c565b5050509392505050565b600082601f8301126109dc576109dc600080fd5b813561027e848260208601610968565b63ffffffff8116610860565b803561075a816109ec565b60008060008060808587031215610a1c57610a1c600080fd5b6000610a2887876108d1565b9450506020610a39878288016108d1565b93505060408501356001600160401b03811115610a5857610a58600080fd5b610a64878288016109c8565b9250506060610a75878288016109f8565b91505092959194509250565b8015155b82525050565b6020810161075a8284610a81565b60006001600160401b03821115610ab257610ab26108e6565b610abb826108dc565b60200192915050565b82818337506000910152565b6000610ade61097684610a99565b905082815260208101848484011115610af957610af9600080fd5b610b04848285610ac4565b509392505050565b600082601f830112610b2057610b20600080fd5b813561027e848260208601610ad0565b60008060408385031215610b4657610b46600080fd5b6000610b52858561086b565b92505060208301356001600160401b03811115610b7157610b71600080fd5b610b7d85828601610b0c565b9150509250929050565b80610a85565b6020810161075a8284610b87565b610a8581610846565b6020810161075a8284610b9b565b602c815260006020820160008051602061105d83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b6020808252810161075a81610bb2565b602c815260006020820160008051602061105d83398151915281526b6163746976652070726f787960a01b60208201529150610be5565b6020808252810161075a81610bfc565b601b81526000602082017a6d6f636b56616c69645374617465206d757374206973207472756560281b815291505b5060200190565b6020808252810161075a81610c43565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60208201529150610be5565b6020808252810161075a81610c88565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150610be5565b6020808252810161075a81610ced565b600060ff821661075a565b610a8581610d48565b6020810161075a8284610d53565b60408101610d788285610b87565b6107d36020830184610b9b565b805161075a81610897565b600060208284031215610da557610da5600080fd5b600061027e8484610d85565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150610c71565b6020808252810161075a81610db1565b805161075a816108cb565b600060208284031215610e1257610e12600080fd5b600061027e8484610df2565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150610be5565b6020808252810161075a81610e1e565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150610be5565b6020808252810161075a81610e79565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150610be5565b6020808252810161075a81610ecf565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150610be5565b6020808252810161075a81610f27565b60005b83811015610f9c578181015183820152602001610f84565b50506000910152565b6000610faf825190565b610fbd818560208601610f81565b9290920192915050565b60006107d38284610fa5565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150610c71565b6020808252810161075a81610fd3565b6000611021825190565b808452602084019350611038818560208601610f81565b611041816108dc565b9093019392505050565b60208082528101610757818461101756fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220524882d2db00ba4b0270c48d2f72244fa267a903d3bb580aa708c8e845d764cc64736f6c63430008150033",
  "deployedBytecode": "0x6080604052600436106100605760003560e01c80633659cfe6146100655780633c72a8391461008757806341c2412d146100c05780634f1ef286146100f657806352d1902d14610109578063aaf10f421461012b578063c4d66de81461014d575b600080fd5b34801561007157600080fd5b50610085610080366004610876565b61016d565b005b34801561009357600080fd5b506100856100a23660046108aa565b60658054911515600160a01b0260ff60a01b19909216919091179055565b3480156100cc57600080fd5b506100e06100db366004610a03565b61023e565b6040516100ed9190610a8b565b60405180910390f35b610085610104366004610b30565b610286565b34801561011557600080fd5b5061011e61033f565b6040516100ed9190610b8d565b34801561013757600080fd5b5061014061039c565b6040516100ed9190610ba4565b34801561015957600080fd5b50610085610168366004610876565b6103ab565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036101be5760405162461bcd60e51b81526004016101b590610bec565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166101f06104a4565b6001600160a01b0316146102165760405162461bcd60e51b81526004016101b590610c33565b61021f816104c0565b6040805160008082526020820190925261023b91839190610559565b50565b606554600090600160a01b900460ff16151560011461026f5760405162461bcd60e51b81526004016101b590610c78565b50606554600160a01b900460ff165b949350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102ce5760405162461bcd60e51b81526004016101b590610bec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103006104a4565b6001600160a01b0316146103265760405162461bcd60e51b81526004016101b590610c33565b61032f826104c0565b61033b82826001610559565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103895760405162461bcd60e51b81526004016101b590610cdd565b5060008051602061107d83398151915290565b60006103a66104a4565b905090565b600054610100900460ff16158080156103cb5750600054600160ff909116105b806103ec57506103da3061063b565b1580156103ec575060005460ff166001145b6104085760405162461bcd60e51b81526004016101b590610d38565b6000805460ff19166001179055801561042b576000805461ff0019166101001790555b606580546001600160a01b0384166001600160a81b031990911617600160a01b17905561045661064a565b801561033b576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061049890600190610d5c565b60405180910390a15050565b60008051602061107d833981519152546001600160a01b031690565b606554604051632474521560e21b81526001600160a01b039091169060009082906391d14854906104f79084903390600401610d6a565b602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190610d90565b6105545760405162461bcd60e51b81526004016101b590610de2565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561058c5761055483610673565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156105e6575060408051601f3d908101601f191682019092526105e391810190610dfd565b60015b6106025760405162461bcd60e51b81526004016101b590610e69565b60008051602061107d833981519152811461062f5760405162461bcd60e51b81526004016101b590610ebf565b506105548383836106c7565b6001600160a01b03163b151590565b600054610100900460ff166106715760405162461bcd60e51b81526004016101b590610f17565b565b61067c8161063b565b6106985760405162461bcd60e51b81526004016101b590610f71565b60008051602061107d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6106d0836106f2565b6000825111806106dd5750805b15610554576106ec8383610732565b50505050565b6106fb81610673565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610757838360405180606001604052806027815260200161109d60279139610760565b90505b92915050565b6060600080856001600160a01b03168560405161077d9190610fc7565b600060405180830381855af49150503d80600081146107b8576040519150601f19603f3d011682016040523d82523d6000602084013e6107bd565b606091505b50915091506107ce868383876107da565b925050505b9392505050565b60608315610817578251600003610810576107f48561063b565b6108105760405162461bcd60e51b81526004016101b590611007565b508161027e565b61027e838381511561082c5781518083602001fd5b8060405162461bcd60e51b81526004016101b5919061104b565b60006001600160a01b03821661075a565b61086081610846565b811461023b57600080fd5b803561075a81610857565b60006020828403121561088b5761088b600080fd5b600061027e848461086b565b801515610860565b803561075a81610897565b6000602082840312156108bf576108bf600080fd5b600061027e848461089f565b80610860565b803561075a816108cb565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b610905826108dc565b81018181106001600160401b0382111715610922576109226108e6565b6040525050565b600061093460405190565b905061094082826108fc565b919050565b60006001600160401b0382111561095e5761095e6108e6565b5060209081020190565b600061097b61097684610945565b610929565b8381529050602080820190840283018581111561099a5761099a600080fd5b835b818110156109be57806109af88826108d1565b8452506020928301920161099c565b5050509392505050565b600082601f8301126109dc576109dc600080fd5b813561027e848260208601610968565b63ffffffff8116610860565b803561075a816109ec565b60008060008060808587031215610a1c57610a1c600080fd5b6000610a2887876108d1565b9450506020610a39878288016108d1565b93505060408501356001600160401b03811115610a5857610a58600080fd5b610a64878288016109c8565b9250506060610a75878288016109f8565b91505092959194509250565b8015155b82525050565b6020810161075a8284610a81565b60006001600160401b03821115610ab257610ab26108e6565b610abb826108dc565b60200192915050565b82818337506000910152565b6000610ade61097684610a99565b905082815260208101848484011115610af957610af9600080fd5b610b04848285610ac4565b509392505050565b600082601f830112610b2057610b20600080fd5b813561027e848260208601610ad0565b60008060408385031215610b4657610b46600080fd5b6000610b52858561086b565b92505060208301356001600160401b03811115610b7157610b71600080fd5b610b7d85828601610b0c565b9150509250929050565b80610a85565b6020810161075a8284610b87565b610a8581610846565b6020810161075a8284610b9b565b602c815260006020820160008051602061105d83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b6020808252810161075a81610bb2565b602c815260006020820160008051602061105d83398151915281526b6163746976652070726f787960a01b60208201529150610be5565b6020808252810161075a81610bfc565b601b81526000602082017a6d6f636b56616c69645374617465206d757374206973207472756560281b815291505b5060200190565b6020808252810161075a81610c43565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60208201529150610be5565b6020808252810161075a81610c88565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150610be5565b6020808252810161075a81610ced565b600060ff821661075a565b610a8581610d48565b6020810161075a8284610d53565b60408101610d788285610b87565b6107d36020830184610b9b565b805161075a81610897565b600060208284031215610da557610da5600080fd5b600061027e8484610d85565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150610c71565b6020808252810161075a81610db1565b805161075a816108cb565b600060208284031215610e1257610e12600080fd5b600061027e8484610df2565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150610be5565b6020808252810161075a81610e1e565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150610be5565b6020808252810161075a81610e79565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150610be5565b6020808252810161075a81610ecf565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150610be5565b6020808252810161075a81610f27565b60005b83811015610f9c578181015183820152602001610f84565b50506000910152565b6000610faf825190565b610fbd818560208601610f81565b9290920192915050565b60006107d38284610fa5565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150610c71565b6020808252810161075a81610fd3565b6000611021825190565b808452602084019350611038818560208601610f81565b611041816108dc565b9093019392505050565b60208082528101610757818461101756fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220524882d2db00ba4b0270c48d2f72244fa267a903d3bb580aa708c8e845d764cc64736f6c63430008150033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
