{
  "_format": "hh3-artifact-1",
  "contractName": "LSP16UniversalFactory",
  "sourceName": "contracts/LSP16UniversalFactory.sol",
  "abi": [
    {
      "inputs": [],
      "name": "ContractInitializationFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidValueSum",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "createdContract",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "generatedSalt",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "initialized",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        }
      ],
      "name": "ContractCreated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "creationBytecodeHash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "initializable",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        }
      ],
      "name": "computeAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "initializable",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        }
      ],
      "name": "computeERC1167Address",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "creationBytecode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        }
      ],
      "name": "deployCreate2",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "creationBytecode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "constructorMsgValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initializeCalldataMsgValue",
          "type": "uint256"
        }
      ],
      "name": "deployCreate2AndInitialize",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        }
      ],
      "name": "deployERC1167Proxy",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        }
      ],
      "name": "deployERC1167ProxyAndInitialize",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "providedSalt",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "initializable",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "initializeCalldata",
          "type": "bytes"
        }
      ],
      "name": "generateSalt",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610d68806100206000396000f3fe6080604052600436106100705760003560e01c806349d8abed1161004e57806349d8abed146100f35780635340165f14610113578063cdbd473a14610126578063e888edcb1461013957600080fd5b80631a17ccbf1461007557806326736355146100a85780633b315680146100d3575b600080fd5b34801561008157600080fd5b50610095610090366004610919565b610159565b6040519081526020015b60405180910390f35b6100bb6100b6366004610a2d565b6101b4565b6040516001600160a01b03909116815260200161009f565b3480156100df57600080fd5b506100bb6100ee366004610a79565b610279565b3480156100ff57600080fd5b506100bb61010e366004610af8565b6102d4565b6100bb610121366004610b22565b610363565b6100bb610134366004610b7c565b61047e565b34801561014557600080fd5b506100bb610154366004610c05565b610616565b60008215610194576001828560405160200161017793929190610c5f565b6040516020818303038152906040528051906020012090506101ad565b6040516000602082015260218101859052604101610177565b9392505050565b6000806101d283600060405180602001604052806000815250610159565b90506000610217348388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066692505050565b90506000151584826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848560405180602001604052806000815250604051610268929190610c91565b60405180910390a495945050505050565b6000806102bd868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b90506102c9818861076f565b979650505050505050565b6000806102f283600060405180602001604052806000815250610159565b90506000610300858361077c565b90506000151584826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848560405180602001604052806000815250604051610351929190610c91565b60405180910390a49150505b92915050565b6000806103a885600186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b905060006103b6878361077c565b90506001151586826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848589896040516103fa93929190610ccb565b60405180910390a4600080826001600160a01b0316348888604051610420929190610d01565b60006040518083038185875af1925050503d806000811461045d576040519150601f19603f3d011682016040523d82523d6000602084013e610462565b606091505b50915091506104718282610819565b5090979650505050505050565b60003461048b8385610d11565b146104c2576040517f2fd9ca9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061050687600188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b9050600061054b85838c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066692505050565b90506001151588826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a84858b8b60405161058f93929190610ccb565b60405180910390a4600080826001600160a01b0316868a8a6040516105b5929190610d01565b60006040518083038185875af1925050503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b50915091506106068282610819565b50909a9950505050505050505050565b60008061065a868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b90506102c98782610864565b6000834710156106bd5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361070e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016106b4565b8282516020840186f590506001600160a01b0381166101ad5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016106b4565b60006101ad8383306108c4565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661035d5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016106b4565b816108605780511561082e5780518082602001fd5b6040517fc1ee854300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000906101ad565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b803580151581146108fe57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561092e57600080fd5b8335925061093e602085016108ee565b9150604084013567ffffffffffffffff8082111561095b57600080fd5b818601915086601f83011261096f57600080fd5b81358181111561098157610981610903565b604051601f8201601f19908116603f011681019083821181831017156109a9576109a9610903565b816040528281528960208487010111156109c257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008083601f8401126109f657600080fd5b50813567ffffffffffffffff811115610a0e57600080fd5b602083019150836020828501011115610a2657600080fd5b9250929050565b600080600060408486031215610a4257600080fd5b833567ffffffffffffffff811115610a5957600080fd5b610a65868287016109e4565b909790965060209590950135949350505050565b600080600080600060808688031215610a9157600080fd5b8535945060208601359350610aa8604087016108ee565b9250606086013567ffffffffffffffff811115610ac457600080fd5b610ad0888289016109e4565b969995985093965092949392505050565b80356001600160a01b03811681146108fe57600080fd5b60008060408385031215610b0b57600080fd5b610b1483610ae1565b946020939093013593505050565b60008060008060608587031215610b3857600080fd5b610b4185610ae1565b935060208501359250604085013567ffffffffffffffff811115610b6457600080fd5b610b70878288016109e4565b95989497509550505050565b600080600080600080600060a0888a031215610b9757600080fd5b873567ffffffffffffffff80821115610baf57600080fd5b610bbb8b838c016109e4565b909950975060208a0135965060408a0135915080821115610bdb57600080fd5b50610be88a828b016109e4565b989b979a5095989597966060870135966080013595509350505050565b600080600080600060808688031215610c1d57600080fd5b610c2686610ae1565b945060208601359350610aa8604087016108ee565b60005b83811015610c56578181015183820152602001610c3e565b50506000910152565b83151560f81b815260008351610c7c816001850160208801610c3b565b60019201918201929092526021019392505050565b8281526040602082015260008251806040840152610cb6816060850160208701610c3b565b601f01601f1916919091016060019392505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8183823760009101908152919050565b8082018082111561035d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220679b82d619f4f7421ebd7f6b861a7a8fe3a72be3cf30955426539b9d7daf0b6e64736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106100705760003560e01c806349d8abed1161004e57806349d8abed146100f35780635340165f14610113578063cdbd473a14610126578063e888edcb1461013957600080fd5b80631a17ccbf1461007557806326736355146100a85780633b315680146100d3575b600080fd5b34801561008157600080fd5b50610095610090366004610919565b610159565b6040519081526020015b60405180910390f35b6100bb6100b6366004610a2d565b6101b4565b6040516001600160a01b03909116815260200161009f565b3480156100df57600080fd5b506100bb6100ee366004610a79565b610279565b3480156100ff57600080fd5b506100bb61010e366004610af8565b6102d4565b6100bb610121366004610b22565b610363565b6100bb610134366004610b7c565b61047e565b34801561014557600080fd5b506100bb610154366004610c05565b610616565b60008215610194576001828560405160200161017793929190610c5f565b6040516020818303038152906040528051906020012090506101ad565b6040516000602082015260218101859052604101610177565b9392505050565b6000806101d283600060405180602001604052806000815250610159565b90506000610217348388888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066692505050565b90506000151584826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848560405180602001604052806000815250604051610268929190610c91565b60405180910390a495945050505050565b6000806102bd868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b90506102c9818861076f565b979650505050505050565b6000806102f283600060405180602001604052806000815250610159565b90506000610300858361077c565b90506000151584826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848560405180602001604052806000815250604051610351929190610c91565b60405180910390a49150505b92915050565b6000806103a885600186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b905060006103b6878361077c565b90506001151586826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a848589896040516103fa93929190610ccb565b60405180910390a4600080826001600160a01b0316348888604051610420929190610d01565b60006040518083038185875af1925050503d806000811461045d576040519150601f19603f3d011682016040523d82523d6000602084013e610462565b606091505b50915091506104718282610819565b5090979650505050505050565b60003461048b8385610d11565b146104c2576040517f2fd9ca9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061050687600188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b9050600061054b85838c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066692505050565b90506001151588826001600160a01b03167f8872a323d65599f01bf90dc61c94b4e0cc8e2347d6af4122fccc3e112ee34a84858b8b60405161058f93929190610ccb565b60405180910390a4600080826001600160a01b0316868a8a6040516105b5929190610d01565b60006040518083038185875af1925050503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b50915091506106068282610819565b50909a9950505050505050505050565b60008061065a868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015992505050565b90506102c98782610864565b6000834710156106bd5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361070e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016106b4565b8282516020840186f590506001600160a01b0381166101ad5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016106b4565b60006101ad8383306108c4565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661035d5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016106b4565b816108605780511561082e5780518082602001fd5b6040517fc1ee854300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c820120607882015260556043909101206000906101ad565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b803580151581146108fe57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561092e57600080fd5b8335925061093e602085016108ee565b9150604084013567ffffffffffffffff8082111561095b57600080fd5b818601915086601f83011261096f57600080fd5b81358181111561098157610981610903565b604051601f8201601f19908116603f011681019083821181831017156109a9576109a9610903565b816040528281528960208487010111156109c257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008083601f8401126109f657600080fd5b50813567ffffffffffffffff811115610a0e57600080fd5b602083019150836020828501011115610a2657600080fd5b9250929050565b600080600060408486031215610a4257600080fd5b833567ffffffffffffffff811115610a5957600080fd5b610a65868287016109e4565b909790965060209590950135949350505050565b600080600080600060808688031215610a9157600080fd5b8535945060208601359350610aa8604087016108ee565b9250606086013567ffffffffffffffff811115610ac457600080fd5b610ad0888289016109e4565b969995985093965092949392505050565b80356001600160a01b03811681146108fe57600080fd5b60008060408385031215610b0b57600080fd5b610b1483610ae1565b946020939093013593505050565b60008060008060608587031215610b3857600080fd5b610b4185610ae1565b935060208501359250604085013567ffffffffffffffff811115610b6457600080fd5b610b70878288016109e4565b95989497509550505050565b600080600080600080600060a0888a031215610b9757600080fd5b873567ffffffffffffffff80821115610baf57600080fd5b610bbb8b838c016109e4565b909950975060208a0135965060408a0135915080821115610bdb57600080fd5b50610be88a828b016109e4565b989b979a5095989597966060870135966080013595509350505050565b600080600080600060808688031215610c1d57600080fd5b610c2686610ae1565b945060208601359350610aa8604087016108ee565b60005b83811015610c56578181015183820152602001610c3e565b50506000910152565b83151560f81b815260008351610c7c816001850160208801610c3b565b60019201918201929092526021019392505050565b8281526040602082015260008251806040840152610cb6816060850160208701610c3b565b601f01601f1916919091016060019392505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b8183823760009101908152919050565b8082018082111561035d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220679b82d619f4f7421ebd7f6b861a7a8fe3a72be3cf30955426539b9d7daf0b6e64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/LSP16UniversalFactory.sol",
  "buildInfoId": "solc-0_8_17-6bcc6b883f95291dc145e2d4216ed19b8dfe7874"
}