{
  "_format": "hh-sol-artifact-1",
  "contractName": "ProgramTest",
  "sourceName": "src/mocks/Program.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "result",
          "type": "bytes32"
        }
      ],
      "name": "Hash",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "program",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callKeccak",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "program",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "expected",
          "type": "bytes"
        }
      ],
      "name": "checkRevertData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "program",
          "type": "address"
        }
      ],
      "name": "mathTest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "program",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "fundedAccount",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "gas",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "staticcallEvmData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "program",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "staticcallProgram",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610fe6806100206000396000f3fe60806040526004361061004a5760003560e01c80631d00bae41461004f5780633fdd58e21461007157806396ec12e5146100a7578063aba8c4ba146100ba578063fd424462146100da575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610ce7565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610ce7565b610200565b60405161009e9190610d86565b60405180910390f35b6100916100b5366004610da0565b61028a565b3480156100c657600080fd5b506100916100d5366004610e20565b610434565b3480156100e657600080fd5b5061006f6100f5366004610e82565b610a2c565b600080846001600160a01b03168484604051610117929190610e9d565b6000604051808303816000865af19150503d8060008114610154576040519150601f19603f3d011682016040523d82523d6000602084013e610159565b606091505b5091509150816101845760405162461bcd60e51b815260040161017b90610ead565b60405180910390fd5b600061018f82610ed2565b90507f224c8d9ad1bbf0f44a61d7bd8e7e9049b1a320e04b047da9910945675c31ba43816040516101c291815260200190565b60405180910390a16101d78460018188610ef9565b6040516101e5929190610e9d565b604051809103902081146101f857600080fd5b505050505050565b6060600080856001600160a01b0316858560405161021f929190610e9d565b600060405180830381855afa9150503d806000811461025a576040519150601f19603f3d011682016040523d82523d6000602084013e61025f565b606091505b5091509150816102815760405162461bcd60e51b815260040161017b90610ead565b95945050505050565b6060600080876001600160a01b03163488886040516102aa929190610e9d565b60006040518083038185875af1925050503d80600081146102e7576040519150601f19603f3d011682016040523d82523d6000602084013e6102ec565b606091505b509150915081156103345760405162461bcd60e51b8152602060048201526012602482015271756e6578706563746564207375636365737360701b604482015260640161017b565b8051841461037f5760405162461bcd60e51b81526020600482015260186024820152770eee4dedcce40e4caeccae4e840c8c2e8c240d8cadccee8d60431b604482015260640161017b565b60005b81518110156104285785858281811061039d5761039d610f23565b9050013560f81c60f81b6001600160f81b0319168282815181106103c3576103c3610f23565b01602001516001600160f81b031916146104165760405162461bcd60e51b81526020600482015260146024820152730e4caeccae4e840c8c2e8c240dad2e6dac2e8c6d60631b604482015260640161017b565b8061042081610f4f565b915050610382565b50979650505050505050565b6060600080876001600160a01b0316866001600160401b0316868660405161045d929190610e9d565b6000604051808303818686fa925050503d8060008114610499576040519150601f19603f3d011682016040523d82523d6000602084013e61049e565b606091505b5091509150816104c05760405162461bcd60e51b815260040161017b90610ead565b60408051808201909152600d81526c0313637b1b590373ab6b132b91609d1b60208201526069906001906104ff9084906104fa8443610f6a565b610b79565b9250610531836040518060400160405280600d81526020016c031b430b4b71034b2101010101609d1b81525046610b79565b9250610563836040518060400160405280600d81526020016c03130b9b2903332b2901010101609d1b81525048610b79565b9250610595836040518060400160405280600d81526020016c033b0b990383934b1b29010101609d1b8152503a610b79565b92506105c7836040518060400160405280600d81526020016c033b0b9903634b6b4ba1010101609d1b81525045610b79565b92506105fa836040518060400160405280600d81526020016c03b30b63ab2901010101010101609d1b8152506000610b79565b925061062c836040518060400160405280600d81526020016c03a34b6b2b9ba30b6b81010101609d1b81525042610b79565b9250610668836040518060400160405280600d81526020016c03130b630b731b290101010101609d1b8152508b6001600160a01b031631610b79565b92506106a3836040518060400160405280600d81526020016c0393ab9ba1030b2323932b9b99609d1b8152508c6001600160a01b0316610b79565b92506106de836040518060400160405280600d81526020016c039b2b73232b91010101010101609d1b815250306001600160a01b0316610b79565b9250610719836040518060400160405280600d81526020016c037b934b3b4b71010101010101609d1b815250326001600160a01b0316610b79565b9250610754836040518060400160405280600d81526020016c031b7b4b73130b9b2901010101609d1b815250416001600160a01b0316610b79565b9250610793836040518060400160405280600d81526020016c0e4eae6e840c6dec8cad0c2e6d609b1b8152508c6001600160a01b03163f60001c610b79565b92506107d2836040518060400160405280600d81526020016c030b9311031b7b232b430b9b41609d1b815250846001600160a01b03163f60001c610b79565b9250610811836040518060400160405280600d81526020016c032ba341031b7b232b430b9b41609d1b815250836001600160a01b03163f60001c610b79565b925060008a6001600160a01b03163b6001600160401b0381111561083757610837610f81565b6040519080825280601f01601f191660200182016040528015610861576020820181803683370190505b50905060005b8b6001600160a01b03163b8110156108d15784818151811061088b5761088b610f23565b602001015160f81c60f81b8282815181106108a8576108a8610f23565b60200101906001600160f81b031916908160001a905350806108c981610f4f565b915050610867565b508a6001600160a01b0316803b806020016040519081016040528181526000908060200190933c8051906020012081805190602001201461093d5760405162461bcd60e51b815260040161017b90602080825260049082015263636f646560e01b604082015260600190565b60008b6001600160a01b03163b85516109569190610f6a565b6001600160401b0381111561096d5761096d610f81565b6040519080825280601f01601f191660200182016040528015610997576020820181803683370190505b5090506001600160a01b038c163b5b8551811015610a1c578581815181106109c1576109c1610f23565b602001015160f81c60f81b828e6001600160a01b03163b836109e39190610f6a565b815181106109f3576109f3610f23565b60200101906001600160f81b031916908160001a90535080610a1481610f4f565b9150506109a6565b509b9a5050505050505050505050565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677866401000003d0197fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f820990507fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f6401000003d0198208905067eddecf107b5740ce8167fffffffefffffc2f9190040a905067c6178c2de1078cd381069050600080836001600160a01b03166040516000604051808303816000865af19150503d8060008114610b18576040519150601f19603f3d011682016040523d82523d6000602084013e610b1d565b606091505b509150915081610b3f5760405162461bcd60e51b815260040161017b90610ead565b60408051602081018590520160405160208183030381529060405280519060200120818051906020012014610b7357600080fd5b50505050565b6060600084806020019051810190610b919190610f97565b905083838214610bb45760405162461bcd60e51b815260040161017b9190610d86565b50600060208651610bc59190610f6a565b6001600160401b03811115610bdc57610bdc610f81565b6040519080825280601f01601f191660200182016040528015610c06576020820181803683370190505b50905060205b8651811015610c7957868181518110610c2757610c27610f23565b602001015160f81c60f81b82602083610c409190610f6a565b81518110610c5057610c50610f23565b60200101906001600160f81b031916908160001a90535080610c7181610f4f565b915050610c0c565b5095945050505050565b80356001600160a01b0381168114610c9a57600080fd5b919050565b60008083601f840112610cb157600080fd5b5081356001600160401b03811115610cc857600080fd5b602083019150836020828501011115610ce057600080fd5b9250929050565b600080600060408486031215610cfc57600080fd5b610d0584610c83565b925060208401356001600160401b03811115610d2057600080fd5b610d2c86828701610c9f565b9497909650939450505050565b6000815180845260005b81811015610d5f57602081850181015186830182015201610d43565b81811115610d71576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610d996020830184610d39565b9392505050565b600080600080600060608688031215610db857600080fd5b610dc186610c83565b945060208601356001600160401b0380821115610ddd57600080fd5b610de989838a01610c9f565b90965094506040880135915080821115610e0257600080fd5b50610e0f88828901610c9f565b969995985093965092949392505050565b600080600080600060808688031215610e3857600080fd5b610e4186610c83565b9450610e4f60208701610c83565b935060408601356001600160401b038082168214610e6c57600080fd5b90935060608701359080821115610e0257600080fd5b600060208284031215610e9457600080fd5b610d9982610c83565b8183823760009101908152919050565b6020808252600b908201526a18d85b1b0819985a5b195960aa1b604082015260600190565b80516020808301519190811015610ef3576000198160200360031b1b821691505b50919050565b60008085851115610f0957600080fd5b83861115610f1657600080fd5b5050820193919092039150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610f6357610f63610f39565b5060010190565b600082821015610f7c57610f7c610f39565b500390565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610fa957600080fd5b505191905056fea2646970667358221220b7050f2b4580f9fbdd0622d8b0cdd44062cb5a0b52abbe6ca2fb41fea6ff0bb864736f6c63430008090033",
  "deployedBytecode": "0x60806040526004361061004a5760003560e01c80631d00bae41461004f5780633fdd58e21461007157806396ec12e5146100a7578063aba8c4ba146100ba578063fd424462146100da575b600080fd5b34801561005b57600080fd5b5061006f61006a366004610ce7565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610ce7565b610200565b60405161009e9190610d86565b60405180910390f35b6100916100b5366004610da0565b61028a565b3480156100c657600080fd5b506100916100d5366004610e20565b610434565b3480156100e657600080fd5b5061006f6100f5366004610e82565b610a2c565b600080846001600160a01b03168484604051610117929190610e9d565b6000604051808303816000865af19150503d8060008114610154576040519150601f19603f3d011682016040523d82523d6000602084013e610159565b606091505b5091509150816101845760405162461bcd60e51b815260040161017b90610ead565b60405180910390fd5b600061018f82610ed2565b90507f224c8d9ad1bbf0f44a61d7bd8e7e9049b1a320e04b047da9910945675c31ba43816040516101c291815260200190565b60405180910390a16101d78460018188610ef9565b6040516101e5929190610e9d565b604051809103902081146101f857600080fd5b505050505050565b6060600080856001600160a01b0316858560405161021f929190610e9d565b600060405180830381855afa9150503d806000811461025a576040519150601f19603f3d011682016040523d82523d6000602084013e61025f565b606091505b5091509150816102815760405162461bcd60e51b815260040161017b90610ead565b95945050505050565b6060600080876001600160a01b03163488886040516102aa929190610e9d565b60006040518083038185875af1925050503d80600081146102e7576040519150601f19603f3d011682016040523d82523d6000602084013e6102ec565b606091505b509150915081156103345760405162461bcd60e51b8152602060048201526012602482015271756e6578706563746564207375636365737360701b604482015260640161017b565b8051841461037f5760405162461bcd60e51b81526020600482015260186024820152770eee4dedcce40e4caeccae4e840c8c2e8c240d8cadccee8d60431b604482015260640161017b565b60005b81518110156104285785858281811061039d5761039d610f23565b9050013560f81c60f81b6001600160f81b0319168282815181106103c3576103c3610f23565b01602001516001600160f81b031916146104165760405162461bcd60e51b81526020600482015260146024820152730e4caeccae4e840c8c2e8c240dad2e6dac2e8c6d60631b604482015260640161017b565b8061042081610f4f565b915050610382565b50979650505050505050565b6060600080876001600160a01b0316866001600160401b0316868660405161045d929190610e9d565b6000604051808303818686fa925050503d8060008114610499576040519150601f19603f3d011682016040523d82523d6000602084013e61049e565b606091505b5091509150816104c05760405162461bcd60e51b815260040161017b90610ead565b60408051808201909152600d81526c0313637b1b590373ab6b132b91609d1b60208201526069906001906104ff9084906104fa8443610f6a565b610b79565b9250610531836040518060400160405280600d81526020016c031b430b4b71034b2101010101609d1b81525046610b79565b9250610563836040518060400160405280600d81526020016c03130b9b2903332b2901010101609d1b81525048610b79565b9250610595836040518060400160405280600d81526020016c033b0b990383934b1b29010101609d1b8152503a610b79565b92506105c7836040518060400160405280600d81526020016c033b0b9903634b6b4ba1010101609d1b81525045610b79565b92506105fa836040518060400160405280600d81526020016c03b30b63ab2901010101010101609d1b8152506000610b79565b925061062c836040518060400160405280600d81526020016c03a34b6b2b9ba30b6b81010101609d1b81525042610b79565b9250610668836040518060400160405280600d81526020016c03130b630b731b290101010101609d1b8152508b6001600160a01b031631610b79565b92506106a3836040518060400160405280600d81526020016c0393ab9ba1030b2323932b9b99609d1b8152508c6001600160a01b0316610b79565b92506106de836040518060400160405280600d81526020016c039b2b73232b91010101010101609d1b815250306001600160a01b0316610b79565b9250610719836040518060400160405280600d81526020016c037b934b3b4b71010101010101609d1b815250326001600160a01b0316610b79565b9250610754836040518060400160405280600d81526020016c031b7b4b73130b9b2901010101609d1b815250416001600160a01b0316610b79565b9250610793836040518060400160405280600d81526020016c0e4eae6e840c6dec8cad0c2e6d609b1b8152508c6001600160a01b03163f60001c610b79565b92506107d2836040518060400160405280600d81526020016c030b9311031b7b232b430b9b41609d1b815250846001600160a01b03163f60001c610b79565b9250610811836040518060400160405280600d81526020016c032ba341031b7b232b430b9b41609d1b815250836001600160a01b03163f60001c610b79565b925060008a6001600160a01b03163b6001600160401b0381111561083757610837610f81565b6040519080825280601f01601f191660200182016040528015610861576020820181803683370190505b50905060005b8b6001600160a01b03163b8110156108d15784818151811061088b5761088b610f23565b602001015160f81c60f81b8282815181106108a8576108a8610f23565b60200101906001600160f81b031916908160001a905350806108c981610f4f565b915050610867565b508a6001600160a01b0316803b806020016040519081016040528181526000908060200190933c8051906020012081805190602001201461093d5760405162461bcd60e51b815260040161017b90602080825260049082015263636f646560e01b604082015260600190565b60008b6001600160a01b03163b85516109569190610f6a565b6001600160401b0381111561096d5761096d610f81565b6040519080825280601f01601f191660200182016040528015610997576020820181803683370190505b5090506001600160a01b038c163b5b8551811015610a1c578581815181106109c1576109c1610f23565b602001015160f81c60f81b828e6001600160a01b03163b836109e39190610f6a565b815181106109f3576109f3610f23565b60200101906001600160f81b031916908160001a90535080610a1481610f4f565b9150506109a6565b509b9a5050505050505050505050565b7feddecf107b5740cef7f5a01e3ea7e287665c4e75a8eb6afae2fda2e3d43677866401000003d0197fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f820990507fc6178c2de1078cd36c3bd302cde755340d7f17fcb3fcc0b9c333ba03b217029f6401000003d0198208905067eddecf107b5740ce8167fffffffefffffc2f9190040a905067c6178c2de1078cd381069050600080836001600160a01b03166040516000604051808303816000865af19150503d8060008114610b18576040519150601f19603f3d011682016040523d82523d6000602084013e610b1d565b606091505b509150915081610b3f5760405162461bcd60e51b815260040161017b90610ead565b60408051602081018590520160405160208183030381529060405280519060200120818051906020012014610b7357600080fd5b50505050565b6060600084806020019051810190610b919190610f97565b905083838214610bb45760405162461bcd60e51b815260040161017b9190610d86565b50600060208651610bc59190610f6a565b6001600160401b03811115610bdc57610bdc610f81565b6040519080825280601f01601f191660200182016040528015610c06576020820181803683370190505b50905060205b8651811015610c7957868181518110610c2757610c27610f23565b602001015160f81c60f81b82602083610c409190610f6a565b81518110610c5057610c50610f23565b60200101906001600160f81b031916908160001a90535080610c7181610f4f565b915050610c0c565b5095945050505050565b80356001600160a01b0381168114610c9a57600080fd5b919050565b60008083601f840112610cb157600080fd5b5081356001600160401b03811115610cc857600080fd5b602083019150836020828501011115610ce057600080fd5b9250929050565b600080600060408486031215610cfc57600080fd5b610d0584610c83565b925060208401356001600160401b03811115610d2057600080fd5b610d2c86828701610c9f565b9497909650939450505050565b6000815180845260005b81811015610d5f57602081850181015186830182015201610d43565b81811115610d71576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610d996020830184610d39565b9392505050565b600080600080600060608688031215610db857600080fd5b610dc186610c83565b945060208601356001600160401b0380821115610ddd57600080fd5b610de989838a01610c9f565b90965094506040880135915080821115610e0257600080fd5b50610e0f88828901610c9f565b969995985093965092949392505050565b600080600080600060808688031215610e3857600080fd5b610e4186610c83565b9450610e4f60208701610c83565b935060408601356001600160401b038082168214610e6c57600080fd5b90935060608701359080821115610e0257600080fd5b600060208284031215610e9457600080fd5b610d9982610c83565b8183823760009101908152919050565b6020808252600b908201526a18d85b1b0819985a5b195960aa1b604082015260600190565b80516020808301519190811015610ef3576000198160200360031b1b821691505b50919050565b60008085851115610f0957600080fd5b83861115610f1657600080fd5b5050820193919092039150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610f6357610f63610f39565b5060010190565b600082821015610f7c57610f7c610f39565b500390565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610fa957600080fd5b505191905056fea2646970667358221220b7050f2b4580f9fbdd0622d8b0cdd44062cb5a0b52abbe6ca2fb41fea6ff0bb864736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
