{
  "contractName": "TokenGNO",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "spender",
          "type": "address"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "from",
          "type": "address"
        },
        {
          "name": "to",
          "type": "address"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "to",
          "type": "address"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "owner",
          "type": "address"
        },
        {
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806106148339810180604052602081101561003057600080fd5b50516002819055336000908152602081905260409020556105be806100566000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce567146101c257806370a08231146101e057806395d89b4114610206578063a9059cbb1461020e578063dd62ed3e1461023a576100b0565b806306fdde03146100b5578063095ea7b31461013257806318160ddd1461017257806323b872dd1461018c575b600080fd5b6100bd610268565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f75781810151838201526020016100df565b50505050905090810190601f1680156101245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015e6004803603604081101561014857600080fd5b50600160a060020a03813516906020013561029f565b604080519115158252519081900360200190f35b61017a610306565b60408051918252519081900360200190f35b61015e600480360360608110156101a257600080fd5b50600160a060020a0381358116916020810135909116906040013561030c565b6101ca610439565b6040805160ff9092168252519081900360200190f35b61017a600480360360208110156101f657600080fd5b5035600160a060020a031661043e565b6100bd610459565b61015e6004803603604081101561022457600080fd5b50600160a060020a038135169060200135610490565b61017a6004803603604081101561025057600080fd5b50600160a060020a038135811691602001351661055b565b60408051808201909152600681527f476e6f7369730000000000000000000000000000000000000000000000000000602082015281565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60025490565b600160a060020a038316600090815260208190526040812054610335908363ffffffff61058616565b15806103725750600160a060020a0384166000908152600160209081526040808320338452909152902054610370908363ffffffff61058616565b155b806103a35750600160a060020a0383166000908152602081905260409020546103a1908363ffffffff61058b16565b155b156103b057506000610432565b600160a060020a038085166000818152602081815260408083208054889003905560018252808320338452825280832080548890039055938716808352828252918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060015b9392505050565b601281565b600160a060020a031660009081526020819052604090205490565b60408051808201909152600381527f474e4f0000000000000000000000000000000000000000000000000000000000602082015281565b336000908152602081905260408120546104b0908363ffffffff61058616565b15806104e25750600160a060020a0383166000908152602081905260409020546104e0908363ffffffff61058b16565b155b156104ef57506000610300565b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b111590565b810110159056fea165627a7a72305820e94566656b6c82ae8876c9ffa7d8c6d05d9f8584956156122008dbbfa4beceb40029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b0576000357c010000000000000000000000000000000000000000000000000000000090048063313ce56711610083578063313ce567146101c257806370a08231146101e057806395d89b4114610206578063a9059cbb1461020e578063dd62ed3e1461023a576100b0565b806306fdde03146100b5578063095ea7b31461013257806318160ddd1461017257806323b872dd1461018c575b600080fd5b6100bd610268565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f75781810151838201526020016100df565b50505050905090810190601f1680156101245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015e6004803603604081101561014857600080fd5b50600160a060020a03813516906020013561029f565b604080519115158252519081900360200190f35b61017a610306565b60408051918252519081900360200190f35b61015e600480360360608110156101a257600080fd5b50600160a060020a0381358116916020810135909116906040013561030c565b6101ca610439565b6040805160ff9092168252519081900360200190f35b61017a600480360360208110156101f657600080fd5b5035600160a060020a031661043e565b6100bd610459565b61015e6004803603604081101561022457600080fd5b50600160a060020a038135169060200135610490565b61017a6004803603604081101561025057600080fd5b50600160a060020a038135811691602001351661055b565b60408051808201909152600681527f476e6f7369730000000000000000000000000000000000000000000000000000602082015281565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60025490565b600160a060020a038316600090815260208190526040812054610335908363ffffffff61058616565b15806103725750600160a060020a0384166000908152600160209081526040808320338452909152902054610370908363ffffffff61058616565b155b806103a35750600160a060020a0383166000908152602081905260409020546103a1908363ffffffff61058b16565b155b156103b057506000610432565b600160a060020a038085166000818152602081815260408083208054889003905560018252808320338452825280832080548890039055938716808352828252918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060015b9392505050565b601281565b600160a060020a031660009081526020819052604090205490565b60408051808201909152600381527f474e4f0000000000000000000000000000000000000000000000000000000000602082015281565b336000908152602081905260408120546104b0908363ffffffff61058616565b15806104e25750600160a060020a0383166000908152602081905260409020546104e0908363ffffffff61058b16565b155b156104ef57506000610300565b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b111590565b810110159056fea165627a7a72305820e94566656b6c82ae8876c9ffa7d8c6d05d9f8584956156122008dbbfa4beceb40029",
  "sourceMap": "96:286:2:-;;;272:108;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:108:2;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;272:108:2;314:11;:20;;;353:10;344:8;:20;;;272:108;344:20;;;;;;:29;96:286;;;;;;",
  "deployedSourceMap": "96:286:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;96:286:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;186:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:196:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2098:196:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2955:85;;;:::i;:::-;;;;;;;;;;;;;;;;1430:451;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1430:451:4;;;;;;;;;;;;;;;;;:::i;230:35:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2776:100:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2776:100:4;-1:-1:-1;;;;;2776:100:4;;:::i;143:37:2:-;;;:::i;785:333:4:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;785:333:4;;;;;;;;:::i;2504:128::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2504:128:4;;;;;;;;;;:::i;186:38:2:-;;;;;;;;;;;;;;;;;;;:::o;2098:196:4:-;2187:10;2160:4;2176:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;2176:31:4;;;;;;;;;;;:39;;;2230:36;;;;;;;2160:4;;2176:31;;2187:10;;2230:36;;;;;;;;-1:-1:-1;2283:4:4;2098:196;;;;;:::o;2955:85::-;3022:11;;2955:85;:::o;1430:451::-;-1:-1:-1;;;;;1527:14:4;;1506:4;1527:14;;;;;;;;;;;:31;;1552:5;1527:31;:24;:31;:::i;:::-;1526:32;:104;;;-1:-1:-1;;;;;;1563:16:4;;;;;;:10;:16;;;;;;;;1580:10;1563:28;;;;;;;;:67;;1615:5;1563:67;:38;:67;:::i;:::-;1562:68;1526:104;:138;;;-1:-1:-1;;;;;;1635:12:4;;:8;:12;;;;;;;;;;;:29;;1658:5;1635:29;:22;:29;:::i;:::-;1634:30;1526:138;1522:181;;;-1:-1:-1;1687:5:4;1680:12;;1522:181;-1:-1:-1;;;;;1712:14:4;;;:8;:14;;;;;;;;;;;:23;;;;;;;-1:-1:-1;1745:16:4;;;;;1762:10;1745:28;;;;;;;:37;;;;;;;1792:12;;;;;;;;;;;;;:21;;;;;;1828:25;;;;;;;1792:12;;1828:25;;;;;;;;;;;-1:-1:-1;1870:4:4;1430:451;;;;;;:::o;230:35:2:-;263:2;230:35;:::o;2776:100:4:-;-1:-1:-1;;;;;2854:15:4;2831:4;2854:15;;;;;;;;;;;;2776:100::o;143:37:2:-;;;;;;;;;;;;;;;;;;;:::o;785:333:4:-;873:10;843:4;864:20;;;;;;;;;;;:37;;895:5;864:37;:30;:37;:::i;:::-;863:38;:72;;;-1:-1:-1;;;;;;906:12:4;;:8;:12;;;;;;;;;;;:29;;929:5;906:29;:22;:29;:::i;:::-;905:30;863:72;859:115;;;-1:-1:-1;958:5:4;951:12;;859:115;993:10;984:8;:20;;;;;;;;;;;:29;;;;;;;-1:-1:-1;;;;;1023:12:4;;;;;;;;;:21;;;;;;1059:31;;;;;;;1023:12;;993:10;1059:31;;;;;;;;;;;-1:-1:-1;1107:4:4;785:333;;;;:::o;2504:128::-;-1:-1:-1;;;;;2599:17:4;;;2576:4;2599:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;2504:128::o;6580:94:5:-;-1:-1:-1;6661:6:5;;6580:94::o;6310:98::-;6391:5;;-1:-1:-1;6391:10:5;;6310:98::o",
  "source": "pragma solidity ^0.5.2;\n\nimport \"@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol\";\n\ncontract TokenGNO is GnosisStandardToken {\n    string public constant symbol = \"GNO\";\n    string public constant name = \"Gnosis\";\n    uint8 public constant decimals = 18;\n\n    constructor(uint amount) public {\n        totalTokens = amount;\n        balances[msg.sender] = amount;\n    }\n}\n",
  "sourcePath": "/Users/anxo/code/gnosis/gno-token/contracts/TokenGNO.sol",
  "ast": {
    "absolutePath": "/Users/anxo/code/gnosis/gno-token/contracts/TokenGNO.sol",
    "exportedSymbols": {
      "TokenGNO": [
        82
      ]
    },
    "id": 83,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 52,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:2"
      },
      {
        "absolutePath": "@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol",
        "file": "@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol",
        "id": 53,
        "nodeType": "ImportDirective",
        "scope": 83,
        "sourceUnit": 397,
        "src": "25:69:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 54,
              "name": "GnosisStandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 396,
              "src": "117:19:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GnosisStandardToken_$396",
                "typeString": "contract GnosisStandardToken"
              }
            },
            "id": 55,
            "nodeType": "InheritanceSpecifier",
            "src": "117:19:2"
          }
        ],
        "contractDependencies": [
          202,
          396,
          1630
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 82,
        "linearizedBaseContracts": [
          82,
          396,
          202,
          1630
        ],
        "name": "TokenGNO",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 58,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "143:37:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 56,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "143:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "474e4f",
              "id": 57,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "175:5:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a7176ea9ccab4e661d15bc0b1e10ef9f3120087c1d1c72680a3a84c988ac7124",
                "typeString": "literal_string \"GNO\""
              },
              "value": "GNO"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 61,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "186:38:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 59,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "186:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "476e6f736973",
              "id": 60,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "216:8:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_65575cda967aef5e4a766ba487099a1fa5acba87b34f560ea7a801adbe5d99a9",
                "typeString": "literal_string \"Gnosis\""
              },
              "value": "Gnosis"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 64,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "230:35:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 62,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "230:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3138",
              "id": 63,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "263:2:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 80,
              "nodeType": "Block",
              "src": "304:76:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 71,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 69,
                      "name": "totalTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 201,
                      "src": "314:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 70,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66,
                      "src": "328:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "314:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 72,
                  "nodeType": "ExpressionStatement",
                  "src": "314:20:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 78,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 193,
                        "src": "344:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 76,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 74,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1645,
                          "src": "353:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "353:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "344:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 77,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66,
                      "src": "367:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "344:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 79,
                  "nodeType": "ExpressionStatement",
                  "src": "344:29:2"
                }
              ]
            },
            "documentation": null,
            "id": 81,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 81,
                  "src": "284:11:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 65,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "283:13:2"
            },
            "returnParameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "304:0:2"
            },
            "scope": 82,
            "src": "272:108:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 83,
        "src": "96:286:2"
      }
    ],
    "src": "0:383:2"
  },
  "legacyAST": {
    "absolutePath": "/Users/anxo/code/gnosis/gno-token/contracts/TokenGNO.sol",
    "exportedSymbols": {
      "TokenGNO": [
        82
      ]
    },
    "id": 83,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 52,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:2"
      },
      {
        "absolutePath": "@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol",
        "file": "@gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol",
        "id": 53,
        "nodeType": "ImportDirective",
        "scope": 83,
        "sourceUnit": 397,
        "src": "25:69:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 54,
              "name": "GnosisStandardToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 396,
              "src": "117:19:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GnosisStandardToken_$396",
                "typeString": "contract GnosisStandardToken"
              }
            },
            "id": 55,
            "nodeType": "InheritanceSpecifier",
            "src": "117:19:2"
          }
        ],
        "contractDependencies": [
          202,
          396,
          1630
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 82,
        "linearizedBaseContracts": [
          82,
          396,
          202,
          1630
        ],
        "name": "TokenGNO",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 58,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "143:37:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 56,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "143:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "474e4f",
              "id": 57,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "175:5:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a7176ea9ccab4e661d15bc0b1e10ef9f3120087c1d1c72680a3a84c988ac7124",
                "typeString": "literal_string \"GNO\""
              },
              "value": "GNO"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 61,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "186:38:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 59,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "186:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "476e6f736973",
              "id": 60,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "216:8:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_65575cda967aef5e4a766ba487099a1fa5acba87b34f560ea7a801adbe5d99a9",
                "typeString": "literal_string \"Gnosis\""
              },
              "value": "Gnosis"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 64,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 82,
            "src": "230:35:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 62,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "230:5:2",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3138",
              "id": 63,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "263:2:2",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 80,
              "nodeType": "Block",
              "src": "304:76:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 71,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 69,
                      "name": "totalTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 201,
                      "src": "314:11:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 70,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66,
                      "src": "328:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "314:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 72,
                  "nodeType": "ExpressionStatement",
                  "src": "314:20:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 78,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 193,
                        "src": "344:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 76,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 74,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1645,
                          "src": "353:3:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "353:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "344:20:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 77,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66,
                      "src": "367:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "344:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 79,
                  "nodeType": "ExpressionStatement",
                  "src": "344:29:2"
                }
              ]
            },
            "documentation": null,
            "id": 81,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 81,
                  "src": "284:11:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 65,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "283:13:2"
            },
            "returnParameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "304:0:2"
            },
            "scope": 82,
            "src": "272:108:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 83,
        "src": "96:286:2"
      }
    ],
    "src": "0:383:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.2+commit.1df8f40c.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x6810e776880c02933d47db1b9fc05908e5386b96",
      "transactionHash": "0xa7838a091c7daa3033ec59a3f13bd8dc5b4c69d3b3ab33f486d06faae72a1606"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0xd0dab4e640d95e9e8a47545598c33e31bdb53c7c",
      "transactionHash": "0x6d142d88799961642e31e3fa14fc7b6f53b494c02ec5c016822c5b2549540026"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x6018bf616ec9db02f90c8c8529ddadc10a5c29dc",
      "transactionHash": "0x2f466d897f1d8d60afd72ec2eb4d8d94b13a371dfaeb2cc84132773bc9fe9cd4"
    }
  },
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-02-07T18:00:21.821Z",
  "devdoc": {
    "methods": {
      "allowance(address,address)": {
        "details": "Returns number of allowed tokens for given address",
        "params": {
          "owner": "Address of token owner",
          "spender": "Address of token spender"
        },
        "return": "Remaining allowance for spender"
      },
      "approve(address,uint256)": {
        "details": "Sets approved amount of tokens for spender. Returns success",
        "params": {
          "spender": "Address of allowed account",
          "value": "Number of approved tokens"
        },
        "return": "Was approval successful?"
      },
      "balanceOf(address)": {
        "details": "Returns number of tokens owned by given address",
        "params": {
          "owner": "Address of token owner"
        },
        "return": "Balance of owner"
      },
      "totalSupply()": {
        "details": "Returns total supply of tokens",
        "return": "Total supply"
      },
      "transfer(address,uint256)": {
        "details": "Transfers sender's tokens to a given address. Returns success",
        "params": {
          "to": "Address of token receiver",
          "value": "Number of tokens to transfer"
        },
        "return": "Was transfer successful?"
      },
      "transferFrom(address,address,uint256)": {
        "details": "Allows allowed third party to transfer tokens from one address to another. Returns success",
        "params": {
          "from": "Address from where tokens are withdrawn",
          "to": "Address to where tokens are sent",
          "value": "Number of tokens to transfer"
        },
        "return": "Was transfer successful?"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}
