safe-react/safe-contracts/build/contracts/OwnerManager.json

9789 lines
414 KiB
JSON

{
"contractName": "OwnerManager",
"abi": [
{
"constant": true,
"inputs": [],
"name": "SENTINEL_OWNERS",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "addOwnerWithThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "prevOwner",
"type": "address"
},
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "removeOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "prevOwner",
"type": "address"
},
{
"name": "oldOwner",
"type": "address"
},
{
"name": "newOwner",
"type": "address"
}
],
"name": "swapOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "changeThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getThreshold",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOwners",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029",
"deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029",
"sourceMap": "240:5272:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:7;;;;;;;",
"deployedSourceMap": "240:5272:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5052:458:7;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o",
"source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - <stefan@gnosis.pm>\n/// @author Richard Meissner - <richard@gnosis.pm>\ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n",
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"exportedSymbols": {
"OwnerManager": [
1343
]
},
"id": 1344,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 973,
"literals": [
"solidity",
"0.4",
".23"
],
"nodeType": "PragmaDirective",
"src": "0:23:7"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol",
"file": "./SelfAuthorized.sol",
"id": 974,
"nodeType": "ImportDirective",
"scope": 1344,
"sourceUnit": 1360,
"src": "24:30:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 975,
"name": "SelfAuthorized",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1359,
"src": "265:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SelfAuthorized_$1359",
"typeString": "contract SelfAuthorized"
}
},
"id": 976,
"nodeType": "InheritanceSpecifier",
"src": "265:14:7"
}
],
"contractDependencies": [
1359
],
"contractKind": "contract",
"documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>",
"fullyImplemented": true,
"id": 1343,
"linearizedBaseContracts": [
1343,
1359
],
"name": "OwnerManager",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 981,
"name": "SENTINEL_OWNERS",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "287:54:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 977,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "287:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "307831",
"id": 979,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "337:3:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 978,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "329:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 980,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "329:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"constant": false,
"id": 985,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "348:43:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"typeName": {
"id": 984,
"keyType": {
"id": 982,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "356:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "348:27:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"valueType": {
"id": 983,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "367:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 987,
"name": "ownerCount",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "397:18:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 986,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "397:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 989,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "421:24:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 988,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "421:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"body": {
"id": 1082,
"nodeType": "Block",
"src": "720:946:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 998,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "862:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 999,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "875:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "862:14:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 997,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "854:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1001,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "854:23:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1002,
"nodeType": "ExpressionStatement",
"src": "854:23:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1004,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "970:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1005,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "984:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "984:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "970:28:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1003,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "962:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "962:37:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1009,
"nodeType": "ExpressionStatement",
"src": "962:37:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1011,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "1069:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1012,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1083:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1069:15:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1010,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1061:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1061:24:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1015,
"nodeType": "ExpressionStatement",
"src": "1061:24:7"
},
{
"assignments": [
1017
],
"declarations": [
{
"constant": false,
"id": 1017,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1132:20:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1016,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1132:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1019,
"initialValue": {
"argumentTypes": null,
"id": 1018,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1155:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1132:38:7"
},
{
"body": {
"id": 1065,
"nodeType": "Block",
"src": "1225:318:7",
"statements": [
{
"assignments": [
1032
],
"declarations": [
{
"constant": false,
"id": 1032,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1284:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1031,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1284:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1036,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1033,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1300:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1035,
"indexExpression": {
"argumentTypes": null,
"id": 1034,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1308:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1300:10:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1284:26:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1044,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1038,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1332:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1039,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1341:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1332:10:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1041,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1346:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1042,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1355:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1346:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1332:38:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1037,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1324:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1045,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1324:47:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1046,
"nodeType": "ExpressionStatement",
"src": "1324:47:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1048,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1437:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1050,
"indexExpression": {
"argumentTypes": null,
"id": 1049,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1444:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1437:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1051,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1454:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1437:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1047,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1429:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1429:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1054,
"nodeType": "ExpressionStatement",
"src": "1429:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1055,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1470:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1057,
"indexExpression": {
"argumentTypes": null,
"id": 1056,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1477:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1470:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1058,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1493:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1470:28:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1060,
"nodeType": "ExpressionStatement",
"src": "1470:28:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1063,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1061,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1512:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1062,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1527:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1512:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1064,
"nodeType": "ExpressionStatement",
"src": "1512:20:7"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1027,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1024,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1200:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1025,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1204:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1204:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1200:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1066,
"initializationExpression": {
"assignments": [
1021
],
"declarations": [
{
"constant": false,
"id": 1021,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1185:9:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1020,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1185:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1023,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1022,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1197:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1185:13:7"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1220:3:7",
"subExpression": {
"argumentTypes": null,
"id": 1028,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1220:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1030,
"nodeType": "ExpressionStatement",
"src": "1220:3:7"
},
"nodeType": "ForStatement",
"src": "1180:363:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1071,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1067,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1552:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1069,
"indexExpression": {
"argumentTypes": null,
"id": 1068,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1559:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1552:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1070,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1575:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1552:38:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1072,
"nodeType": "ExpressionStatement",
"src": "1552:38:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1076,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1073,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "1600:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1074,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1613:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1075,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1613:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1600:27:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1077,
"nodeType": "ExpressionStatement",
"src": "1600:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1078,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "1637:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1079,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "1649:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1637:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1081,
"nodeType": "ExpressionStatement",
"src": "1637:22:7"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.",
"id": 1083,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setupOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 995,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 992,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "662:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "662:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 991,
"length": null,
"nodeType": "ArrayTypeName",
"src": "662:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 994,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "681:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 993,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "681:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "661:37:7"
},
"payable": false,
"returnParameters": {
"id": 996,
"nodeType": "ParameterList",
"parameters": [],
"src": "720:0:7"
},
"scope": 1343,
"src": "641:1025:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1135,
"nodeType": "Block",
"src": "2008:426:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1093,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2067:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2076:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2067:10:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1096,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2081:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1097,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2090:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2081:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2067:38:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1092,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2059:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2059:47:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1101,
"nodeType": "ExpressionStatement",
"src": "2059:47:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1103,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2164:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1105,
"indexExpression": {
"argumentTypes": null,
"id": 1104,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2171:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2164:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2181:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2164:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1102,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2156:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2156:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1109,
"nodeType": "ExpressionStatement",
"src": "2156:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1110,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2193:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1112,
"indexExpression": {
"argumentTypes": null,
"id": 1111,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2200:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2193:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1113,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2209:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1115,
"indexExpression": {
"argumentTypes": null,
"id": 1114,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2216:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2209:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2193:39:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1117,
"nodeType": "ExpressionStatement",
"src": "2193:39:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1118,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2242:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1120,
"indexExpression": {
"argumentTypes": null,
"id": 1119,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2249:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2242:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1121,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2268:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2242:31:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1123,
"nodeType": "ExpressionStatement",
"src": "2242:31:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1125,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2283:12:7",
"subExpression": {
"argumentTypes": null,
"id": 1124,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "2283:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1126,
"nodeType": "ExpressionStatement",
"src": "2283:12:7"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1127,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "2363:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1128,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1087,
"src": "2376:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2363:23:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1134,
"nodeType": "IfStatement",
"src": "2359:68:7",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1131,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1087,
"src": "2416:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1130,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "2400:15:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2400:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1133,
"nodeType": "ExpressionStatement",
"src": "2400:27:7"
}
}
]
},
"documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.",
"id": 1136,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1090,
"modifierName": {
"argumentTypes": null,
"id": 1089,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "1993:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1993:10:7"
}
],
"name": "addOwnerWithThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1088,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1085,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1136,
"src": "1937:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1084,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1937:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1087,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1136,
"src": "1952:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1086,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1952:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1936:33:7"
},
"payable": false,
"returnParameters": {
"id": 1091,
"nodeType": "ParameterList",
"parameters": [],
"src": "2008:0:7"
},
"scope": 1343,
"src": "1906:528:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1188,
"nodeType": "Block",
"src": "2887:462:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1152,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1148,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "2982:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2995:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2982:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 1151,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3000:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2982:28:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1147,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2974:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2974:37:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1154,
"nodeType": "ExpressionStatement",
"src": "2974:37:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1156,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3091:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1158,
"indexExpression": {
"argumentTypes": null,
"id": 1157,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1138,
"src": "3098:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3091:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1159,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3112:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3091:26:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1155,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3083:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3083:35:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1162,
"nodeType": "ExpressionStatement",
"src": "3083:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1163,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3128:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1165,
"indexExpression": {
"argumentTypes": null,
"id": 1164,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1138,
"src": "3135:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3128:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1166,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3148:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1168,
"indexExpression": {
"argumentTypes": null,
"id": 1167,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3155:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3148:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3128:33:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1170,
"nodeType": "ExpressionStatement",
"src": "3128:33:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1171,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3171:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1173,
"indexExpression": {
"argumentTypes": null,
"id": 1172,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3178:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3171:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3187:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3171:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1176,
"nodeType": "ExpressionStatement",
"src": "3171:17:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1178,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "3198:12:7",
"subExpression": {
"argumentTypes": null,
"id": 1177,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "3198:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1179,
"nodeType": "ExpressionStatement",
"src": "3198:12:7"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1182,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1180,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "3278:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1181,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3291:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3278:23:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1187,
"nodeType": "IfStatement",
"src": "3274:68:7",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1184,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3331:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1183,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "3315:15:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3315:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1186,
"nodeType": "ExpressionStatement",
"src": "3315:27:7"
}
}
]
},
"documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.",
"id": 1189,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1145,
"modifierName": {
"argumentTypes": null,
"id": 1144,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "2872:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2872:10:7"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1143,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1138,
"name": "prevOwner",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2797:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1137,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2797:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1140,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2816:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1139,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2816:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1142,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2831:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1141,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2831:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2796:52:7"
},
"payable": false,
"returnParameters": {
"id": 1146,
"nodeType": "ParameterList",
"parameters": [],
"src": "2887:0:7"
},
"scope": 1343,
"src": "2776:573:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1246,
"nodeType": "Block",
"src": "3795:414:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1201,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3854:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1202,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3866:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3854:13:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1206,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1204,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3871:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1205,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "3883:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3871:27:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3854:44:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1200,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3846:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3846:53:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1209,
"nodeType": "ExpressionStatement",
"src": "3846:53:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1211,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3957:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1213,
"indexExpression": {
"argumentTypes": null,
"id": 1212,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3964:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3957:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3977:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3957:21:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1210,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3949:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3949:30:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1217,
"nodeType": "ExpressionStatement",
"src": "3949:30:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1219,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4059:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1221,
"indexExpression": {
"argumentTypes": null,
"id": 1220,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1191,
"src": "4066:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4059:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1222,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4080:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4059:29:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1218,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4051:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4051:38:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1225,
"nodeType": "ExpressionStatement",
"src": "4051:38:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1226,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4099:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1228,
"indexExpression": {
"argumentTypes": null,
"id": 1227,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "4106:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4099:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1229,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4118:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1231,
"indexExpression": {
"argumentTypes": null,
"id": 1230,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4125:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4118:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4099:35:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1233,
"nodeType": "ExpressionStatement",
"src": "4099:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1234,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4144:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1236,
"indexExpression": {
"argumentTypes": null,
"id": 1235,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1191,
"src": "4151:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4144:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1237,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "4164:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4144:28:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1239,
"nodeType": "ExpressionStatement",
"src": "4144:28:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1240,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4182:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1242,
"indexExpression": {
"argumentTypes": null,
"id": 1241,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4189:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4182:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4201:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4182:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1245,
"nodeType": "ExpressionStatement",
"src": "4182:20:7"
}
]
},
"documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.",
"id": 1247,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1198,
"modifierName": {
"argumentTypes": null,
"id": 1197,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "3780:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3780:10:7"
}
],
"name": "swapOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1196,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1191,
"name": "prevOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3702:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1190,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3702:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1193,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3721:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1192,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3721:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1195,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3739:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3739:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3701:55:7"
},
"payable": false,
"returnParameters": {
"id": 1199,
"nodeType": "ParameterList",
"parameters": [],
"src": "3795:0:7"
},
"scope": 1343,
"src": "3683:526:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1270,
"nodeType": "Block",
"src": "4479:237:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1255,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4566:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 1256,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "4580:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4566:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1254,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4558:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4558:33:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1259,
"nodeType": "ExpressionStatement",
"src": "4558:33:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1261,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4661:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4675:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4661:15:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1260,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4653:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4653:24:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1265,
"nodeType": "ExpressionStatement",
"src": "4653:24:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1266,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "4687:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1267,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4699:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4687:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1269,
"nodeType": "ExpressionStatement",
"src": "4687:22:7"
}
]
},
"documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.",
"id": 1271,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1252,
"modifierName": {
"argumentTypes": null,
"id": 1251,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4464:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4464:10:7"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1250,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1249,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1271,
"src": "4423:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1248,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4423:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4422:18:7"
},
"payable": false,
"returnParameters": {
"id": 1253,
"nodeType": "ParameterList",
"parameters": [],
"src": "4479:0:7"
},
"scope": 1343,
"src": "4398:318:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1278,
"nodeType": "Block",
"src": "4802:33:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1276,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "4819:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 1275,
"id": 1277,
"nodeType": "Return",
"src": "4812:16:7"
}
]
},
"documentation": null,
"id": 1279,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1272,
"nodeType": "ParameterList",
"parameters": [],
"src": "4743:2:7"
},
"payable": false,
"returnParameters": {
"id": 1275,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1274,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1279,
"src": "4791:5:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1273,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4791:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4790:7:7"
},
"scope": 1343,
"src": "4722:113:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1292,
"nodeType": "Block",
"src": "4928:42:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1286,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4945:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1288,
"indexExpression": {
"argumentTypes": null,
"id": 1287,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1281,
"src": "4952:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4945:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4962:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4945:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1285,
"id": 1291,
"nodeType": "Return",
"src": "4938:25:7"
}
]
},
"documentation": null,
"id": 1293,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1282,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1281,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1293,
"src": "4858:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1280,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4858:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4857:15:7"
},
"payable": false,
"returnParameters": {
"id": 1285,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1284,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1293,
"src": "4918:4:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1283,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4918:4:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4917:6:7"
},
"scope": 1343,
"src": "4841:129:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1341,
"nodeType": "Block",
"src": "5133:377:7",
"statements": [
{
"assignments": [
1302
],
"declarations": [
{
"constant": false,
"id": 1302,
"name": "array",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5143:22:7",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1300,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5143:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1301,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5143:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1308,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1306,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "5182:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "5168:13:7",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 1303,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5172:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1304,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5172:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 1307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5168:25:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5143:50:7"
},
{
"assignments": [
1310
],
"declarations": [
{
"constant": false,
"id": 1310,
"name": "index",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5237:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1309,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5237:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1312,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1311,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5253:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5237:17:7"
},
{
"assignments": [
1314
],
"declarations": [
{
"constant": false,
"id": 1314,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5264:20:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1313,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5264:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1318,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1315,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "5287:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1317,
"indexExpression": {
"argumentTypes": null,
"id": 1316,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "5294:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5287:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5264:46:7"
},
{
"body": {
"id": 1337,
"nodeType": "Block",
"src": "5359:123:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1326,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1322,
"name": "array",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1302,
"src": "5373:5:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1324,
"indexExpression": {
"argumentTypes": null,
"id": 1323,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1310,
"src": "5379:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5373:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1325,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5388:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5373:27:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1327,
"nodeType": "ExpressionStatement",
"src": "5373:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1328,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5414:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1329,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "5429:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1331,
"indexExpression": {
"argumentTypes": null,
"id": 1330,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5436:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5429:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5414:35:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1333,
"nodeType": "ExpressionStatement",
"src": "5414:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5463:8:7",
"subExpression": {
"argumentTypes": null,
"id": 1334,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1310,
"src": "5463:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1336,
"nodeType": "ExpressionStatement",
"src": "5463:8:7"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1319,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5326:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1320,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "5342:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5326:31:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1338,
"nodeType": "WhileStatement",
"src": "5320:162:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1339,
"name": "array",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1302,
"src": "5498:5:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 1298,
"id": 1340,
"nodeType": "Return",
"src": "5491:12:7"
}
]
},
"documentation": "@dev Returns array of owners.\n @return Array of Safe owners.",
"id": 1342,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1294,
"nodeType": "ParameterList",
"parameters": [],
"src": "5070:2:7"
},
"payable": false,
"returnParameters": {
"id": 1298,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1297,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5118:9:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1295,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5118:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1296,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5118:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5117:11:7"
},
"scope": 1343,
"src": "5052:458:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1344,
"src": "240:5272:7"
}
],
"src": "0:5513:7"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"exportedSymbols": {
"OwnerManager": [
1343
]
},
"id": 1344,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 973,
"literals": [
"solidity",
"0.4",
".23"
],
"nodeType": "PragmaDirective",
"src": "0:23:7"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol",
"file": "./SelfAuthorized.sol",
"id": 974,
"nodeType": "ImportDirective",
"scope": 1344,
"sourceUnit": 1360,
"src": "24:30:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 975,
"name": "SelfAuthorized",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1359,
"src": "265:14:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SelfAuthorized_$1359",
"typeString": "contract SelfAuthorized"
}
},
"id": 976,
"nodeType": "InheritanceSpecifier",
"src": "265:14:7"
}
],
"contractDependencies": [
1359
],
"contractKind": "contract",
"documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>",
"fullyImplemented": true,
"id": 1343,
"linearizedBaseContracts": [
1343,
1359
],
"name": "OwnerManager",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 981,
"name": "SENTINEL_OWNERS",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "287:54:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 977,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "287:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "307831",
"id": 979,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "337:3:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 978,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "329:7:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 980,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "329:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"constant": false,
"id": 985,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "348:43:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"typeName": {
"id": 984,
"keyType": {
"id": 982,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "356:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "348:27:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
},
"valueType": {
"id": 983,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "367:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 987,
"name": "ownerCount",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "397:18:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 986,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "397:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 989,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 1343,
"src": "421:24:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 988,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "421:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"body": {
"id": 1082,
"nodeType": "Block",
"src": "720:946:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 998,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "862:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 999,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "875:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "862:14:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 997,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "854:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1001,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "854:23:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1002,
"nodeType": "ExpressionStatement",
"src": "854:23:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1004,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "970:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1005,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "984:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "984:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "970:28:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1003,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "962:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "962:37:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1009,
"nodeType": "ExpressionStatement",
"src": "962:37:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1011,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "1069:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1012,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1083:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1069:15:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1010,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1061:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1061:24:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1015,
"nodeType": "ExpressionStatement",
"src": "1061:24:7"
},
{
"assignments": [
1017
],
"declarations": [
{
"constant": false,
"id": 1017,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1132:20:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1016,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1132:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1019,
"initialValue": {
"argumentTypes": null,
"id": 1018,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1155:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1132:38:7"
},
{
"body": {
"id": 1065,
"nodeType": "Block",
"src": "1225:318:7",
"statements": [
{
"assignments": [
1032
],
"declarations": [
{
"constant": false,
"id": 1032,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1284:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1031,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1284:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1036,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1033,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1300:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1035,
"indexExpression": {
"argumentTypes": null,
"id": 1034,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1308:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1300:10:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1284:26:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1044,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1038,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1332:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1039,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1341:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1332:10:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1041,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1346:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1042,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1355:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1346:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1332:38:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1037,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1324:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1045,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1324:47:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1046,
"nodeType": "ExpressionStatement",
"src": "1324:47:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1048,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1437:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1050,
"indexExpression": {
"argumentTypes": null,
"id": 1049,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1444:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1437:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1051,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1454:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1437:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1047,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "1429:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1429:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1054,
"nodeType": "ExpressionStatement",
"src": "1429:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1055,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1470:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1057,
"indexExpression": {
"argumentTypes": null,
"id": 1056,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1477:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1470:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1058,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1493:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1470:28:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1060,
"nodeType": "ExpressionStatement",
"src": "1470:28:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1063,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1061,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1512:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1062,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1032,
"src": "1527:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1512:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1064,
"nodeType": "ExpressionStatement",
"src": "1512:20:7"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1027,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1024,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1200:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1025,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1204:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1204:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1200:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1066,
"initializationExpression": {
"assignments": [
1021
],
"declarations": [
{
"constant": false,
"id": 1021,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "1185:9:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1020,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1185:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1023,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1022,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1197:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1185:13:7"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1220:3:7",
"subExpression": {
"argumentTypes": null,
"id": 1028,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1021,
"src": "1220:1:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1030,
"nodeType": "ExpressionStatement",
"src": "1220:3:7"
},
"nodeType": "ForStatement",
"src": "1180:363:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1071,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1067,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "1552:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1069,
"indexExpression": {
"argumentTypes": null,
"id": 1068,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "1559:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1552:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1070,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "1575:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1552:38:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1072,
"nodeType": "ExpressionStatement",
"src": "1552:38:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1076,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1073,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "1600:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1074,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 992,
"src": "1613:7:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1075,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1613:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1600:27:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1077,
"nodeType": "ExpressionStatement",
"src": "1600:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1078,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "1637:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1079,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 994,
"src": "1649:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1637:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1081,
"nodeType": "ExpressionStatement",
"src": "1637:22:7"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.",
"id": 1083,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setupOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 995,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 992,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "662:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "662:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 991,
"length": null,
"nodeType": "ArrayTypeName",
"src": "662:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 994,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "681:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 993,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "681:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "661:37:7"
},
"payable": false,
"returnParameters": {
"id": 996,
"nodeType": "ParameterList",
"parameters": [],
"src": "720:0:7"
},
"scope": 1343,
"src": "641:1025:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1135,
"nodeType": "Block",
"src": "2008:426:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1093,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2067:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2076:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2067:10:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1096,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2081:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1097,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2090:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2081:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2067:38:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1092,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2059:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2059:47:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1101,
"nodeType": "ExpressionStatement",
"src": "2059:47:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1103,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2164:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1105,
"indexExpression": {
"argumentTypes": null,
"id": 1104,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2171:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2164:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2181:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2164:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1102,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2156:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2156:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1109,
"nodeType": "ExpressionStatement",
"src": "2156:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1110,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2193:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1112,
"indexExpression": {
"argumentTypes": null,
"id": 1111,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2200:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2193:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1113,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2209:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1115,
"indexExpression": {
"argumentTypes": null,
"id": 1114,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2216:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2209:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2193:39:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1117,
"nodeType": "ExpressionStatement",
"src": "2193:39:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1118,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "2242:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1120,
"indexExpression": {
"argumentTypes": null,
"id": 1119,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "2249:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2242:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1121,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1085,
"src": "2268:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2242:31:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1123,
"nodeType": "ExpressionStatement",
"src": "2242:31:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1125,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2283:12:7",
"subExpression": {
"argumentTypes": null,
"id": 1124,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "2283:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1126,
"nodeType": "ExpressionStatement",
"src": "2283:12:7"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1127,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "2363:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1128,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1087,
"src": "2376:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2363:23:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1134,
"nodeType": "IfStatement",
"src": "2359:68:7",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1131,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1087,
"src": "2416:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1130,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "2400:15:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2400:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1133,
"nodeType": "ExpressionStatement",
"src": "2400:27:7"
}
}
]
},
"documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.",
"id": 1136,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1090,
"modifierName": {
"argumentTypes": null,
"id": 1089,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "1993:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1993:10:7"
}
],
"name": "addOwnerWithThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1088,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1085,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1136,
"src": "1937:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1084,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1937:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1087,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1136,
"src": "1952:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1086,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1952:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1936:33:7"
},
"payable": false,
"returnParameters": {
"id": 1091,
"nodeType": "ParameterList",
"parameters": [],
"src": "2008:0:7"
},
"scope": 1343,
"src": "1906:528:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1188,
"nodeType": "Block",
"src": "2887:462:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1152,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1148,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "2982:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2995:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2982:14:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 1151,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3000:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2982:28:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1147,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "2974:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2974:37:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1154,
"nodeType": "ExpressionStatement",
"src": "2974:37:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1156,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3091:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1158,
"indexExpression": {
"argumentTypes": null,
"id": 1157,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1138,
"src": "3098:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3091:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1159,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3112:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3091:26:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1155,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3083:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3083:35:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1162,
"nodeType": "ExpressionStatement",
"src": "3083:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1163,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3128:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1165,
"indexExpression": {
"argumentTypes": null,
"id": 1164,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1138,
"src": "3135:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3128:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1166,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3148:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1168,
"indexExpression": {
"argumentTypes": null,
"id": 1167,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3155:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3148:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3128:33:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1170,
"nodeType": "ExpressionStatement",
"src": "3128:33:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1171,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3171:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1173,
"indexExpression": {
"argumentTypes": null,
"id": 1172,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1140,
"src": "3178:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3171:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3187:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3171:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1176,
"nodeType": "ExpressionStatement",
"src": "3171:17:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1178,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "3198:12:7",
"subExpression": {
"argumentTypes": null,
"id": 1177,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "3198:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1179,
"nodeType": "ExpressionStatement",
"src": "3198:12:7"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1182,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1180,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "3278:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1181,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3291:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3278:23:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1187,
"nodeType": "IfStatement",
"src": "3274:68:7",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1184,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "3331:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1183,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1271,
"src": "3315:15:7",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 1185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3315:27:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1186,
"nodeType": "ExpressionStatement",
"src": "3315:27:7"
}
}
]
},
"documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.",
"id": 1189,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1145,
"modifierName": {
"argumentTypes": null,
"id": 1144,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "2872:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2872:10:7"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1143,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1138,
"name": "prevOwner",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2797:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1137,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2797:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1140,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2816:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1139,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2816:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1142,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1189,
"src": "2831:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1141,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2831:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2796:52:7"
},
"payable": false,
"returnParameters": {
"id": 1146,
"nodeType": "ParameterList",
"parameters": [],
"src": "2887:0:7"
},
"scope": 1343,
"src": "2776:573:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1246,
"nodeType": "Block",
"src": "3795:414:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1203,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1201,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3854:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1202,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3866:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3854:13:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1206,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1204,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3871:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1205,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "3883:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3871:27:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3854:44:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1200,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3846:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3846:53:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1209,
"nodeType": "ExpressionStatement",
"src": "3846:53:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1211,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "3957:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1213,
"indexExpression": {
"argumentTypes": null,
"id": 1212,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "3964:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3957:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3977:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3957:21:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1210,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "3949:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3949:30:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1217,
"nodeType": "ExpressionStatement",
"src": "3949:30:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1219,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4059:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1221,
"indexExpression": {
"argumentTypes": null,
"id": 1220,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1191,
"src": "4066:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4059:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1222,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4080:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4059:29:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1218,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4051:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4051:38:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1225,
"nodeType": "ExpressionStatement",
"src": "4051:38:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1226,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4099:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1228,
"indexExpression": {
"argumentTypes": null,
"id": 1227,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "4106:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4099:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1229,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4118:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1231,
"indexExpression": {
"argumentTypes": null,
"id": 1230,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4125:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4118:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4099:35:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1233,
"nodeType": "ExpressionStatement",
"src": "4099:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1234,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4144:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1236,
"indexExpression": {
"argumentTypes": null,
"id": 1235,
"name": "prevOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1191,
"src": "4151:9:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4144:17:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1237,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1195,
"src": "4164:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4144:28:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1239,
"nodeType": "ExpressionStatement",
"src": "4144:28:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1240,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4182:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1242,
"indexExpression": {
"argumentTypes": null,
"id": 1241,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1193,
"src": "4189:8:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4182:16:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4201:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4182:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1245,
"nodeType": "ExpressionStatement",
"src": "4182:20:7"
}
]
},
"documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.",
"id": 1247,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1198,
"modifierName": {
"argumentTypes": null,
"id": 1197,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "3780:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3780:10:7"
}
],
"name": "swapOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1196,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1191,
"name": "prevOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3702:17:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1190,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3702:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1193,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3721:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1192,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3721:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1195,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 1247,
"src": "3739:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1194,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3739:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3701:55:7"
},
"payable": false,
"returnParameters": {
"id": 1199,
"nodeType": "ParameterList",
"parameters": [],
"src": "3795:0:7"
},
"scope": 1343,
"src": "3683:526:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1270,
"nodeType": "Block",
"src": "4479:237:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1255,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4566:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 1256,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "4580:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4566:24:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1254,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4558:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4558:33:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1259,
"nodeType": "ExpressionStatement",
"src": "4558:33:7"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1261,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4661:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4675:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4661:15:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1260,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2399,
2400
],
"referencedDeclaration": 2399,
"src": "4653:7:7",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4653:24:7",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1265,
"nodeType": "ExpressionStatement",
"src": "4653:24:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1266,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "4687:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1267,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1249,
"src": "4699:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4687:22:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1269,
"nodeType": "ExpressionStatement",
"src": "4687:22:7"
}
]
},
"documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.",
"id": 1271,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1252,
"modifierName": {
"argumentTypes": null,
"id": 1251,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4464:10:7",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4464:10:7"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1250,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1249,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 1271,
"src": "4423:16:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1248,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4423:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4422:18:7"
},
"payable": false,
"returnParameters": {
"id": 1253,
"nodeType": "ParameterList",
"parameters": [],
"src": "4479:0:7"
},
"scope": 1343,
"src": "4398:318:7",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1278,
"nodeType": "Block",
"src": "4802:33:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1276,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "4819:9:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 1275,
"id": 1277,
"nodeType": "Return",
"src": "4812:16:7"
}
]
},
"documentation": null,
"id": 1279,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1272,
"nodeType": "ParameterList",
"parameters": [],
"src": "4743:2:7"
},
"payable": false,
"returnParameters": {
"id": 1275,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1274,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1279,
"src": "4791:5:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1273,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4791:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4790:7:7"
},
"scope": 1343,
"src": "4722:113:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1292,
"nodeType": "Block",
"src": "4928:42:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1286,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "4945:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1288,
"indexExpression": {
"argumentTypes": null,
"id": 1287,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1281,
"src": "4952:5:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4945:13:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4962:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4945:18:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 1285,
"id": 1291,
"nodeType": "Return",
"src": "4938:25:7"
}
]
},
"documentation": null,
"id": 1293,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "isOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1282,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1281,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 1293,
"src": "4858:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1280,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4858:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4857:15:7"
},
"payable": false,
"returnParameters": {
"id": 1285,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1284,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1293,
"src": "4918:4:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1283,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4918:4:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4917:6:7"
},
"scope": 1343,
"src": "4841:129:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1341,
"nodeType": "Block",
"src": "5133:377:7",
"statements": [
{
"assignments": [
1302
],
"declarations": [
{
"constant": false,
"id": 1302,
"name": "array",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5143:22:7",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1300,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5143:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1301,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5143:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1308,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1306,
"name": "ownerCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 987,
"src": "5182:10:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "5168:13:7",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 1303,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5172:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1304,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5172:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 1307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5168:25:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5143:50:7"
},
{
"assignments": [
1310
],
"declarations": [
{
"constant": false,
"id": 1310,
"name": "index",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5237:13:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1309,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5237:7:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1312,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1311,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5253:1:7",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "5237:17:7"
},
{
"assignments": [
1314
],
"declarations": [
{
"constant": false,
"id": 1314,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5264:20:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1313,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5264:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1318,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1315,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "5287:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1317,
"indexExpression": {
"argumentTypes": null,
"id": 1316,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "5294:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5287:23:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5264:46:7"
},
{
"body": {
"id": 1337,
"nodeType": "Block",
"src": "5359:123:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1326,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1322,
"name": "array",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1302,
"src": "5373:5:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1324,
"indexExpression": {
"argumentTypes": null,
"id": 1323,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1310,
"src": "5379:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5373:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1325,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5388:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5373:27:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1327,
"nodeType": "ExpressionStatement",
"src": "5373:27:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1328,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5414:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1329,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 985,
"src": "5429:6:7",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 1331,
"indexExpression": {
"argumentTypes": null,
"id": 1330,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5436:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5429:20:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5414:35:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1333,
"nodeType": "ExpressionStatement",
"src": "5414:35:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1335,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "5463:8:7",
"subExpression": {
"argumentTypes": null,
"id": 1334,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1310,
"src": "5463:5:7",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1336,
"nodeType": "ExpressionStatement",
"src": "5463:8:7"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1319,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1314,
"src": "5326:12:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 1320,
"name": "SENTINEL_OWNERS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 981,
"src": "5342:15:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5326:31:7",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1338,
"nodeType": "WhileStatement",
"src": "5320:162:7"
},
{
"expression": {
"argumentTypes": null,
"id": 1339,
"name": "array",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1302,
"src": "5498:5:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"functionReturnParameters": 1298,
"id": 1340,
"nodeType": "Return",
"src": "5491:12:7"
}
]
},
"documentation": "@dev Returns array of owners.\n @return Array of Safe owners.",
"id": 1342,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1294,
"nodeType": "ParameterList",
"parameters": [],
"src": "5070:2:7"
},
"payable": false,
"returnParameters": {
"id": 1298,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1297,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1342,
"src": "5118:9:7",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1295,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5118:7:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1296,
"length": null,
"nodeType": "ArrayTypeName",
"src": "5118:9:7",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5117:11:7"
},
"scope": 1343,
"src": "5052:458:7",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1344,
"src": "240:5272:7"
}
],
"src": "0:5513:7"
},
"compiler": {
"name": "solc",
"version": "0.4.23+commit.124ca40d.Emscripten.clang"
},
"networks": {},
"schemaVersion": "2.0.0",
"updatedAt": "2018-05-16T10:51:14.752Z"
}