{
    "_format": "hh-sol-artifact-1",
    "contractName": "ConsumerRegistry",
    "sourceName": "contracts/ConsumerRegistry.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "consumer",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "ControllerAdded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "consumer",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "ControllerRemoved",
            "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": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "isWhitelisted",
                    "type": "bool"
                }
            ],
            "name": "WhitelistUpdated",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "consumer",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "addController",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "addWhitelist",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "controllers",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "_settings",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "consumer",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "isController",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "consumer",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "controller",
                    "type": "address"
                }
            ],
            "name": "removeController",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "removeWhitelist",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "_settings",
                    "type": "address"
                }
            ],
            "name": "setSettings",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "settings",
            "outputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "whitelist",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50610b24806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80639b19251a1161008c578063c911b56e11610066578063c911b56e146101c7578063e06174e414610203578063f2fde38b14610216578063f80f5dd51461022957600080fd5b80639b19251a1461017e578063a01d3c2c146101a1578063c4d66de8146101b457600080fd5b8062bb9412146100d35780632bb88442146100e85780635defb5da146100fb578063715018a61461013e57806378c8cda7146101465780638da5cb5b14610159575b600080fd5b6100e66100e1366004610a2b565b61023c565b005b6100e66100f6366004610a2b565b6103eb565b610129610109366004610a2b565b606660209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6100e661058a565b6100e6610154366004610a64565b61059e565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610135565b61012961018c366004610a64565b60676020526000908152604090205460ff1681565b6100e66101af366004610a64565b6105fc565b6100e66101c2366004610a64565b610626565b6101296101d5366004610a2b565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b606554610166906001600160a01b031681565b6100e6610224366004610a64565b610753565b6100e6610237366004610a64565b6107cc565b336001600160a01b0383161461038057813b63ffffffff1615610350576102736001600160a01b038316633b72bdd960e01b61082b565b6102ac5760405162461bcd60e51b815260206004820152600560248201526421a918181960d91b60448201526064015b60405180910390fd5b604051637df73e2760e01b815233600482015282906001600160a01b03821690637df73e2790602401602060405180830381865afa1580156102f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103169190610a81565b61034a5760405162461bcd60e51b8152602060048201526005602482015264435230303360d81b60448201526064016102a3565b50610380565b60405162461bcd60e51b8152602060048201526005602482015264435230303160d81b60448201526064016102a3565b6001600160a01b03828116600081815260666020908152604080832094861680845294825291829020805460ff19166001179055905192835290917f09703263c91de41f96b822b3995609acf9858ba081d151c4e7ec3398085ae32691015b60405180910390a25050565b813b63ffffffff16156104ea576104126001600160a01b038316633b72bdd960e01b61082b565b6104465760405162461bcd60e51b815260206004820152600560248201526421a918181960d91b60448201526064016102a3565b604051637df73e2760e01b815233600482015282906001600160a01b03821690637df73e2790602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610a81565b6104e45760405162461bcd60e51b8152602060048201526005602482015264435230303360d81b60448201526064016102a3565b5061052a565b336001600160a01b0383161461052a5760405162461bcd60e51b8152602060048201526005602482015264435230303160d81b60448201526064016102a3565b6001600160a01b03828116600081815260666020908152604080832094861680845294825291829020805460ff19169055905192835290917f41f64ada53a9badeceff01974383e6c72edbc9d5761a759526902033848c74eb91016103df565b61059261084e565b61059c60006108a8565b565b6105a661084e565b6001600160a01b0381166000818152606760209081526040808320805460ff19169055519182527ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d91015b60405180910390a250565b61060461084e565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156106465750600054600160ff909116105b806106605750303b158015610660575060005460ff166001145b6106c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102a3565b6000805460ff1916600117905580156106e6576000805461ff0019166101001790555b6106ee6108fa565b606580546001600160a01b0319166001600160a01b038416179055801561074f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61075b61084e565b6001600160a01b0381166107c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b6107c9816108a8565b50565b6107d461084e565b6001600160a01b038116600081815260676020908152604091829020805460ff1916600190811790915591519182527ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d91016105f1565b600061083683610929565b80156108475750610847838361095d565b9392505050565b6033546001600160a01b0316331461059c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166109215760405162461bcd60e51b81526004016102a390610aa3565b61059c6109e6565b600061093c826301ffc9a760e01b61095d565b80156109575750610955826001600160e01b031961095d565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cf575060208210155b80156109db5750600081115b979650505050505050565b600054610100900460ff16610a0d5760405162461bcd60e51b81526004016102a390610aa3565b61059c336108a8565b6001600160a01b03811681146107c957600080fd5b60008060408385031215610a3e57600080fd5b8235610a4981610a16565b91506020830135610a5981610a16565b809150509250929050565b600060208284031215610a7657600080fd5b813561084781610a16565b600060208284031215610a9357600080fd5b8151801515811461084757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122076fb5e78f579340b6393a309a9a2a7a2f84be5785fd7461b71af50d5e82ffe4364736f6c634300080f0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80639b19251a1161008c578063c911b56e11610066578063c911b56e146101c7578063e06174e414610203578063f2fde38b14610216578063f80f5dd51461022957600080fd5b80639b19251a1461017e578063a01d3c2c146101a1578063c4d66de8146101b457600080fd5b8062bb9412146100d35780632bb88442146100e85780635defb5da146100fb578063715018a61461013e57806378c8cda7146101465780638da5cb5b14610159575b600080fd5b6100e66100e1366004610a2b565b61023c565b005b6100e66100f6366004610a2b565b6103eb565b610129610109366004610a2b565b606660209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6100e661058a565b6100e6610154366004610a64565b61059e565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610135565b61012961018c366004610a64565b60676020526000908152604090205460ff1681565b6100e66101af366004610a64565b6105fc565b6100e66101c2366004610a64565b610626565b6101296101d5366004610a2b565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b606554610166906001600160a01b031681565b6100e6610224366004610a64565b610753565b6100e6610237366004610a64565b6107cc565b336001600160a01b0383161461038057813b63ffffffff1615610350576102736001600160a01b038316633b72bdd960e01b61082b565b6102ac5760405162461bcd60e51b815260206004820152600560248201526421a918181960d91b60448201526064015b60405180910390fd5b604051637df73e2760e01b815233600482015282906001600160a01b03821690637df73e2790602401602060405180830381865afa1580156102f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103169190610a81565b61034a5760405162461bcd60e51b8152602060048201526005602482015264435230303360d81b60448201526064016102a3565b50610380565b60405162461bcd60e51b8152602060048201526005602482015264435230303160d81b60448201526064016102a3565b6001600160a01b03828116600081815260666020908152604080832094861680845294825291829020805460ff19166001179055905192835290917f09703263c91de41f96b822b3995609acf9858ba081d151c4e7ec3398085ae32691015b60405180910390a25050565b813b63ffffffff16156104ea576104126001600160a01b038316633b72bdd960e01b61082b565b6104465760405162461bcd60e51b815260206004820152600560248201526421a918181960d91b60448201526064016102a3565b604051637df73e2760e01b815233600482015282906001600160a01b03821690637df73e2790602401602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610a81565b6104e45760405162461bcd60e51b8152602060048201526005602482015264435230303360d81b60448201526064016102a3565b5061052a565b336001600160a01b0383161461052a5760405162461bcd60e51b8152602060048201526005602482015264435230303160d81b60448201526064016102a3565b6001600160a01b03828116600081815260666020908152604080832094861680845294825291829020805460ff19169055905192835290917f41f64ada53a9badeceff01974383e6c72edbc9d5761a759526902033848c74eb91016103df565b61059261084e565b61059c60006108a8565b565b6105a661084e565b6001600160a01b0381166000818152606760209081526040808320805460ff19169055519182527ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d91015b60405180910390a250565b61060461084e565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156106465750600054600160ff909116105b806106605750303b158015610660575060005460ff166001145b6106c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102a3565b6000805460ff1916600117905580156106e6576000805461ff0019166101001790555b6106ee6108fa565b606580546001600160a01b0319166001600160a01b038416179055801561074f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61075b61084e565b6001600160a01b0381166107c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b6107c9816108a8565b50565b6107d461084e565b6001600160a01b038116600081815260676020908152604091829020805460ff1916600190811790915591519182527ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d91016105f1565b600061083683610929565b80156108475750610847838361095d565b9392505050565b6033546001600160a01b0316331461059c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166109215760405162461bcd60e51b81526004016102a390610aa3565b61059c6109e6565b600061093c826301ffc9a760e01b61095d565b80156109575750610955826001600160e01b031961095d565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cf575060208210155b80156109db5750600081115b979650505050505050565b600054610100900460ff16610a0d5760405162461bcd60e51b81526004016102a390610aa3565b61059c336108a8565b6001600160a01b03811681146107c957600080fd5b60008060408385031215610a3e57600080fd5b8235610a4981610a16565b91506020830135610a5981610a16565b809150509250929050565b600060208284031215610a7657600080fd5b813561084781610a16565b600060208284031215610a9357600080fd5b8151801515811461084757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122076fb5e78f579340b6393a309a9a2a7a2f84be5785fd7461b71af50d5e82ffe4364736f6c634300080f0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
