@secure-ci/core
Version:
Smart contracts for the Secure Contract Interaction protocol
553 lines (552 loc) • 41.6 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "SciRegistrar",
"sourceName": "contracts/Registrars/SciRegistrar.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_sciRegistry",
"type": "address"
},
{
"internalType": "uint48",
"name": "initialDelay",
"type": "uint48"
},
{
"internalType": "address",
"name": "_initialDefaultAdmin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"name": "AccessControlEnforcedDefaultAdminDelay",
"type": "error"
},
{
"inputs": [],
"name": "AccessControlEnforcedDefaultAdminRules",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "defaultAdmin",
"type": "address"
}
],
"name": "AccessControlInvalidDefaultAdmin",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "DefaultAdminDelayChangeCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
},
{
"indexed": false,
"internalType": "uint48",
"name": "effectSchedule",
"type": "uint48"
}
],
"name": "DefaultAdminDelayChangeScheduled",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "DefaultAdminTransferCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "uint48",
"name": "acceptSchedule",
"type": "uint48"
}
],
"name": "DefaultAdminTransferScheduled",
"type": "event"
},
{
"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": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REGISTER_DOMAIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "beginDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cancelDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
}
],
"name": "changeDefaultAdminDelay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdminDelay",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdminDelayIncreaseWait",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"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": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingDefaultAdmin",
"outputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
},
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingDefaultAdminDelay",
"outputs": [
{
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
},
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "domainHash",
"type": "bytes32"
}
],
"name": "registerDomain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "domainHash",
"type": "bytes32"
},
{
"internalType": "contract IVerifier",
"name": "verifier",
"type": "address"
}
],
"name": "registerDomainWithVerifier",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "registry",
"outputs": [
{
"internalType": "contract ISciRegistry",
"name": "",
"type": "address"
}
],
"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": [],
"name": "rollbackDefaultAdminDelay",
"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": "0x60a060405234801561001057600080fd5b50604051611f8c380380611f8c83398181016040528101906100329190610430565b8181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a65760006040517fc22c802200000000000000000000000000000000000000000000000000000000815260040161009d9190610492565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506100de6000801b8261011d60201b60201c565b5050508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050506104ad565b60008060001b83036101de57600073ffffffffffffffffffffffffffffffffffffffff1661014f6101f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461019c576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6101ee838361022060201b60201c565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610232838361031d60201b60201c565b61031257600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506102af61038760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610317565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103bf82610394565b9050919050565b6103cf816103b4565b81146103da57600080fd5b50565b6000815190506103ec816103c6565b92915050565b600065ffffffffffff82169050919050565b61040d816103f2565b811461041857600080fd5b50565b60008151905061042a81610404565b92915050565b6000806000606084860312156104495761044861038f565b5b6000610457868287016103dd565b93505060206104688682870161041b565b9250506040610479868287016103dd565b9150509250925092565b61048c816103b4565b82525050565b60006020820190506104a76000830184610483565b92915050565b608051611ab66104d66000396000818161063e0152818161079601526109fb0152611ab66000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063cc8463c81161007c578063cc8463c814610340578063cefc14291461035e578063cf6eefb714610368578063d547741f14610387578063d602b9fd146103a3578063dd738e6c146103ad57610142565b80638da5cb5b1461029957806391d14854146102b7578063a1eda53c146102e7578063a217fddf14610306578063a8c008611461032457610142565b80632f2ff15d1161010a5780632f2ff15d146101ed57806336568abe14610209578063634e93da14610225578063649a5ec7146102415780637b1039991461025d57806384ef8ffc1461027b57610142565b806301ffc9a714610147578063022d63fb146101775780630aa6220b14610195578063248a9ca31461019f5780632a3fea62146101cf575b600080fd5b610161600480360381019061015c91906114bb565b6103c9565b60405161016e9190611503565b60405180910390f35b61017f610443565b60405161018c919061153f565b60405180910390f35b61019d61044e565b005b6101b960048036038101906101b49190611590565b610466565b6040516101c691906115cc565b60405180910390f35b6101d7610485565b6040516101e491906115cc565b60405180910390f35b61020760048036038101906102029190611645565b6104a9565b005b610223600480360381019061021e9190611645565b6104f3565b005b61023f600480360381019061023a9190611685565b610608565b005b61025b600480360381019061025691906116de565b610622565b005b61026561063c565b604051610272919061176a565b60405180910390f35b610283610660565b6040516102909190611794565b60405180910390f35b6102a161068a565b6040516102ae9190611794565b60405180910390f35b6102d160048036038101906102cc9190611645565b610699565b6040516102de9190611503565b60405180910390f35b6102ef610703565b6040516102fd9291906117af565b60405180910390f35b61030e610763565b60405161031b91906115cc565b60405180910390f35b61033e600480360381019061033991906117d8565b61076a565b005b610348610826565b604051610355919061153f565b60405180910390f35b610366610894565b005b61037061092a565b60405161037e929190611818565b60405180910390f35b6103a1600480360381019061039c9190611645565b61096d565b005b6103ab6109b7565b005b6103c760048036038101906103c2919061187f565b6109cf565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043c575061043b82610a8e565b5b9050919050565b600062069780905090565b6000801b61045b81610b08565b610463610b1c565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b82036104e5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ef8282610b29565b5050565b6000801b821480156105375750610508610660565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156105fa5760008061054761092a565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061058d575061058b81610b4b565b155b8061059e575061059c81610b60565b155b156105e057806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105d7919061153f565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106048282610b74565b5050565b6000801b61061581610b08565b61061e82610bef565b5050565b6000801b61062f81610b08565b61063882610c6a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610694610660565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061072681610b4b565b8015610738575061073681610b60565b155b6107445760008061075b565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6861079481610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086184846040518363ffffffff1660e01b81526004016107ef9291906118d2565b600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b50505050505050565b6000806002601a9054906101000a900465ffffffffffff16905061084981610b4b565b801561085a575061085981610b60565b5b610878576001601a9054906101000a900465ffffffffffff1661088e565b600260149054906101000a900465ffffffffffff165b91505090565b600061089e61092a565b5090508073ffffffffffffffffffffffffffffffffffffffff166108c0610cd1565b73ffffffffffffffffffffffffffffffffffffffff161461091f576108e3610cd1565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016109169190611794565b60405180910390fd5b610927610cd9565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b82036109a9576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109b38282610da8565b5050565b6000801b6109c481610b08565b6109cc610dca565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c686109f981610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8585856040518463ffffffff1660e01b8152600401610a569392919061191c565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b015750610b0082610dd7565b5b9050919050565b610b1981610b14610cd1565b610e41565b50565b610b27600080610e92565b565b610b3282610466565b610b3b81610b08565b610b458383610f82565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610b7c610cd1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea828261104f565b505050565b6000610bf9610826565b610c02426110d2565b610c0c9190611982565b9050610c18828261112c565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610c5e919061153f565b60405180910390a25050565b6000610c75826111df565b610c7e426110d2565b610c889190611982565b9050610c948282610e92565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610cc59291906117af565b60405180910390a15050565b600033905090565b600080610ce461092a565b91509150610cf181610b4b565b1580610d035750610d0181610b60565b155b15610d4557806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610d3c919061153f565b60405180910390fd5b610d596000801b610d54610660565b61104f565b50610d676000801b83610f82565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610db182610466565b610dba81610b08565b610dc4838361104f565b50505050565b610dd560008061112c565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e4b8282610699565b610e8e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610e859291906118d2565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610eb481610b4b565b15610f3357610ec281610b60565b15610f0557600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f32565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361103d57600073ffffffffffffffffffffffffffffffffffffffff16610fae610660565b73ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611047838361123e565b905092915050565b60008060001b831480156110955750611066610660565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110c057600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6110ca838361132f565b905092915050565b600065ffffffffffff8016821115611124576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161111b929190611a1d565b60405180910390fd5b819050919050565b600061113661092a565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506111a881610b4b565b156111da577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806111ea610826565b90508065ffffffffffff168365ffffffffffff161161121457828161120f9190611a46565b611236565b6112358365ffffffffffff16611228610443565b65ffffffffffff16611421565b5b915050919050565b600061124a8383610699565b61132457600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112c1610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611329565b600090505b92915050565b600061133b8383610699565b1561141657600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b3610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141b565b600090505b92915050565b60006114308284108484611438565b905092915050565b600061144384611452565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61149881611463565b81146114a357600080fd5b50565b6000813590506114b58161148f565b92915050565b6000602082840312156114d1576114d061145e565b5b60006114df848285016114a6565b91505092915050565b60008115159050919050565b6114fd816114e8565b82525050565b600060208201905061151860008301846114f4565b92915050565b600065ffffffffffff82169050919050565b6115398161151e565b82525050565b60006020820190506115546000830184611530565b92915050565b6000819050919050565b61156d8161155a565b811461157857600080fd5b50565b60008135905061158a81611564565b92915050565b6000602082840312156115a6576115a561145e565b5b60006115b48482850161157b565b91505092915050565b6115c68161155a565b82525050565b60006020820190506115e160008301846115bd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611612826115e7565b9050919050565b61162281611607565b811461162d57600080fd5b50565b60008135905061163f81611619565b92915050565b6000806040838503121561165c5761165b61145e565b5b600061166a8582860161157b565b925050602061167b85828601611630565b9150509250929050565b60006020828403121561169b5761169a61145e565b5b60006116a984828501611630565b91505092915050565b6116bb8161151e565b81146116c657600080fd5b50565b6000813590506116d8816116b2565b92915050565b6000602082840312156116f4576116f361145e565b5b6000611702848285016116c9565b91505092915050565b6000819050919050565b600061173061172b611726846115e7565b61170b565b6115e7565b9050919050565b600061174282611715565b9050919050565b600061175482611737565b9050919050565b61176481611749565b82525050565b600060208201905061177f600083018461175b565b92915050565b61178e81611607565b82525050565b60006020820190506117a96000830184611785565b92915050565b60006040820190506117c46000830185611530565b6117d16020830184611530565b9392505050565b600080604083850312156117ef576117ee61145e565b5b60006117fd85828601611630565b925050602061180e8582860161157b565b9150509250929050565b600060408201905061182d6000830185611785565b61183a6020830184611530565b9392505050565b600061184c82611607565b9050919050565b61185c81611841565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b6000806000606084860312156118985761189761145e565b5b60006118a686828701611630565b93505060206118b78682870161157b565b92505060406118c88682870161186a565b9150509250925092565b60006040820190506118e76000830185611785565b6118f460208301846115bd565b9392505050565b600061190682611737565b9050919050565b611916816118fb565b82525050565b60006060820190506119316000830186611785565b61193e60208301856115bd565b61194b604083018461190d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061198d8261151e565b91506119988361151e565b9250828201905065ffffffffffff8111156119b6576119b5611953565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006119ee6119e96119e4846119bc565b61170b565b6119c6565b9050919050565b6119fe816119d3565b82525050565b6000819050919050565b611a1781611a04565b82525050565b6000604082019050611a3260008301856119f5565b611a3f6020830184611a0e565b9392505050565b6000611a518261151e565b9150611a5c8361151e565b9250828203905065ffffffffffff811115611a7a57611a79611953565b5b9291505056fea26469706673582212204307e6557245d6962c4aa6df3b0d00da7f70a8fe6d588026bced90e93aa484cb64736f6c634300081c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063cc8463c81161007c578063cc8463c814610340578063cefc14291461035e578063cf6eefb714610368578063d547741f14610387578063d602b9fd146103a3578063dd738e6c146103ad57610142565b80638da5cb5b1461029957806391d14854146102b7578063a1eda53c146102e7578063a217fddf14610306578063a8c008611461032457610142565b80632f2ff15d1161010a5780632f2ff15d146101ed57806336568abe14610209578063634e93da14610225578063649a5ec7146102415780637b1039991461025d57806384ef8ffc1461027b57610142565b806301ffc9a714610147578063022d63fb146101775780630aa6220b14610195578063248a9ca31461019f5780632a3fea62146101cf575b600080fd5b610161600480360381019061015c91906114bb565b6103c9565b60405161016e9190611503565b60405180910390f35b61017f610443565b60405161018c919061153f565b60405180910390f35b61019d61044e565b005b6101b960048036038101906101b49190611590565b610466565b6040516101c691906115cc565b60405180910390f35b6101d7610485565b6040516101e491906115cc565b60405180910390f35b61020760048036038101906102029190611645565b6104a9565b005b610223600480360381019061021e9190611645565b6104f3565b005b61023f600480360381019061023a9190611685565b610608565b005b61025b600480360381019061025691906116de565b610622565b005b61026561063c565b604051610272919061176a565b60405180910390f35b610283610660565b6040516102909190611794565b60405180910390f35b6102a161068a565b6040516102ae9190611794565b60405180910390f35b6102d160048036038101906102cc9190611645565b610699565b6040516102de9190611503565b60405180910390f35b6102ef610703565b6040516102fd9291906117af565b60405180910390f35b61030e610763565b60405161031b91906115cc565b60405180910390f35b61033e600480360381019061033991906117d8565b61076a565b005b610348610826565b604051610355919061153f565b60405180910390f35b610366610894565b005b61037061092a565b60405161037e929190611818565b60405180910390f35b6103a1600480360381019061039c9190611645565b61096d565b005b6103ab6109b7565b005b6103c760048036038101906103c2919061187f565b6109cf565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043c575061043b82610a8e565b5b9050919050565b600062069780905090565b6000801b61045b81610b08565b610463610b1c565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b82036104e5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ef8282610b29565b5050565b6000801b821480156105375750610508610660565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156105fa5760008061054761092a565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061058d575061058b81610b4b565b155b8061059e575061059c81610b60565b155b156105e057806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105d7919061153f565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106048282610b74565b5050565b6000801b61061581610b08565b61061e82610bef565b5050565b6000801b61062f81610b08565b61063882610c6a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610694610660565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061072681610b4b565b8015610738575061073681610b60565b155b6107445760008061075b565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6861079481610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086184846040518363ffffffff1660e01b81526004016107ef9291906118d2565b600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b50505050505050565b6000806002601a9054906101000a900465ffffffffffff16905061084981610b4b565b801561085a575061085981610b60565b5b610878576001601a9054906101000a900465ffffffffffff1661088e565b600260149054906101000a900465ffffffffffff165b91505090565b600061089e61092a565b5090508073ffffffffffffffffffffffffffffffffffffffff166108c0610cd1565b73ffffffffffffffffffffffffffffffffffffffff161461091f576108e3610cd1565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016109169190611794565b60405180910390fd5b610927610cd9565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b82036109a9576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109b38282610da8565b5050565b6000801b6109c481610b08565b6109cc610dca565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c686109f981610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8585856040518463ffffffff1660e01b8152600401610a569392919061191c565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b015750610b0082610dd7565b5b9050919050565b610b1981610b14610cd1565b610e41565b50565b610b27600080610e92565b565b610b3282610466565b610b3b81610b08565b610b458383610f82565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610b7c610cd1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea828261104f565b505050565b6000610bf9610826565b610c02426110d2565b610c0c9190611982565b9050610c18828261112c565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610c5e919061153f565b60405180910390a25050565b6000610c75826111df565b610c7e426110d2565b610c889190611982565b9050610c948282610e92565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610cc59291906117af565b60405180910390a15050565b600033905090565b600080610ce461092a565b91509150610cf181610b4b565b1580610d035750610d0181610b60565b155b15610d4557806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610d3c919061153f565b60405180910390fd5b610d596000801b610d54610660565b61104f565b50610d676000801b83610f82565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610db182610466565b610dba81610b08565b610dc4838361104f565b50505050565b610dd560008061112c565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e4b8282610699565b610e8e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610e859291906118d2565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610eb481610b4b565b15610f3357610ec281610b60565b15610f0557600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f32565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361103d57600073ffffffffffffffffffffffffffffffffffffffff16610fae610660565b73ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611047838361123e565b905092915050565b60008060001b831480156110955750611066610660565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110c057600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6110ca838361132f565b905092915050565b600065ffffffffffff8016821115611124576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161111b929190611a1d565b60405180910390fd5b819050919050565b600061113661092a565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506111a881610b4b565b156111da577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806111ea610826565b90508065ffffffffffff168365ffffffffffff161161121457828161120f9190611a46565b611236565b6112358365ffffffffffff16611228610443565b65ffffffffffff16611421565b5b915050919050565b600061124a8383610699565b61132457600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112c1610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611329565b600090505b92915050565b600061133b8383610699565b1561141657600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b3610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141b565b600090505b92915050565b60006114308284108484611438565b905092915050565b600061144384611452565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61149881611463565b81146114a357600080fd5b50565b6000813590506114b58161148f565b92915050565b6000602082840312156114d1576114d061145e565b5b60006114df848285016114a6565b91505092915050565b60008115159050919050565b6114fd816114e8565b82525050565b600060208201905061151860008301846114f4565b92915050565b600065ffffffffffff82169050919050565b6115398161151e565b82525050565b60006020820190506115546000830184611530565b92915050565b6000819050919050565b61156d8161155a565b811461157857600080fd5b50565b60008135905061158a81611564565b92915050565b6000602082840312156115a6576115a561145e565b5b60006115b48482850161157b565b91505092915050565b6115c68161155a565b82525050565b60006020820190506115e160008301846115bd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611612826115e7565b9050919050565b61162281611607565b811461162d57600080fd5b50565b60008135905061163f81611619565b92915050565b6000806040838503121561165c5761165b61145e565b5b600061166a8582860161157b565b925050602061167b85828601611630565b9150509250929050565b60006020828403121561169b5761169a61145e565b5b60006116a984828501611630565b91505092915050565b6116bb8161151e565b81146116c657600080fd5b50565b6000813590506116d8816116b2565b92915050565b6000602082840312156116f4576116f361145e565b5b6000611702848285016116c9565b91505092915050565b6000819050919050565b600061173061172b611726846115e7565b61170b565b6115e7565b9050919050565b600061174282611715565b9050919050565b600061175482611737565b9050919050565b61176481611749565b82525050565b600060208201905061177f600083018461175b565b92915050565b61178e81611607565b82525050565b60006020820190506117a96000830184611785565b92915050565b60006040820190506117c46000830185611530565b6117d16020830184611530565b9392505050565b600080604083850312156117ef576117ee61145e565b5b60006117fd85828601611630565b925050602061180e8582860161157b565b9150509250929050565b600060408201905061182d6000830185611785565b61183a6020830184611530565b9392505050565b600061184c82611607565b9050919050565b61185c81611841565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b6000806000606084860312156118985761189761145e565b5b60006118a686828701611630565b93505060206118b78682870161157b565b92505060406118c88682870161186a565b9150509250925092565b60006040820190506118e76000830185611785565b6118f460208301846115bd565b9392505050565b600061190682611737565b9050919050565b611916816118fb565b82525050565b60006060820190506119316000830186611785565b61193e60208301856115bd565b61194b604083018461190d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061198d8261151e565b91506119988361151e565b9250828201905065ffffffffffff8111156119b6576119b5611953565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006119ee6119e96119e4846119bc565b61170b565b6119c6565b9050919050565b6119fe816119d3565b82525050565b6000819050919050565b611a1781611a04565b82525050565b6000604082019050611a3260008301856119f5565b611a3f6020830184611a0e565b9392505050565b6000611a518261151e565b9150611a5c8361151e565b9250828203905065ffffffffffff811115611a7a57611a79611953565b5b9291505056fea26469706673582212204307e6557245d6962c4aa6df3b0d00da7f70a8fe6d588026bced90e93aa484cb64736f6c634300081c0033",
"linkReferences": {},
"deployedLinkReferences": {}
}