UNPKG

@gooddollar/goodcontracts

Version:
1,216 lines 129 kB
{ "contractName": "SafeMath", "abi": [], "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]}},\"version\":1}", "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058200c8b917de7a702bfd38c93b43e8fcd5c6ee9c7021873be9ae2f58ca9e7678d860029", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058200c8b917de7a702bfd38c93b43e8fcd5c6ee9c7021873be9ae2f58ca9e7678d860029", "sourceMap": "125:1726:67:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", "deployedSourceMap": "125:1726:67:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ 15919 ] }, "id": 15920, "nodeType": "SourceUnit", "nodes": [ { "id": 15793, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:67" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, "id": 15919, "linearizedBaseContracts": [ 15919 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 15825, "nodeType": "Block", "src": "296:354:67", "statements": [ { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15802, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15795, "src": "527:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 15803, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "532:1:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "527:6:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 15808, "nodeType": "IfStatement", "src": "523:45:67", "trueBody": { "id": 15807, "nodeType": "Block", "src": "535:33:67", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", "id": 15805, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "556:1:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 15801, "id": 15806, "nodeType": "Return", "src": "549:8:67" } ] } }, { "assignments": [ 15810 ], "declarations": [ { "constant": false, "id": 15810, "name": "c", "nodeType": "VariableDeclaration", "scope": 15825, "src": "578:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15809, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "578:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 15814, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15813, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15811, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15795, "src": "590:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 15812, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15797, "src": "594:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "590:5:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "578:17:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15816, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15810, "src": "613:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 15817, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15795, "src": "617:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "613:5:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 15819, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15797, "src": "622:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "613:10:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 15815, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 16785, 16786 ], "referencedDeclaration": 16785, "src": "605:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 15821, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "605:19:67", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15822, "nodeType": "ExpressionStatement", "src": "605:19:67" }, { "expression": { "argumentTypes": null, "id": 15823, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15810, "src": "642:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 15801, "id": 15824, "nodeType": "Return", "src": "635:8:67" } ] }, "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", "id": 15826, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { "id": 15798, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15795, "name": "a", "nodeType": "VariableDeclaration", "scope": 15826, "src": "242:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "242:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15797, "name": "b", "nodeType": "VariableDeclaration", "scope": 15826, "src": "253:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "253:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "241:22:67" }, "returnParameters": { "id": 15801, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15800, "name": "", "nodeType": "VariableDeclaration", "scope": 15826, "src": "287:7:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15799, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "287:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "286:9:67" }, "scope": 15919, "src": "229:421:67", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 15849, "nodeType": "Block", "src": "845:229:67", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15836, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15830, "src": "929:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 15837, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "933:1:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "929:5:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 15835, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 16785, 16786 ], "referencedDeclaration": 16785, "src": "921:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 15839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:14:67", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15840, "nodeType": "ExpressionStatement", "src": "921:14:67" }, { "assignments": [ 15842 ], "declarations": [ { "constant": false, "id": 15842, "name": "c", "nodeType": "VariableDeclaration", "scope": 15849, "src": "945:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15841, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "945:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 15846, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15845, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15843, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15828, "src": "957:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 15844, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15830, "src": "961:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "957:5:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "945:17:67" }, { "expression": { "argumentTypes": null, "id": 15847, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15842, "src": "1066:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 15834, "id": 15848, "nodeType": "Return", "src": "1059:8:67" } ] }, "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", "id": 15850, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { "id": 15831, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15828, "name": "a", "nodeType": "VariableDeclaration", "scope": 15850, "src": "791:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15827, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "791:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15830, "name": "b", "nodeType": "VariableDeclaration", "scope": 15850, "src": "802:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "790:22:67" }, "returnParameters": { "id": 15834, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15833, "name": "", "nodeType": "VariableDeclaration", "scope": 15850, "src": "836:7:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15832, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "836:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "835:9:67" }, "scope": 15919, "src": "778:296:67", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 15873, "nodeType": "Block", "src": "1272:78:67", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15860, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15854, "src": "1290:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 15861, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15852, "src": "1295:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1290:6:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 15859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 16785, 16786 ], "referencedDeclaration": 16785, "src": "1282:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 15863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1282:15:67", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 15864, "nodeType": "ExpressionStatement", "src": "1282:15:67" }, { "assignments": [ 15866 ], "declarations": [ { "constant": false, "id": 15866, "name": "c", "nodeType": "VariableDeclaration", "scope": 15873, "src": "1307:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15865, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1307:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 15870, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15867, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15852, "src": "1319:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 15868, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15854, "src": "1323:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1319:5:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1307:17:67" }, { "expression": { "argumentTypes": null, "id": 15871, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15866, "src": "1342:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 15858, "id": 15872, "nodeType": "Return", "src": "1335:8:67" } ] }, "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", "id": 15874, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { "id": 15855, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15852, "name": "a", "nodeType": "VariableDeclaration", "scope": 15874, "src": "1218:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1218:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 15854, "name": "b", "nodeType": "VariableDeclaration", "scope": 15874, "src": "1229:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15853, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1229:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1217:22:67" }, "returnParameters": { "id": 15858, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 15857, "name": "", "nodeType": "VariableDeclaration", "scope": 15874, "src": "1263:7:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1263:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1262:9:67" }, "scope": 15919, "src": "1205:145:67", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 15897, "nodeType": "Block", "src": "1498:78:67", "statements": [ { "assignments": [ 15884 ], "declarations": [ { "constant": false, "id": 15884, "name": "c", "nodeType": "VariableDeclaration", "scope": 15897, "src": "1508:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 15883, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1508:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 15888, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15885, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15876, "src": "1520:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 15886, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15878, "src": "1524:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1520:5:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1508:17:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 15892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 15890, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15884, "src": "1543:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 15891, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15876, "src": "1548:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1543:6:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "b