safe-react/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json

9121 lines
386 KiB
JSON

{
"contractName": "SocialRecoveryExtension",
"abi": [
{
"constant": true,
"inputs": [],
"name": "REPLACE_OWNER_FUNCTION_IDENTIFIER",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "threshold",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "isFriend",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "gnosisSafe",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
},
{
"name": "",
"type": "address"
}
],
"name": "isConfirmed",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "friends",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "isExecuted",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_friends",
"type": "address[]"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": false,
"inputs": [
{
"name": "_friends",
"type": "address[]"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "setup",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_masterCopy",
"type": "address"
}
],
"name": "changeMasterCopy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "dataHash",
"type": "bytes32"
}
],
"name": "confirmTransaction",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "sender",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
}
],
"name": "isExecutable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "dataHash",
"type": "bytes32"
}
],
"name": "isConfirmedByRequiredFriends",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "data",
"type": "bytes"
}
],
"name": "getDataHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x606060405234156200001057600080fd5b6040516200140738038062001407833981016040528080518201919060200180519060200190919050506200005a82826200006264010000000002620006a2176401000000009004565b505062000360565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515620000ab57600080fd5b82518260ff1611151515620000bf57600080fd5b60028260ff1610151515620000d357600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200025257600083828151811015156200013457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200016257600080fd5b6003600084838151811015156200017557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515620001d457600080fd5b6001600360008584815181101515620001e957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000119565b82600290805190602001906200026a9291906200028b565b5081600160146101000a81548160ff021916908360ff160217905550505050565b82805482825590600052602060002090810192821562000307579160200282015b82811115620003065782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002ac565b5b5090506200031691906200031a565b5090565b6200035d91905b808211156200035957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000321565b5090565b90565b61109780620003706000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029",
"deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029",
"sourceMap": "257:4890:6:-;;;1386:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:27;1492:8;1502:10;1486:5;;;;;:27;;;:::i;:::-;1386:134;;257:4890;;1717:669;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "257:4890:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;4481:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:916;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72:6;;;:::o;1717:669::-;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;572:22::-;;;;;;;;;;;;;:::o;695:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2835:181::-;1153:8;:20;1162:10;1153:20;;;;;;;;;;;;;;;;;;;;;;;;;1145:29;;;;;;;;2938:10;:20;2949:8;2938:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:21;2929:30;;;;;;;;3005:4;2969:11;:21;2981:8;2969:21;;;;;;;;;;;;;;;;;:33;2991:10;2969:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;2835:181;:::o;2532:190::-;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;2679:1;2663:11;2655:25;;;;2647:34;;;;;;;;2704:11;2691:10;;:24;;;;;;;;;;;;;;;;;;2532:190;:::o;4481:405::-;4582:4;4602:25;4642:9;4654:1;4642:13;;4637:221;4661:7;:14;;;;4657:1;:18;4637:221;;;4700:11;:21;4712:8;4700:21;;;;;;;;;;;;;;;;;:33;4722:7;4730:1;4722:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:33;;;;;;;;;;;;;;;;;;;;;;;;;4696:74;;;4751:19;;;;;;;4696:74;4809:9;;;;;;;;;;;4788:30;;:17;:30;4784:63;;;4843:4;4836:11;;;;4784:63;4677:3;;;;;;;4637:221;;;4874:5;4867:12;;4481:405;;;;;;:::o;310:57::-;;;;;;;;;;;;;;;;;;;;:::o;538:28::-;;;;;;;;;;;;;:::o;5015:130::-;5093:7;5133:4;5123:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5116:22:6;;5015:130;;;:::o;939:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:916::-;3568:4;3890:25;4085:16;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;3660:8;:16;3669:6;3660:16;;;;;;;;;;;;;;;;;;;;;;;;;3652:25;;;;;;;;3709:10;;;;;;;;;;;3695:25;;:2;:25;;;3687:34;;;;;;;;3748:1;3739:5;:10;3731:19;;;;;;;;3781:25;3768:38;;;;;;;;:9;:38;;;;;;;;;3760:47;;;;;;;;3986:4;3980;3976:3;3970:5;3948:44;;4041:33;4019:55;;;:18;:55;;;;4011:64;;;;;;;;4104:17;4116:4;4104:11;:17::i;:::-;4085:36;;4139:10;:20;4150:8;4139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:21;:75;;;;;4175:38;4204:8;4175:28;:38::i;:::-;4138:75;4131:161;;;4252:4;4229:10;:20;4240:8;4229:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4277:4;4270:11;;;;4131:161;4308:5;4301:12;;1099:1;3404:916;;;;;;;;;:::o;600:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;804:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;373:40::-;;;;;;;;;;;;;;;;;;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract SocialRecoveryExtension is Extension {\n\n string public constant NAME = \"Social Recovery Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n SocialRecoveryExtension masterCopy;\n GnosisSafe public gnosisSafe;\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function SocialRecoveryExtension(address[] _friends, uint8 _threshold)\n public\n {\n setup(_friends, _threshold);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n gnosisSafe = GnosisSafe(msg.sender);\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n require(_friends[i] != 0);\n require(!isFriend[_friends[i]]);\n isFriend[_friends[i]] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(SocialRecoveryExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param sender Friend's address.\n /// @param to Gnosis Safe address.\n /// @param value No Ether should be send.\n /// @param data Encoded owner replacement transaction.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[sender]);\n require(to == address(gnosisSafe));\n require(value == 0);\n require(operation == GnosisSafe.Operation.Call);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n if ( !isExecuted[dataHash]\n && isConfirmedByRequiredFriends(dataHash)) {\n isExecuted[dataHash] = true;\n return true;\n }\n return false;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n",
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol",
"exportedSymbols": {
"SocialRecoveryExtension": [
1759
]
},
"id": 1760,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1420,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:6"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "../Extension.sol",
"id": 1421,
"nodeType": "ImportDirective",
"scope": 1760,
"sourceUnit": 19,
"src": "24:26:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"file": "../GnosisSafe.sol",
"id": 1422,
"nodeType": "ImportDirective",
"scope": 1760,
"sourceUnit": 964,
"src": "51:27:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": [],
"baseName": {
"contractScope": null,
"id": 1423,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "293:9:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 1424,
"nodeType": "InheritanceSpecifier",
"src": "293:9:6"
}
],
"contractDependencies": [
18
],
"contractKind": "contract",
"documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 1759,
"linearizedBaseContracts": [
1759,
18
],
"name": "SocialRecoveryExtension",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1427,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "310:57:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1425,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "310:6:6",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "536f6369616c205265636f7665727920457874656e73696f6e",
"id": 1426,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "340:27:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda",
"typeString": "literal_string \"Social Recovery Extension\""
},
"value": "Social Recovery Extension"
},
"visibility": "public"
},
{
"constant": true,
"id": 1430,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "373:40:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1428,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "373:6:6",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1429,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "406:7:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": true,
"id": 1433,
"name": "REPLACE_OWNER_FUNCTION_IDENTIFIER",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "419:72:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1431,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "419:6:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"hexValue": "54e99c6e",
"id": 1432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "478:13:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911",
"typeString": "literal_string (contains invalid UTF-8 sequence at position 4)"
},
"value": null
},
"visibility": "public"
},
{
"constant": false,
"id": 1435,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "498:34:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
},
"typeName": {
"contractScope": null,
"id": 1434,
"name": "SocialRecoveryExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1759,
"src": "498:23:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1437,
"name": "gnosisSafe",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "538:28:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 1436,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "538:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1439,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "572:22:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1438,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "572:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1442,
"name": "friends",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "600:24:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
},
"typeName": {
"baseType": {
"id": 1440,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "600:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1441,
"length": null,
"nodeType": "ArrayTypeName",
"src": "600:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1446,
"name": "isFriend",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "695:41:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 1445,
"keyType": {
"id": 1443,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "704:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "695:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1444,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "715:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1450,
"name": "isExecuted",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "804:43:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 1449,
"keyType": {
"id": 1447,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "813:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "804:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 1448,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "824:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1456,
"name": "isConfirmed",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "939:65:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
},
"typeName": {
"id": 1455,
"keyType": {
"id": 1451,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "948:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "939:46:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
},
"valueType": {
"id": 1454,
"keyType": {
"id": 1452,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "968:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "959:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1453,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "979:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 1468,
"nodeType": "Block",
"src": "1037:70:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1459,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1055:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1055:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1462,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "1077:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1069:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1069:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1055:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1458,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1047:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1047:42:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1466,
"nodeType": "ExpressionStatement",
"src": "1047:42:6"
},
{
"id": 1467,
"nodeType": "PlaceholderStatement",
"src": "1099:1:6"
}
]
},
"id": 1469,
"name": "onlyGnosisSafe",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1457,
"nodeType": "ParameterList",
"parameters": [],
"src": "1034:2:6"
},
"src": "1011:96:6",
"visibility": "internal"
},
{
"body": {
"id": 1479,
"nodeType": "Block",
"src": "1135:57:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1472,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "1153:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1475,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1473,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1162:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1474,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1162:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1153:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1471,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1145:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1145:29:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1477,
"nodeType": "ExpressionStatement",
"src": "1145:29:6"
},
{
"id": 1478,
"nodeType": "PlaceholderStatement",
"src": "1184:1:6"
}
]
},
"id": 1480,
"name": "onlyFriend",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1470,
"nodeType": "ParameterList",
"parameters": [],
"src": "1132:2:6"
},
"src": "1113:79:6",
"visibility": "internal"
},
{
"body": {
"id": 1493,
"nodeType": "Block",
"src": "1476:44:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1489,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1483,
"src": "1492:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 1490,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1485,
"src": "1502:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1488,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1577,
"src": "1486:5:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$",
"typeString": "function (address[] memory,uint8)"
}
},
"id": 1491,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1486:27:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1492,
"nodeType": "ExpressionStatement",
"src": "1486:27:6"
}
]
},
"id": 1494,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "SocialRecoveryExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1486,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1483,
"name": "_friends",
"nodeType": "VariableDeclaration",
"scope": 1494,
"src": "1419:18:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1481,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1419:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1482,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1419:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1485,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1494,
"src": "1439:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1484,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1439:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1418:38:6"
},
"payable": false,
"returnParameters": {
"id": 1487,
"nodeType": "ParameterList",
"parameters": [],
"src": "1476:0:6"
},
"scope": 1759,
"src": "1386:134:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1576,
"nodeType": "Block",
"src": "1789:597:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1504,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "1951:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1503,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1943:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1943:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1506,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1966:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1943:24:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1502,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1935:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1935:33:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1509,
"nodeType": "ExpressionStatement",
"src": "1935:33:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1511,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "1986:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1512,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2000:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1513,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2000:15:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1986:29:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1510,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1978:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1515,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1978:38:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1516,
"nodeType": "ExpressionStatement",
"src": "1978:38:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1518,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "2034:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1519,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2048:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "2034:15:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1517,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2026:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1521,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2026:24:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1522,
"nodeType": "ExpressionStatement",
"src": "2026:24:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1523,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "2060:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1525,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "2084:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2084:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1524,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "2073:10:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2073:22:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "2060:35:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1529,
"nodeType": "ExpressionStatement",
"src": "2060:35:6"
},
{
"body": {
"id": 1566,
"nodeType": "Block",
"src": "2183:137:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1546,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1542,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2205:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1544,
"indexExpression": {
"argumentTypes": null,
"id": 1543,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2214:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2205:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1545,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2220:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2205:16:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1541,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2197:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2197:25:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1548,
"nodeType": "ExpressionStatement",
"src": "2197:25:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2244:22:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1550,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "2245:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1554,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1551,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2254:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1553,
"indexExpression": {
"argumentTypes": null,
"id": 1552,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2263:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2254:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2245:21:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1549,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2236:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1556,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2236:31:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1557,
"nodeType": "ExpressionStatement",
"src": "2236:31:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1558,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "2281:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1562,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1559,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2290:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1561,
"indexExpression": {
"argumentTypes": null,
"id": 1560,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2299:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2290:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2281:21:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2305:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2281:28:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1565,
"nodeType": "ExpressionStatement",
"src": "2281:28:6"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1537,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1534,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2157:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1535,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2161:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1536,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2161:15:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2157:19:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1567,
"initializationExpression": {
"assignments": [
1531
],
"declarations": [
{
"constant": false,
"id": 1531,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "2142:9:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1530,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2142:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1533,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2154:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2142:13:6"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2178:3:6",
"subExpression": {
"argumentTypes": null,
"id": 1538,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2178:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1540,
"nodeType": "ExpressionStatement",
"src": "2178:3:6"
},
"nodeType": "ForStatement",
"src": "2137:183:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1568,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "2329:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1569,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2339:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "2329:18:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1571,
"nodeType": "ExpressionStatement",
"src": "2329:18:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1572,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1439,
"src": "2357:9:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1573,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "2369:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2357:22:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1575,
"nodeType": "ExpressionStatement",
"src": "2357:22:6"
}
]
},
"id": 1577,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1500,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1497,
"name": "_friends",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "1732:18:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1495,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1732:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1496,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1732:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1499,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "1752:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1498,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1752:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1731:38:6"
},
"payable": false,
"returnParameters": {
"id": 1501,
"nodeType": "ParameterList",
"parameters": [],
"src": "1789:0:6"
},
"scope": 1759,
"src": "1717:669:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1596,
"nodeType": "Block",
"src": "2637:85:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1586,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1579,
"src": "2663:11:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
],
"id": 1585,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2655:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2655:20:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1588,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2679:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2655:25:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1584,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2647:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2647:34:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1591,
"nodeType": "ExpressionStatement",
"src": "2647:34:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1594,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1592,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1435,
"src": "2691:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1593,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1579,
"src": "2704:11:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"src": "2691:24:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"id": 1595,
"nodeType": "ExpressionStatement",
"src": "2691:24:6"
}
]
},
"id": 1597,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1582,
"modifierName": {
"argumentTypes": null,
"id": 1581,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1469,
"src": "2618:14:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2618:14:6"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1580,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1579,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1597,
"src": "2558:35:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
},
"typeName": {
"contractScope": null,
"id": 1578,
"name": "SocialRecoveryExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1759,
"src": "2558:23:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2557:37:6"
},
"payable": false,
"returnParameters": {
"id": 1583,
"nodeType": "ParameterList",
"parameters": [],
"src": "2637:0:6"
},
"scope": 1759,
"src": "2532:190:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1620,
"nodeType": "Block",
"src": "2919:97:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2937:21:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1605,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "2938:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1607,
"indexExpression": {
"argumentTypes": null,
"id": 1606,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1599,
"src": "2949:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2938:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1604,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2929:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2929:30:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1610,
"nodeType": "ExpressionStatement",
"src": "2929:30:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1611,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1456,
"src": "2969:11:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
}
},
"id": 1615,
"indexExpression": {
"argumentTypes": null,
"id": 1612,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1599,
"src": "2981:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2969:21:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1616,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1613,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "2991:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2991:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2969:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3005:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2969:40:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1619,
"nodeType": "ExpressionStatement",
"src": "2969:40:6"
}
]
},
"id": 1621,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1602,
"modifierName": {
"argumentTypes": null,
"id": 1601,
"name": "onlyFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1480,
"src": "2904:10:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2904:10:6"
}
],
"name": "confirmTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1599,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1621,
"src": "2863:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1598,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2863:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2862:18:6"
},
"payable": false,
"returnParameters": {
"id": 1603,
"nodeType": "ParameterList",
"parameters": [],
"src": "2919:0:6"
},
"scope": 1759,
"src": "2835:181:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1702,
"nodeType": "Block",
"src": "3578:742:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1639,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "3660:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1641,
"indexExpression": {
"argumentTypes": null,
"id": 1640,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1623,
"src": "3669:6:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3660:16:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3652:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3652:25:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1643,
"nodeType": "ExpressionStatement",
"src": "3652:25:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1645,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1625,
"src": "3695:2:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1647,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "3709:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1646,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3701:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3701:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3695:25:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1644,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3687:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3687:34:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1651,
"nodeType": "ExpressionStatement",
"src": "3687:34:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1655,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1653,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1627,
"src": "3739:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1654,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3748:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3739:10:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1652,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3731:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3731:19:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1657,
"nodeType": "ExpressionStatement",
"src": "3731:19:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 1663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1659,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1631,
"src": "3768:9:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1660,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "3781:10:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 61,
"src": "3781:20:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 1662,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3781:25:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "3768:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1658,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3760:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1664,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3760:47:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1665,
"nodeType": "ExpressionStatement",
"src": "3760:47:6"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1667,
"name": "functionIdentifier",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3890:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1666,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "3890:6:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1668,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3890:25:6"
},
{
"externalReferences": [
{
"functionIdentifier": {
"declaration": 1667,
"isOffset": false,
"isSlot": false,
"src": "3948:18:6",
"valueSize": 1
}
},
{
"data": {
"declaration": 1629,
"isOffset": false,
"isSlot": false,
"src": "3980:4:6",
"valueSize": 1
}
}
],
"id": 1669,
"nodeType": "InlineAssembly",
"operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}",
"src": "3925:93:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 1673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1671,
"name": "functionIdentifier",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1667,
"src": "4019:18:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1672,
"name": "REPLACE_OWNER_FUNCTION_IDENTIFIER",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1433,
"src": "4041:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4019:55:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1670,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4011:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4011:64:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1675,
"nodeType": "ExpressionStatement",
"src": "4011:64:6"
},
{
"assignments": [
1677
],
"declarations": [
{
"constant": false,
"id": 1677,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "4085:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1676,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4085:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1681,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1679,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1629,
"src": "4116:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1678,
"name": "getDataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1758,
"src": "4104:11:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 1680,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4104:17:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4085:36:6"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4138:21:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1682,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "4139:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1684,
"indexExpression": {
"argumentTypes": null,
"id": 1683,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4150:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4139:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1687,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4204:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 1686,
"name": "isConfirmedByRequiredFriends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1746,
"src": "4175:28:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
"typeString": "function (bytes32) view returns (bool)"
}
},
"id": 1688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4175:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "4138:75:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1699,
"nodeType": "IfStatement",
"src": "4131:161:6",
"trueBody": {
"id": 1698,
"nodeType": "Block",
"src": "4215:77:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1690,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "4229:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1692,
"indexExpression": {
"argumentTypes": null,
"id": 1691,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4240:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4229:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1693,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4252:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4229:27:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1695,
"nodeType": "ExpressionStatement",
"src": "4229:27:6"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1696,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4277:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1637,
"id": 1697,
"nodeType": "Return",
"src": "4270:11:6"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1700,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4308:5:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1637,
"id": 1701,
"nodeType": "Return",
"src": "4301:12:6"
}
]
},
"id": 1703,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1634,
"modifierName": {
"argumentTypes": null,
"id": 1633,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1469,
"src": "3536:14:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3536:14:6"
}
],
"name": "isExecutable",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1632,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1623,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3426:14:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1622,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3426:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1625,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3442:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1624,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3442:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1627,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3454:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1626,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3454:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1629,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3469:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1628,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3469:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1631,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3481:30:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 1630,
"name": "GnosisSafe.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "3481:20:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3425:87:6"
},
"payable": false,
"returnParameters": {
"id": 1637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1636,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3568:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1635,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3568:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3567:6:6"
},
"scope": 1759,
"src": "3404:916:6",
"stateMutability": "nonpayable",
"superFunction": 17,
"visibility": "public"
},
{
"body": {
"id": 1745,
"nodeType": "Block",
"src": "4592:294:6",
"statements": [
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1711,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4602:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1710,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4602:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1712,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "4602:25:6"
},
{
"body": {
"id": 1741,
"nodeType": "Block",
"src": "4682:176:6",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1724,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1456,
"src": "4700:11:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
}
},
"id": 1726,
"indexExpression": {
"argumentTypes": null,
"id": 1725,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1705,
"src": "4712:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4700:21:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1730,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1727,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "4722:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1729,
"indexExpression": {
"argumentTypes": null,
"id": 1728,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4730:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4722:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4700:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1734,
"nodeType": "IfStatement",
"src": "4696:74:6",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 1732,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4751:19:6",
"subExpression": {
"argumentTypes": null,
"id": 1731,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1711,
"src": "4751:17:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1733,
"nodeType": "ExpressionStatement",
"src": "4751:19:6"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1737,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1735,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1711,
"src": "4788:17:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1736,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1439,
"src": "4809:9:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4788:30:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1740,
"nodeType": "IfStatement",
"src": "4784:63:6",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1738,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4843:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1709,
"id": 1739,
"nodeType": "Return",
"src": "4836:11:6"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1717,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4657:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1718,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "4661:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1719,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4661:14:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4657:18:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1742,
"initializationExpression": {
"assignments": [
1714
],
"declarations": [
{
"constant": false,
"id": 1714,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4642:9:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1713,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4642:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1716,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4654:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "4642:13:6"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1722,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4677:3:6",
"subExpression": {
"argumentTypes": null,
"id": 1721,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4677:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1723,
"nodeType": "ExpressionStatement",
"src": "4677:3:6"
},
"nodeType": "ForStatement",
"src": "4637:221:6"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1743,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4874:5:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1709,
"id": 1744,
"nodeType": "Return",
"src": "4867:12:6"
}
]
},
"id": 1746,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isConfirmedByRequiredFriends",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1706,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1705,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4519:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1704,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4519:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4518:18:6"
},
"payable": false,
"returnParameters": {
"id": 1709,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1708,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4582:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1707,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4582:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4581:6:6"
},
"scope": 1759,
"src": "4481:405:6",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1757,
"nodeType": "Block",
"src": "5106:39:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1754,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1748,
"src": "5133:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1753,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2083,
"src": "5123:9:6",
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 1755,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5123:15:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 1752,
"id": 1756,
"nodeType": "Return",
"src": "5116:22:6"
}
]
},
"id": 1758,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getDataHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1749,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1748,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1758,
"src": "5036:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1747,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5036:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5035:12:6"
},
"payable": false,
"returnParameters": {
"id": 1752,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1751,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1758,
"src": "5093:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1750,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5093:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5092:9:6"
},
"scope": 1759,
"src": "5015:130:6",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1760,
"src": "257:4890:6"
}
],
"src": "0:5148:6"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol",
"exportedSymbols": {
"SocialRecoveryExtension": [
1759
]
},
"id": 1760,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1420,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:6"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "../Extension.sol",
"id": 1421,
"nodeType": "ImportDirective",
"scope": 1760,
"sourceUnit": 19,
"src": "24:26:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"file": "../GnosisSafe.sol",
"id": 1422,
"nodeType": "ImportDirective",
"scope": 1760,
"sourceUnit": 964,
"src": "51:27:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": [],
"baseName": {
"contractScope": null,
"id": 1423,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "293:9:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 1424,
"nodeType": "InheritanceSpecifier",
"src": "293:9:6"
}
],
"contractDependencies": [
18
],
"contractKind": "contract",
"documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 1759,
"linearizedBaseContracts": [
1759,
18
],
"name": "SocialRecoveryExtension",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1427,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "310:57:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1425,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "310:6:6",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "536f6369616c205265636f7665727920457874656e73696f6e",
"id": 1426,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "340:27:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda",
"typeString": "literal_string \"Social Recovery Extension\""
},
"value": "Social Recovery Extension"
},
"visibility": "public"
},
{
"constant": true,
"id": 1430,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "373:40:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1428,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "373:6:6",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1429,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "406:7:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": true,
"id": 1433,
"name": "REPLACE_OWNER_FUNCTION_IDENTIFIER",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "419:72:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1431,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "419:6:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"hexValue": "54e99c6e",
"id": 1432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "478:13:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911",
"typeString": "literal_string (contains invalid UTF-8 sequence at position 4)"
},
"value": null
},
"visibility": "public"
},
{
"constant": false,
"id": 1435,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "498:34:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
},
"typeName": {
"contractScope": null,
"id": 1434,
"name": "SocialRecoveryExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1759,
"src": "498:23:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1437,
"name": "gnosisSafe",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "538:28:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 1436,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "538:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1439,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "572:22:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1438,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "572:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1442,
"name": "friends",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "600:24:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
},
"typeName": {
"baseType": {
"id": 1440,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "600:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1441,
"length": null,
"nodeType": "ArrayTypeName",
"src": "600:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1446,
"name": "isFriend",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "695:41:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 1445,
"keyType": {
"id": 1443,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "704:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "695:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1444,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "715:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1450,
"name": "isExecuted",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "804:43:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 1449,
"keyType": {
"id": 1447,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "813:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "804:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 1448,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "824:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1456,
"name": "isConfirmed",
"nodeType": "VariableDeclaration",
"scope": 1759,
"src": "939:65:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
},
"typeName": {
"id": 1455,
"keyType": {
"id": 1451,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "948:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "939:46:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
},
"valueType": {
"id": 1454,
"keyType": {
"id": 1452,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "968:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "959:25:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 1453,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "979:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 1468,
"nodeType": "Block",
"src": "1037:70:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1459,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1055:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1055:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1462,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "1077:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1069:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1069:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1055:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1458,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1047:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1047:42:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1466,
"nodeType": "ExpressionStatement",
"src": "1047:42:6"
},
{
"id": 1467,
"nodeType": "PlaceholderStatement",
"src": "1099:1:6"
}
]
},
"id": 1469,
"name": "onlyGnosisSafe",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1457,
"nodeType": "ParameterList",
"parameters": [],
"src": "1034:2:6"
},
"src": "1011:96:6",
"visibility": "internal"
},
{
"body": {
"id": 1479,
"nodeType": "Block",
"src": "1135:57:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1472,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "1153:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1475,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1473,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1162:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1474,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1162:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1153:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1471,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1145:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1145:29:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1477,
"nodeType": "ExpressionStatement",
"src": "1145:29:6"
},
{
"id": 1478,
"nodeType": "PlaceholderStatement",
"src": "1184:1:6"
}
]
},
"id": 1480,
"name": "onlyFriend",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1470,
"nodeType": "ParameterList",
"parameters": [],
"src": "1132:2:6"
},
"src": "1113:79:6",
"visibility": "internal"
},
{
"body": {
"id": 1493,
"nodeType": "Block",
"src": "1476:44:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1489,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1483,
"src": "1492:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 1490,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1485,
"src": "1502:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1488,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1577,
"src": "1486:5:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$",
"typeString": "function (address[] memory,uint8)"
}
},
"id": 1491,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1486:27:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1492,
"nodeType": "ExpressionStatement",
"src": "1486:27:6"
}
]
},
"id": 1494,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "SocialRecoveryExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1486,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1483,
"name": "_friends",
"nodeType": "VariableDeclaration",
"scope": 1494,
"src": "1419:18:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1481,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1419:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1482,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1419:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1485,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1494,
"src": "1439:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1484,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1439:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1418:38:6"
},
"payable": false,
"returnParameters": {
"id": 1487,
"nodeType": "ParameterList",
"parameters": [],
"src": "1476:0:6"
},
"scope": 1759,
"src": "1386:134:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1576,
"nodeType": "Block",
"src": "1789:597:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1504,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "1951:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1503,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1943:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1943:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1506,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1966:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1943:24:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1502,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1935:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1935:33:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1509,
"nodeType": "ExpressionStatement",
"src": "1935:33:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1511,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "1986:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1512,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2000:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1513,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2000:15:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1986:29:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1510,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1978:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1515,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1978:38:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1516,
"nodeType": "ExpressionStatement",
"src": "1978:38:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1518,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "2034:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1519,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2048:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "2034:15:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1517,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2026:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1521,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2026:24:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1522,
"nodeType": "ExpressionStatement",
"src": "2026:24:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1523,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "2060:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1525,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "2084:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2084:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1524,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "2073:10:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2073:22:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "2060:35:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1529,
"nodeType": "ExpressionStatement",
"src": "2060:35:6"
},
{
"body": {
"id": 1566,
"nodeType": "Block",
"src": "2183:137:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1546,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1542,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2205:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1544,
"indexExpression": {
"argumentTypes": null,
"id": 1543,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2214:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2205:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1545,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2220:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2205:16:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1541,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2197:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2197:25:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1548,
"nodeType": "ExpressionStatement",
"src": "2197:25:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2244:22:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1550,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "2245:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1554,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1551,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2254:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1553,
"indexExpression": {
"argumentTypes": null,
"id": 1552,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2263:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2254:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2245:21:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1549,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2236:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1556,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2236:31:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1557,
"nodeType": "ExpressionStatement",
"src": "2236:31:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1558,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "2281:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1562,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1559,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2290:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1561,
"indexExpression": {
"argumentTypes": null,
"id": 1560,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2299:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2290:11:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2281:21:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2305:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2281:28:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1565,
"nodeType": "ExpressionStatement",
"src": "2281:28:6"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1537,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1534,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2157:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1535,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2161:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1536,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2161:15:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2157:19:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1567,
"initializationExpression": {
"assignments": [
1531
],
"declarations": [
{
"constant": false,
"id": 1531,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "2142:9:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1530,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2142:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1533,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2154:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2142:13:6"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2178:3:6",
"subExpression": {
"argumentTypes": null,
"id": 1538,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1531,
"src": "2178:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1540,
"nodeType": "ExpressionStatement",
"src": "2178:3:6"
},
"nodeType": "ForStatement",
"src": "2137:183:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1568,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "2329:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1569,
"name": "_friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1497,
"src": "2339:8:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "2329:18:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1571,
"nodeType": "ExpressionStatement",
"src": "2329:18:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1572,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1439,
"src": "2357:9:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1573,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1499,
"src": "2369:10:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2357:22:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1575,
"nodeType": "ExpressionStatement",
"src": "2357:22:6"
}
]
},
"id": 1577,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1500,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1497,
"name": "_friends",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "1732:18:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1495,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1732:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1496,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1732:9:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1499,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1577,
"src": "1752:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1498,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1752:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1731:38:6"
},
"payable": false,
"returnParameters": {
"id": 1501,
"nodeType": "ParameterList",
"parameters": [],
"src": "1789:0:6"
},
"scope": 1759,
"src": "1717:669:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1596,
"nodeType": "Block",
"src": "2637:85:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1586,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1579,
"src": "2663:11:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
],
"id": 1585,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2655:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2655:20:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1588,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2679:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2655:25:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1584,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2647:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2647:34:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1591,
"nodeType": "ExpressionStatement",
"src": "2647:34:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1594,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1592,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1435,
"src": "2691:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1593,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1579,
"src": "2704:11:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"src": "2691:24:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"id": 1595,
"nodeType": "ExpressionStatement",
"src": "2691:24:6"
}
]
},
"id": 1597,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1582,
"modifierName": {
"argumentTypes": null,
"id": 1581,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1469,
"src": "2618:14:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2618:14:6"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1580,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1579,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1597,
"src": "2558:35:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
},
"typeName": {
"contractScope": null,
"id": 1578,
"name": "SocialRecoveryExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1759,
"src": "2558:23:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759",
"typeString": "contract SocialRecoveryExtension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2557:37:6"
},
"payable": false,
"returnParameters": {
"id": 1583,
"nodeType": "ParameterList",
"parameters": [],
"src": "2637:0:6"
},
"scope": 1759,
"src": "2532:190:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1620,
"nodeType": "Block",
"src": "2919:97:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2937:21:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1605,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "2938:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1607,
"indexExpression": {
"argumentTypes": null,
"id": 1606,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1599,
"src": "2949:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2938:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1604,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2929:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2929:30:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1610,
"nodeType": "ExpressionStatement",
"src": "2929:30:6"
},
{
"expression": {
"argumentTypes": null,
"id": 1618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1611,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1456,
"src": "2969:11:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
}
},
"id": 1615,
"indexExpression": {
"argumentTypes": null,
"id": 1612,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1599,
"src": "2981:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2969:21:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1616,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1613,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "2991:3:6",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2991:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2969:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3005:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2969:40:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1619,
"nodeType": "ExpressionStatement",
"src": "2969:40:6"
}
]
},
"id": 1621,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1602,
"modifierName": {
"argumentTypes": null,
"id": 1601,
"name": "onlyFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1480,
"src": "2904:10:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2904:10:6"
}
],
"name": "confirmTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1599,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1621,
"src": "2863:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1598,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2863:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2862:18:6"
},
"payable": false,
"returnParameters": {
"id": 1603,
"nodeType": "ParameterList",
"parameters": [],
"src": "2919:0:6"
},
"scope": 1759,
"src": "2835:181:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1702,
"nodeType": "Block",
"src": "3578:742:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1639,
"name": "isFriend",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1446,
"src": "3660:8:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1641,
"indexExpression": {
"argumentTypes": null,
"id": 1640,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1623,
"src": "3669:6:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3660:16:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3652:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3652:25:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1643,
"nodeType": "ExpressionStatement",
"src": "3652:25:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1645,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1625,
"src": "3695:2:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1647,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1437,
"src": "3709:10:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1646,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3701:7:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3701:19:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3695:25:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1644,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3687:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3687:34:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1651,
"nodeType": "ExpressionStatement",
"src": "3687:34:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1655,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1653,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1627,
"src": "3739:5:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1654,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3748:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3739:10:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1652,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3731:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3731:19:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1657,
"nodeType": "ExpressionStatement",
"src": "3731:19:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 1663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1659,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1631,
"src": "3768:9:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1660,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "3781:10:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 61,
"src": "3781:20:6",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 1662,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3781:25:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "3768:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1658,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3760:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1664,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3760:47:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1665,
"nodeType": "ExpressionStatement",
"src": "3760:47:6"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1667,
"name": "functionIdentifier",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3890:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1666,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "3890:6:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1668,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3890:25:6"
},
{
"externalReferences": [
{
"functionIdentifier": {
"declaration": 1667,
"isOffset": false,
"isSlot": false,
"src": "3948:18:6",
"valueSize": 1
}
},
{
"data": {
"declaration": 1629,
"isOffset": false,
"isSlot": false,
"src": "3980:4:6",
"valueSize": 1
}
}
],
"id": 1669,
"nodeType": "InlineAssembly",
"operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}",
"src": "3925:93:6"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 1673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1671,
"name": "functionIdentifier",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1667,
"src": "4019:18:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1672,
"name": "REPLACE_OWNER_FUNCTION_IDENTIFIER",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1433,
"src": "4041:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4019:55:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1670,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4011:7:6",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4011:64:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1675,
"nodeType": "ExpressionStatement",
"src": "4011:64:6"
},
{
"assignments": [
1677
],
"declarations": [
{
"constant": false,
"id": 1677,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "4085:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1676,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4085:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1681,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1679,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1629,
"src": "4116:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1678,
"name": "getDataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1758,
"src": "4104:11:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 1680,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4104:17:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4085:36:6"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4138:21:6",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1682,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "4139:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1684,
"indexExpression": {
"argumentTypes": null,
"id": 1683,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4150:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4139:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1687,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4204:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 1686,
"name": "isConfirmedByRequiredFriends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1746,
"src": "4175:28:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
"typeString": "function (bytes32) view returns (bool)"
}
},
"id": 1688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4175:38:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "4138:75:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1699,
"nodeType": "IfStatement",
"src": "4131:161:6",
"trueBody": {
"id": 1698,
"nodeType": "Block",
"src": "4215:77:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1690,
"name": "isExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1450,
"src": "4229:10:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 1692,
"indexExpression": {
"argumentTypes": null,
"id": 1691,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1677,
"src": "4240:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4229:20:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1693,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4252:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4229:27:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1695,
"nodeType": "ExpressionStatement",
"src": "4229:27:6"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1696,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4277:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1637,
"id": 1697,
"nodeType": "Return",
"src": "4270:11:6"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1700,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4308:5:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1637,
"id": 1701,
"nodeType": "Return",
"src": "4301:12:6"
}
]
},
"id": 1703,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1634,
"modifierName": {
"argumentTypes": null,
"id": 1633,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1469,
"src": "3536:14:6",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3536:14:6"
}
],
"name": "isExecutable",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1632,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1623,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3426:14:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1622,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3426:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1625,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3442:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1624,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3442:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1627,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3454:13:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1626,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3454:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1629,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3469:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1628,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3469:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1631,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3481:30:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 1630,
"name": "GnosisSafe.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "3481:20:6",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3425:87:6"
},
"payable": false,
"returnParameters": {
"id": 1637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1636,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1703,
"src": "3568:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1635,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3568:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3567:6:6"
},
"scope": 1759,
"src": "3404:916:6",
"stateMutability": "nonpayable",
"superFunction": 17,
"visibility": "public"
},
{
"body": {
"id": 1745,
"nodeType": "Block",
"src": "4592:294:6",
"statements": [
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1711,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4602:25:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1710,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4602:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1712,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "4602:25:6"
},
{
"body": {
"id": 1741,
"nodeType": "Block",
"src": "4682:176:6",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1724,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1456,
"src": "4700:11:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
"typeString": "mapping(bytes32 => mapping(address => bool))"
}
},
"id": 1726,
"indexExpression": {
"argumentTypes": null,
"id": 1725,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1705,
"src": "4712:8:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4700:21:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1730,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1727,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "4722:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1729,
"indexExpression": {
"argumentTypes": null,
"id": 1728,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4730:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4722:10:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4700:33:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1734,
"nodeType": "IfStatement",
"src": "4696:74:6",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 1732,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4751:19:6",
"subExpression": {
"argumentTypes": null,
"id": 1731,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1711,
"src": "4751:17:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1733,
"nodeType": "ExpressionStatement",
"src": "4751:19:6"
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1737,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1735,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1711,
"src": "4788:17:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1736,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1439,
"src": "4809:9:6",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4788:30:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1740,
"nodeType": "IfStatement",
"src": "4784:63:6",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1738,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4843:4:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1709,
"id": 1739,
"nodeType": "Return",
"src": "4836:11:6"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1717,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4657:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1718,
"name": "friends",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1442,
"src": "4661:7:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 1719,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4661:14:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4657:18:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1742,
"initializationExpression": {
"assignments": [
1714
],
"declarations": [
{
"constant": false,
"id": 1714,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4642:9:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1713,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4642:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1716,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4654:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "4642:13:6"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1722,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4677:3:6",
"subExpression": {
"argumentTypes": null,
"id": 1721,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1714,
"src": "4677:1:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1723,
"nodeType": "ExpressionStatement",
"src": "4677:3:6"
},
"nodeType": "ForStatement",
"src": "4637:221:6"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1743,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4874:5:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1709,
"id": 1744,
"nodeType": "Return",
"src": "4867:12:6"
}
]
},
"id": 1746,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isConfirmedByRequiredFriends",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1706,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1705,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4519:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1704,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4519:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4518:18:6"
},
"payable": false,
"returnParameters": {
"id": 1709,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1708,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1746,
"src": "4582:4:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1707,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4582:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4581:6:6"
},
"scope": 1759,
"src": "4481:405:6",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1757,
"nodeType": "Block",
"src": "5106:39:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1754,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1748,
"src": "5133:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1753,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2083,
"src": "5123:9:6",
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 1755,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5123:15:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 1752,
"id": 1756,
"nodeType": "Return",
"src": "5116:22:6"
}
]
},
"id": 1758,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getDataHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1749,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1748,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1758,
"src": "5036:10:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1747,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5036:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5035:12:6"
},
"payable": false,
"returnParameters": {
"id": 1752,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1751,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1758,
"src": "5093:7:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1750,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5093:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5092:9:6"
},
"scope": 1759,
"src": "5015:130:6",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1760,
"src": "257:4890:6"
}
],
"src": "0:5148:6"
},
"compiler": {
"name": "solc",
"version": "0.4.19+commit.c4cbbb05.Emscripten.clang"
},
"networks": {
"4": {
"events": {},
"links": {},
"address": "0x0297aeb84568d3ab9d7b382240250dd0db22e05d",
"transactionHash": "0x85a0a0d054ba5a10091dabe072894eb0bc5f45b84927e8313094a600cabff0c6"
},
"42": {
"events": {},
"links": {},
"address": "0x1f3c28359e6018304b28fa46f5ef87f4b295939c",
"transactionHash": "0x9c32de35cd9321dbb7c9bb2aa35fd3a4199b08db6aae909ace4a5bf93392fd87"
},
"1525342778744": {
"events": {},
"links": {},
"address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b",
"transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc"
},
"1525789101965": {
"events": {},
"links": {},
"address": "0xf24ba0f83a48b995c7cac0d028e7db00bad3e42c",
"transactionHash": "0xeae217ba71df737e9f757f2a8918a4fe5f0e1c862ebe2a74f655e8f7ae25be15"
}
},
"schemaVersion": "2.0.0",
"updatedAt": "2018-05-08T14:18:44.029Z"
}