{
  "_format": "hh-sol-artifact-1",
  "contractName": "DeterministicFactory",
  "sourceName": "solidity/contracts/DeterministicFactory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_deployer",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEPLOYER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_creationCode",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "deploy",
      "outputs": [
        {
          "internalType": "address",
          "name": "_deployed",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "getDeployed",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162000e6638038062000e668339810160408190526200003491620001cf565b6200004f60008051602062000e4683398151915280620000b7565b6200007960008051602062000e2683398151915260008051602062000e46833981519152620000b7565b6200009460008051602062000e468339815191528362000102565b620000af60008051602062000e268339815191528262000102565b505062000207565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200010e828262000112565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200010e576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200016e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b0381168114620001ca57600080fd5b919050565b60008060408385031215620001e357600080fd5b620001ee83620001b2565b9150620001fe60208401620001b2565b90509250929050565b610c0f80620002176000396000f3fe60806040526004361061009c5760003560e01c806391d148541161006457806391d148541461018a578063a217fddf146101aa578063c7aeef0f146101bf578063d547741f146101ea578063df20e2521461020a578063ecd002611461022a57600080fd5b806301ffc9a7146100a1578063248a9ca3146100d65780632f2ff15d1461011457806336568abe1461013657806375b238fc14610156575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004610a2b565b61025e565b60405190151581526020015b60405180910390f35b3480156100e257600080fd5b506101066100f1366004610912565b60009081526020819052604090206001015490565b6040519081526020016100cd565b34801561012057600080fd5b5061013461012f36600461092b565b610295565b005b34801561014257600080fd5b5061013461015136600461092b565b6102bf565b34801561016257600080fd5b506101067fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561019657600080fd5b506100c16101a536600461092b565b610342565b3480156101b657600080fd5b50610106600081565b6101d26101cd366004610967565b61036b565b6040516001600160a01b0390911681526020016100cd565b3480156101f657600080fd5b5061013461020536600461092b565b6103ab565b34801561021657600080fd5b506101d2610225366004610912565b6103d0565b34801561023657600080fd5b506101067ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c81565b60006001600160e01b03198216637965db0b60e01b148061028f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152602081905260409020600101546102b0816103db565b6102ba83836103e8565b505050565b6001600160a01b03811633146103345760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61033e828261046c565b5050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60007ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c610397816103db565b6103a28585856104d1565b95945050505050565b6000828152602081905260409020600101546103c6816103db565b6102ba838361046c565b600061028f82610627565b6103e58133610712565b50565b6103f28282610342565b61033e576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556104283390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6104768282610342565b1561033e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000806040518060400160405280601081526020016f67363d3d37363d34f03d5260086018f360801b81525090506000858251602084016000f590506001600160a01b0381166105575760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640161032b565b61056086610627565b92506000816001600160a01b0316858760405161057d9190610a55565b60006040518083038185875af1925050503d80600081146105ba576040519150601f19603f3d011682016040523d82523d6000602084013e6105bf565b606091505b505090508080156105d957506001600160a01b0384163b15155b61061d5760405162461bcd60e51b815260206004820152601560248201527412539255125053125690551253d397d19052531151605a1b604482015260640161032b565b5050509392505050565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015290516001600160f81b0319918101919091526bffffffffffffffffffffffff193060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605582015260009081906106cb906075015b6040516020818303038152906040528051906020012090565b6040516135a560f21b60208201526bffffffffffffffffffffffff19606083901b166022820152600160f81b603682015290915061070b906037016106b2565b9392505050565b61071c8282610342565b61033e57610734816001600160a01b03166014610776565b61073f836020610776565b604051602001610750929190610a71565b60408051601f198184030181529082905262461bcd60e51b825261032b91600401610ae6565b60606000610785836002610b31565b610790906002610b19565b67ffffffffffffffff8111156107a8576107a8610bc3565b6040519080825280601f01601f1916602001820160405280156107d2576020820181803683370190505b509050600360fc1b816000815181106107ed576107ed610bad565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061081c5761081c610bad565b60200101906001600160f81b031916908160001a9053506000610840846002610b31565b61084b906001610b19565b90505b60018111156108c3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061087f5761087f610bad565b1a60f81b82828151811061089557610895610bad565b60200101906001600160f81b031916908160001a90535060049490941c936108bc81610b80565b905061084e565b50831561070b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161032b565b60006020828403121561092457600080fd5b5035919050565b6000806040838503121561093e57600080fd5b8235915060208301356001600160a01b038116811461095c57600080fd5b809150509250929050565b60008060006060848603121561097c57600080fd5b83359250602084013567ffffffffffffffff8082111561099b57600080fd5b818601915086601f8301126109af57600080fd5b8135818111156109c1576109c1610bc3565b604051601f8201601f19908116603f011681019083821181831017156109e9576109e9610bc3565b81604052828152896020848701011115610a0257600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b600060208284031215610a3d57600080fd5b81356001600160e01b03198116811461070b57600080fd5b60008251610a67818460208701610b50565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610aa9816017850160208801610b50565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610ada816028840160208801610b50565b01602801949350505050565b6020815260008251806020840152610b05816040850160208701610b50565b601f01601f19169190910160400192915050565b60008219821115610b2c57610b2c610b97565b500190565b6000816000190483118215151615610b4b57610b4b610b97565b500290565b60005b83811015610b6b578181015183820152602001610b53565b83811115610b7a576000848401525b50505050565b600081610b8f57610b8f610b97565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220e78b9d7b9292915012cfa17dc2d8767e7e8c9214bd040615855c8170161609e264736f6c63430008070033fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184ca49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775",
  "deployedBytecode": "0x60806040526004361061009c5760003560e01c806391d148541161006457806391d148541461018a578063a217fddf146101aa578063c7aeef0f146101bf578063d547741f146101ea578063df20e2521461020a578063ecd002611461022a57600080fd5b806301ffc9a7146100a1578063248a9ca3146100d65780632f2ff15d1461011457806336568abe1461013657806375b238fc14610156575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004610a2b565b61025e565b60405190151581526020015b60405180910390f35b3480156100e257600080fd5b506101066100f1366004610912565b60009081526020819052604090206001015490565b6040519081526020016100cd565b34801561012057600080fd5b5061013461012f36600461092b565b610295565b005b34801561014257600080fd5b5061013461015136600461092b565b6102bf565b34801561016257600080fd5b506101067fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561019657600080fd5b506100c16101a536600461092b565b610342565b3480156101b657600080fd5b50610106600081565b6101d26101cd366004610967565b61036b565b6040516001600160a01b0390911681526020016100cd565b3480156101f657600080fd5b5061013461020536600461092b565b6103ab565b34801561021657600080fd5b506101d2610225366004610912565b6103d0565b34801561023657600080fd5b506101067ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c81565b60006001600160e01b03198216637965db0b60e01b148061028f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000828152602081905260409020600101546102b0816103db565b6102ba83836103e8565b505050565b6001600160a01b03811633146103345760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61033e828261046c565b5050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60007ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c610397816103db565b6103a28585856104d1565b95945050505050565b6000828152602081905260409020600101546103c6816103db565b6102ba838361046c565b600061028f82610627565b6103e58133610712565b50565b6103f28282610342565b61033e576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556104283390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6104768282610342565b1561033e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000806040518060400160405280601081526020016f67363d3d37363d34f03d5260086018f360801b81525090506000858251602084016000f590506001600160a01b0381166105575760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640161032b565b61056086610627565b92506000816001600160a01b0316858760405161057d9190610a55565b60006040518083038185875af1925050503d80600081146105ba576040519150601f19603f3d011682016040523d82523d6000602084013e6105bf565b606091505b505090508080156105d957506001600160a01b0384163b15155b61061d5760405162461bcd60e51b815260206004820152601560248201527412539255125053125690551253d397d19052531151605a1b604482015260640161032b565b5050509392505050565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015290516001600160f81b0319918101919091526bffffffffffffffffffffffff193060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605582015260009081906106cb906075015b6040516020818303038152906040528051906020012090565b6040516135a560f21b60208201526bffffffffffffffffffffffff19606083901b166022820152600160f81b603682015290915061070b906037016106b2565b9392505050565b61071c8282610342565b61033e57610734816001600160a01b03166014610776565b61073f836020610776565b604051602001610750929190610a71565b60408051601f198184030181529082905262461bcd60e51b825261032b91600401610ae6565b60606000610785836002610b31565b610790906002610b19565b67ffffffffffffffff8111156107a8576107a8610bc3565b6040519080825280601f01601f1916602001820160405280156107d2576020820181803683370190505b509050600360fc1b816000815181106107ed576107ed610bad565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061081c5761081c610bad565b60200101906001600160f81b031916908160001a9053506000610840846002610b31565b61084b906001610b19565b90505b60018111156108c3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061087f5761087f610bad565b1a60f81b82828151811061089557610895610bad565b60200101906001600160f81b031916908160001a90535060049490941c936108bc81610b80565b905061084e565b50831561070b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161032b565b60006020828403121561092457600080fd5b5035919050565b6000806040838503121561093e57600080fd5b8235915060208301356001600160a01b038116811461095c57600080fd5b809150509250929050565b60008060006060848603121561097c57600080fd5b83359250602084013567ffffffffffffffff8082111561099b57600080fd5b818601915086601f8301126109af57600080fd5b8135818111156109c1576109c1610bc3565b604051601f8201601f19908116603f011681019083821181831017156109e9576109e9610bc3565b81604052828152896020848701011115610a0257600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b600060208284031215610a3d57600080fd5b81356001600160e01b03198116811461070b57600080fd5b60008251610a67818460208701610b50565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610aa9816017850160208801610b50565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610ada816028840160208801610b50565b01602801949350505050565b6020815260008251806020840152610b05816040850160208701610b50565b601f01601f19169190910160400192915050565b60008219821115610b2c57610b2c610b97565b500190565b6000816000190483118215151615610b4b57610b4b610b97565b500290565b60005b83811015610b6b578181015183820152602001610b53565b83811115610b7a576000848401525b50505050565b600081610b8f57610b8f610b97565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220e78b9d7b9292915012cfa17dc2d8767e7e8c9214bd040615855c8170161609e264736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
