{
  "contractName": "ControllerInterface",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "unregisterScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getSchemeParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newController",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "upgradeController",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "removeGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "bytes32[]"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "genericAction",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amountInWei",
          "type": "uint256"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "sendEther",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "mintTokens",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenIncreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "unregisterSelf",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "int256"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "globalConstraintsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "getSchemePermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "isSchemeRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenDecreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_params",
          "type": "bytes32"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "addGlobalConstraint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_scheme",
          "type": "address"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_permissions",
          "type": "bytes4"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "registerScheme",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_globalConstraint",
          "type": "address"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "isGlobalConstraintRegistered",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_externalToken",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "externalTokenTransferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.4.18;\n\nimport \"./Avatar.sol\";\nimport \"./Reputation.sol\";\nimport \"./DAOToken.sol\";\nimport \"../globalConstraints/GlobalConstraintInterface.sol\";\n\n/**\n * @title Controller contract\n * @dev A controller controls the organizations tokens ,reputation and avatar.\n * It is subject to a set of schemes and constraints that determine its behavior.\n * Each scheme has it own parameters and operation permissions.\n */\ninterface ControllerInterface {\n\n    /**\n     * @dev mint reputation .\n     * @param  _amount amount of reputation to mint\n     * @param _beneficiary beneficiary address\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function mintReputation(int256 _amount, address _beneficiary,address _avatar)\n    public\n    returns(bool);\n\n    /**\n     * @dev mint tokens .\n     * @param  _amount amount of token to mint\n     * @param _beneficiary beneficiary address\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function mintTokens(uint256 _amount, address _beneficiary,address _avatar)\n    public\n    returns(bool);\n\n  /**\n   * @dev register or update a scheme\n   * @param _scheme the address of the scheme\n   * @param _paramsHash a hashed configuration of the usage of the scheme\n   * @param _permissions the permissions the new scheme will have\n   * @param _avatar address\n   * @return bool which represents a success\n   */\n    function registerScheme(address _scheme, bytes32 _paramsHash, bytes4 _permissions,address _avatar)\n    public\n    returns(bool);\n\n    /**\n     * @dev unregister a scheme\n     * @param _avatar address\n     * @param _scheme the address of the scheme\n     * @return bool which represents a success\n     */\n    function unregisterScheme(address _scheme,address _avatar)\n    public\n    returns(bool);\n    /**\n     * @dev unregister the caller's scheme\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function unregisterSelf(address _avatar) public returns(bool);\n\n    function isSchemeRegistered( address _scheme,address _avatar) public constant returns(bool);\n\n    function getSchemeParameters(address _scheme,address _avatar) public constant returns(bytes32);\n\n    function getSchemePermissions(address _scheme,address _avatar) public constant returns(bytes4);\n\n  // Global Contraints:\n    function globalConstraintsCount(address _avatar) public constant returns(uint);\n\n    function isGlobalConstraintRegistered(address _globalConstraint,address _avatar) public constant returns(bool);\n\n    /**\n     * @dev add or update Global Constraint\n     * @param _globalConstraint the address of the global constraint to be added.\n     * @param _params the constraint parameters hash.\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function addGlobalConstraint(address _globalConstraint, bytes32 _params,address _avatar)\n    public returns(bool);\n\n    /**\n     * @dev remove Global Constraint\n     * @param _globalConstraint the address of the global constraint to be remove.\n     * @param _avatar address\n     * @return bool which represents a success\n     */\n    function removeGlobalConstraint (address _globalConstraint,address _avatar)\n    public  returns(bool);\n\n  /**\n    * @dev upgrade the Controller\n    *      The function will trigger an event 'UpgradeController'.\n    * @param  _newController the address of the new controller.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function upgradeController(address _newController,address _avatar)\n    public returns(bool);\n    /**\n    * @dev do a generic delegate call to the contract which called us.\n    * This function use delegatecall and might expose the organization to security\n    * risk. Use this function only if you really knows what you are doing.\n    * @param _params the params for the call.\n    * @param _avatar address\n    * @return bool which represents success\n    */\n    function genericAction(bytes32[] _params,address _avatar)\n    public\n    returns(bool);\n  /**\n   * @dev send some ether\n   * @param _amountInWei the amount of ether (in Wei) to send\n   * @param _to address of the beneficiary\n   * @param _avatar address\n   * @return bool which represents a success\n   */\n    function sendEther(uint _amountInWei, address _to,address _avatar)\n    public returns(bool);\n\n    /**\n    * @dev send some amount of arbitrary ERC20 Tokens\n    * @param _externalToken the address of the Token Contract\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenTransfer(StandardToken _externalToken, address _to, uint _value,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev transfer token \"from\" address \"to\" address\n    *      One must to approve the amount of tokens which can be spend from the\n    *      \"from\" account.This can be done using externalTokenApprove.\n    * @param _externalToken the address of the Token Contract\n    * @param _from address of the account to send from\n    * @param _to address of the beneficiary\n    * @param _value the amount of ether (in Wei) to send\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenTransferFrom(StandardToken _externalToken, address _from, address _to, uint _value,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev increase approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _addedValue the amount of ether (in Wei) which the approval is referring to.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenIncreaseApproval(StandardToken _externalToken, address _spender, uint _addedValue,address _avatar)\n    public\n    returns(bool);\n\n    /**\n    * @dev decrease approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _subtractedValue the amount of ether (in Wei) which the approval is referring to.\n    * @param _avatar address\n    * @return bool which represents a success\n    */\n    function externalTokenDecreaseApproval(StandardToken _externalToken, address _spender, uint _subtractedValue,address _avatar)\n    public\n    returns(bool);\n}\n",
  "sourcePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/ControllerInterface.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/ControllerInterface.sol",
      "exportedSymbols": {
        "ControllerInterface": [
          5172
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 4969,
        "name": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "attributes": {
          "SourceUnit": 3874,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Avatar.sol",
          "file": "./Avatar.sol",
          "scope": 5173,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4970,
        "name": "ImportDirective",
        "src": "26:22:8"
      },
      {
        "attributes": {
          "SourceUnit": 5353,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Reputation.sol",
          "file": "./Reputation.sol",
          "scope": 5173,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4971,
        "name": "ImportDirective",
        "src": "49:26:8"
      },
      {
        "attributes": {
          "SourceUnit": 5208,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/DAOToken.sol",
          "file": "./DAOToken.sol",
          "scope": 5173,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4972,
        "name": "ImportDirective",
        "src": "76:24:8"
      },
      {
        "attributes": {
          "SourceUnit": 6699,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/globalConstraints/GlobalConstraintInterface.sol",
          "file": "../globalConstraints/GlobalConstraintInterface.sol",
          "scope": 5173,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4973,
        "name": "ImportDirective",
        "src": "101:60:8"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "documentation": "@title Controller contract\n@dev A controller controls the organizations tokens ,reputation and avatar.\nIt is subject to a set of schemes and constraints that determine its behavior.\nEach scheme has it own parameters and operation permissions.",
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            5172
          ],
          "name": "ControllerInterface",
          "scope": 5173
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "mintReputation",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4984,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int256",
                          "type": "int256"
                        },
                        "id": 4974,
                        "name": "ElementaryTypeName",
                        "src": "709:6:8"
                      }
                    ],
                    "id": 4975,
                    "name": "VariableDeclaration",
                    "src": "709:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4984,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4976,
                        "name": "ElementaryTypeName",
                        "src": "725:7:8"
                      }
                    ],
                    "id": 4977,
                    "name": "VariableDeclaration",
                    "src": "725:20:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4984,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4978,
                        "name": "ElementaryTypeName",
                        "src": "746:7:8"
                      }
                    ],
                    "id": 4979,
                    "name": "VariableDeclaration",
                    "src": "746:15:8"
                  }
                ],
                "id": 4980,
                "name": "ParameterList",
                "src": "708:54:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4984,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4981,
                        "name": "ElementaryTypeName",
                        "src": "786:4:8"
                      }
                    ],
                    "id": 4982,
                    "name": "VariableDeclaration",
                    "src": "786:4:8"
                  }
                ],
                "id": 4983,
                "name": "ParameterList",
                "src": "785:6:8"
              }
            ],
            "id": 4984,
            "name": "FunctionDefinition",
            "src": "685:107:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "mintTokens",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 4995,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4985,
                        "name": "ElementaryTypeName",
                        "src": "1031:7:8"
                      }
                    ],
                    "id": 4986,
                    "name": "VariableDeclaration",
                    "src": "1031:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_beneficiary",
                      "scope": 4995,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4987,
                        "name": "ElementaryTypeName",
                        "src": "1048:7:8"
                      }
                    ],
                    "id": 4988,
                    "name": "VariableDeclaration",
                    "src": "1048:20:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 4995,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4989,
                        "name": "ElementaryTypeName",
                        "src": "1069:7:8"
                      }
                    ],
                    "id": 4990,
                    "name": "VariableDeclaration",
                    "src": "1069:15:8"
                  }
                ],
                "id": 4991,
                "name": "ParameterList",
                "src": "1030:55:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4995,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4992,
                        "name": "ElementaryTypeName",
                        "src": "1109:4:8"
                      }
                    ],
                    "id": 4993,
                    "name": "VariableDeclaration",
                    "src": "1109:4:8"
                  }
                ],
                "id": 4994,
                "name": "ParameterList",
                "src": "1108:6:8"
              }
            ],
            "id": 4995,
            "name": "FunctionDefinition",
            "src": "1011:104:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "registerScheme",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 5008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4996,
                        "name": "ElementaryTypeName",
                        "src": "1454:7:8"
                      }
                    ],
                    "id": 4997,
                    "name": "VariableDeclaration",
                    "src": "1454:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_paramsHash",
                      "scope": 5008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4998,
                        "name": "ElementaryTypeName",
                        "src": "1471:7:8"
                      }
                    ],
                    "id": 4999,
                    "name": "VariableDeclaration",
                    "src": "1471:19:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_permissions",
                      "scope": 5008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 5000,
                        "name": "ElementaryTypeName",
                        "src": "1492:6:8"
                      }
                    ],
                    "id": 5001,
                    "name": "VariableDeclaration",
                    "src": "1492:19:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5002,
                        "name": "ElementaryTypeName",
                        "src": "1512:7:8"
                      }
                    ],
                    "id": 5003,
                    "name": "VariableDeclaration",
                    "src": "1512:15:8"
                  }
                ],
                "id": 5004,
                "name": "ParameterList",
                "src": "1453:75:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5005,
                        "name": "ElementaryTypeName",
                        "src": "1552:4:8"
                      }
                    ],
                    "id": 5006,
                    "name": "VariableDeclaration",
                    "src": "1552:4:8"
                  }
                ],
                "id": 5007,
                "name": "ParameterList",
                "src": "1551:6:8"
              }
            ],
            "id": 5008,
            "name": "FunctionDefinition",
            "src": "1430:128:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "unregisterScheme",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 5017,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5009,
                        "name": "ElementaryTypeName",
                        "src": "1763:7:8"
                      }
                    ],
                    "id": 5010,
                    "name": "VariableDeclaration",
                    "src": "1763:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5017,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5011,
                        "name": "ElementaryTypeName",
                        "src": "1779:7:8"
                      }
                    ],
                    "id": 5012,
                    "name": "VariableDeclaration",
                    "src": "1779:15:8"
                  }
                ],
                "id": 5013,
                "name": "ParameterList",
                "src": "1762:33:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5017,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5014,
                        "name": "ElementaryTypeName",
                        "src": "1819:4:8"
                      }
                    ],
                    "id": 5015,
                    "name": "VariableDeclaration",
                    "src": "1819:4:8"
                  }
                ],
                "id": 5016,
                "name": "ParameterList",
                "src": "1818:6:8"
              }
            ],
            "id": 5017,
            "name": "FunctionDefinition",
            "src": "1737:88:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "unregisterSelf",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5024,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5018,
                        "name": "ElementaryTypeName",
                        "src": "1990:7:8"
                      }
                    ],
                    "id": 5019,
                    "name": "VariableDeclaration",
                    "src": "1990:15:8"
                  }
                ],
                "id": 5020,
                "name": "ParameterList",
                "src": "1989:17:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5024,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5021,
                        "name": "ElementaryTypeName",
                        "src": "2022:4:8"
                      }
                    ],
                    "id": 5022,
                    "name": "VariableDeclaration",
                    "src": "2022:4:8"
                  }
                ],
                "id": 5023,
                "name": "ParameterList",
                "src": "2021:6:8"
              }
            ],
            "id": 5024,
            "name": "FunctionDefinition",
            "src": "1966:62:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isSchemeRegistered",
              "payable": false,
              "scope": 5172,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 5033,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5025,
                        "name": "ElementaryTypeName",
                        "src": "2063:7:8"
                      }
                    ],
                    "id": 5026,
                    "name": "VariableDeclaration",
                    "src": "2063:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5033,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5027,
                        "name": "ElementaryTypeName",
                        "src": "2079:7:8"
                      }
                    ],
                    "id": 5028,
                    "name": "VariableDeclaration",
                    "src": "2079:15:8"
                  }
                ],
                "id": 5029,
                "name": "ParameterList",
                "src": "2061:34:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5033,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5030,
                        "name": "ElementaryTypeName",
                        "src": "2120:4:8"
                      }
                    ],
                    "id": 5031,
                    "name": "VariableDeclaration",
                    "src": "2120:4:8"
                  }
                ],
                "id": 5032,
                "name": "ParameterList",
                "src": "2119:6:8"
              }
            ],
            "id": 5033,
            "name": "FunctionDefinition",
            "src": "2034:92:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemeParameters",
              "payable": false,
              "scope": 5172,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 5042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5034,
                        "name": "ElementaryTypeName",
                        "src": "2161:7:8"
                      }
                    ],
                    "id": 5035,
                    "name": "VariableDeclaration",
                    "src": "2161:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5036,
                        "name": "ElementaryTypeName",
                        "src": "2177:7:8"
                      }
                    ],
                    "id": 5037,
                    "name": "VariableDeclaration",
                    "src": "2177:15:8"
                  }
                ],
                "id": 5038,
                "name": "ParameterList",
                "src": "2160:33:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5039,
                        "name": "ElementaryTypeName",
                        "src": "2218:7:8"
                      }
                    ],
                    "id": 5040,
                    "name": "VariableDeclaration",
                    "src": "2218:7:8"
                  }
                ],
                "id": 5041,
                "name": "ParameterList",
                "src": "2217:9:8"
              }
            ],
            "id": 5042,
            "name": "FunctionDefinition",
            "src": "2132:95:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getSchemePermissions",
              "payable": false,
              "scope": 5172,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_scheme",
                      "scope": 5051,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5043,
                        "name": "ElementaryTypeName",
                        "src": "2263:7:8"
                      }
                    ],
                    "id": 5044,
                    "name": "VariableDeclaration",
                    "src": "2263:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5051,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5045,
                        "name": "ElementaryTypeName",
                        "src": "2279:7:8"
                      }
                    ],
                    "id": 5046,
                    "name": "VariableDeclaration",
                    "src": "2279:15:8"
                  }
                ],
                "id": 5047,
                "name": "ParameterList",
                "src": "2262:33:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5051,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 5048,
                        "name": "ElementaryTypeName",
                        "src": "2320:6:8"
                      }
                    ],
                    "id": 5049,
                    "name": "VariableDeclaration",
                    "src": "2320:6:8"
                  }
                ],
                "id": 5050,
                "name": "ParameterList",
                "src": "2319:8:8"
              }
            ],
            "id": 5051,
            "name": "FunctionDefinition",
            "src": "2233:95:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "globalConstraintsCount",
              "payable": false,
              "scope": 5172,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5058,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5052,
                        "name": "ElementaryTypeName",
                        "src": "2390:7:8"
                      }
                    ],
                    "id": 5053,
                    "name": "VariableDeclaration",
                    "src": "2390:15:8"
                  }
                ],
                "id": 5054,
                "name": "ParameterList",
                "src": "2389:17:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5058,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5055,
                        "name": "ElementaryTypeName",
                        "src": "2431:4:8"
                      }
                    ],
                    "id": 5056,
                    "name": "VariableDeclaration",
                    "src": "2431:4:8"
                  }
                ],
                "id": 5057,
                "name": "ParameterList",
                "src": "2430:6:8"
              }
            ],
            "id": 5058,
            "name": "FunctionDefinition",
            "src": "2358:79:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": true,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isGlobalConstraintRegistered",
              "payable": false,
              "scope": 5172,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 5067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5059,
                        "name": "ElementaryTypeName",
                        "src": "2481:7:8"
                      }
                    ],
                    "id": 5060,
                    "name": "VariableDeclaration",
                    "src": "2481:25:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5061,
                        "name": "ElementaryTypeName",
                        "src": "2507:7:8"
                      }
                    ],
                    "id": 5062,
                    "name": "VariableDeclaration",
                    "src": "2507:15:8"
                  }
                ],
                "id": 5063,
                "name": "ParameterList",
                "src": "2480:43:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5064,
                        "name": "ElementaryTypeName",
                        "src": "2548:4:8"
                      }
                    ],
                    "id": 5065,
                    "name": "VariableDeclaration",
                    "src": "2548:4:8"
                  }
                ],
                "id": 5066,
                "name": "ParameterList",
                "src": "2547:6:8"
              }
            ],
            "id": 5067,
            "name": "FunctionDefinition",
            "src": "2443:111:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "addGlobalConstraint",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 5078,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5068,
                        "name": "ElementaryTypeName",
                        "src": "2862:7:8"
                      }
                    ],
                    "id": 5069,
                    "name": "VariableDeclaration",
                    "src": "2862:25:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 5078,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5070,
                        "name": "ElementaryTypeName",
                        "src": "2889:7:8"
                      }
                    ],
                    "id": 5071,
                    "name": "VariableDeclaration",
                    "src": "2889:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5078,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5072,
                        "name": "ElementaryTypeName",
                        "src": "2905:7:8"
                      }
                    ],
                    "id": 5073,
                    "name": "VariableDeclaration",
                    "src": "2905:15:8"
                  }
                ],
                "id": 5074,
                "name": "ParameterList",
                "src": "2861:60:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5078,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5075,
                        "name": "ElementaryTypeName",
                        "src": "2941:4:8"
                      }
                    ],
                    "id": 5076,
                    "name": "VariableDeclaration",
                    "src": "2941:4:8"
                  }
                ],
                "id": 5077,
                "name": "ParameterList",
                "src": "2940:6:8"
              }
            ],
            "id": 5078,
            "name": "FunctionDefinition",
            "src": "2833:114:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "removeGlobalConstraint",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_globalConstraint",
                      "scope": 5087,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5079,
                        "name": "ElementaryTypeName",
                        "src": "3199:7:8"
                      }
                    ],
                    "id": 5080,
                    "name": "VariableDeclaration",
                    "src": "3199:25:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5087,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5081,
                        "name": "ElementaryTypeName",
                        "src": "3225:7:8"
                      }
                    ],
                    "id": 5082,
                    "name": "VariableDeclaration",
                    "src": "3225:15:8"
                  }
                ],
                "id": 5083,
                "name": "ParameterList",
                "src": "3198:43:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5087,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5084,
                        "name": "ElementaryTypeName",
                        "src": "3262:4:8"
                      }
                    ],
                    "id": 5085,
                    "name": "VariableDeclaration",
                    "src": "3262:4:8"
                  }
                ],
                "id": 5086,
                "name": "ParameterList",
                "src": "3261:6:8"
              }
            ],
            "id": 5087,
            "name": "FunctionDefinition",
            "src": "3166:102:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "upgradeController",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newController",
                      "scope": 5096,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5088,
                        "name": "ElementaryTypeName",
                        "src": "3554:7:8"
                      }
                    ],
                    "id": 5089,
                    "name": "VariableDeclaration",
                    "src": "3554:22:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5096,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5090,
                        "name": "ElementaryTypeName",
                        "src": "3577:7:8"
                      }
                    ],
                    "id": 5091,
                    "name": "VariableDeclaration",
                    "src": "3577:15:8"
                  }
                ],
                "id": 5092,
                "name": "ParameterList",
                "src": "3553:40:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5096,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5093,
                        "name": "ElementaryTypeName",
                        "src": "3613:4:8"
                      }
                    ],
                    "id": 5094,
                    "name": "VariableDeclaration",
                    "src": "3613:4:8"
                  }
                ],
                "id": 5095,
                "name": "ParameterList",
                "src": "3612:6:8"
              }
            ],
            "id": 5096,
            "name": "FunctionDefinition",
            "src": "3527:92:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "genericAction",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 5106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 5097,
                            "name": "ElementaryTypeName",
                            "src": "4010:7:8"
                          }
                        ],
                        "id": 5098,
                        "name": "ArrayTypeName",
                        "src": "4010:9:8"
                      }
                    ],
                    "id": 5099,
                    "name": "VariableDeclaration",
                    "src": "4010:17:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5100,
                        "name": "ElementaryTypeName",
                        "src": "4028:7:8"
                      }
                    ],
                    "id": 5101,
                    "name": "VariableDeclaration",
                    "src": "4028:15:8"
                  }
                ],
                "id": 5102,
                "name": "ParameterList",
                "src": "4009:35:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5106,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5103,
                        "name": "ElementaryTypeName",
                        "src": "4068:4:8"
                      }
                    ],
                    "id": 5104,
                    "name": "VariableDeclaration",
                    "src": "4068:4:8"
                  }
                ],
                "id": 5105,
                "name": "ParameterList",
                "src": "4067:6:8"
              }
            ],
            "id": 5106,
            "name": "FunctionDefinition",
            "src": "3987:87:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "sendEther",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amountInWei",
                      "scope": 5117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5107,
                        "name": "ElementaryTypeName",
                        "src": "4314:4:8"
                      }
                    ],
                    "id": 5108,
                    "name": "VariableDeclaration",
                    "src": "4314:17:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 5117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5109,
                        "name": "ElementaryTypeName",
                        "src": "4333:7:8"
                      }
                    ],
                    "id": 5110,
                    "name": "VariableDeclaration",
                    "src": "4333:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5111,
                        "name": "ElementaryTypeName",
                        "src": "4345:7:8"
                      }
                    ],
                    "id": 5112,
                    "name": "VariableDeclaration",
                    "src": "4345:15:8"
                  }
                ],
                "id": 5113,
                "name": "ParameterList",
                "src": "4313:48:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5114,
                        "name": "ElementaryTypeName",
                        "src": "4381:4:8"
                      }
                    ],
                    "id": 5115,
                    "name": "VariableDeclaration",
                    "src": "4381:4:8"
                  }
                ],
                "id": 5116,
                "name": "ParameterList",
                "src": "4380:6:8"
              }
            ],
            "id": 5117,
            "name": "FunctionDefinition",
            "src": "4295:92:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenTransfer",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 5130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 5118,
                        "name": "UserDefinedTypeName",
                        "src": "4731:13:8"
                      }
                    ],
                    "id": 5119,
                    "name": "VariableDeclaration",
                    "src": "4731:28:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 5130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5120,
                        "name": "ElementaryTypeName",
                        "src": "4761:7:8"
                      }
                    ],
                    "id": 5121,
                    "name": "VariableDeclaration",
                    "src": "4761:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 5130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5122,
                        "name": "ElementaryTypeName",
                        "src": "4774:4:8"
                      }
                    ],
                    "id": 5123,
                    "name": "VariableDeclaration",
                    "src": "4774:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5124,
                        "name": "ElementaryTypeName",
                        "src": "4786:7:8"
                      }
                    ],
                    "id": 5125,
                    "name": "VariableDeclaration",
                    "src": "4786:15:8"
                  }
                ],
                "id": 5126,
                "name": "ParameterList",
                "src": "4730:72:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5130,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5127,
                        "name": "ElementaryTypeName",
                        "src": "4826:4:8"
                      }
                    ],
                    "id": 5128,
                    "name": "VariableDeclaration",
                    "src": "4826:4:8"
                  }
                ],
                "id": 5129,
                "name": "ParameterList",
                "src": "4825:6:8"
              }
            ],
            "id": 5130,
            "name": "FunctionDefinition",
            "src": "4700:132:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenTransferFrom",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 5131,
                        "name": "UserDefinedTypeName",
                        "src": "5386:13:8"
                      }
                    ],
                    "id": 5132,
                    "name": "VariableDeclaration",
                    "src": "5386:28:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5133,
                        "name": "ElementaryTypeName",
                        "src": "5416:7:8"
                      }
                    ],
                    "id": 5134,
                    "name": "VariableDeclaration",
                    "src": "5416:13:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5135,
                        "name": "ElementaryTypeName",
                        "src": "5431:7:8"
                      }
                    ],
                    "id": 5136,
                    "name": "VariableDeclaration",
                    "src": "5431:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5137,
                        "name": "ElementaryTypeName",
                        "src": "5444:4:8"
                      }
                    ],
                    "id": 5138,
                    "name": "VariableDeclaration",
                    "src": "5444:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5139,
                        "name": "ElementaryTypeName",
                        "src": "5456:7:8"
                      }
                    ],
                    "id": 5140,
                    "name": "VariableDeclaration",
                    "src": "5456:15:8"
                  }
                ],
                "id": 5141,
                "name": "ParameterList",
                "src": "5385:87:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5145,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5142,
                        "name": "ElementaryTypeName",
                        "src": "5496:4:8"
                      }
                    ],
                    "id": 5143,
                    "name": "VariableDeclaration",
                    "src": "5496:4:8"
                  }
                ],
                "id": 5144,
                "name": "ParameterList",
                "src": "5495:6:8"
              }
            ],
            "id": 5145,
            "name": "FunctionDefinition",
            "src": "5351:151:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenIncreaseApproval",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 5158,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 5146,
                        "name": "UserDefinedTypeName",
                        "src": "5946:13:8"
                      }
                    ],
                    "id": 5147,
                    "name": "VariableDeclaration",
                    "src": "5946:28:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 5158,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5148,
                        "name": "ElementaryTypeName",
                        "src": "5976:7:8"
                      }
                    ],
                    "id": 5149,
                    "name": "VariableDeclaration",
                    "src": "5976:16:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_addedValue",
                      "scope": 5158,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5150,
                        "name": "ElementaryTypeName",
                        "src": "5994:4:8"
                      }
                    ],
                    "id": 5151,
                    "name": "VariableDeclaration",
                    "src": "5994:16:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5158,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5152,
                        "name": "ElementaryTypeName",
                        "src": "6011:7:8"
                      }
                    ],
                    "id": 5153,
                    "name": "VariableDeclaration",
                    "src": "6011:15:8"
                  }
                ],
                "id": 5154,
                "name": "ParameterList",
                "src": "5945:82:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5158,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5155,
                        "name": "ElementaryTypeName",
                        "src": "6051:4:8"
                      }
                    ],
                    "id": 5156,
                    "name": "VariableDeclaration",
                    "src": "6051:4:8"
                  }
                ],
                "id": 5157,
                "name": "ParameterList",
                "src": "6050:6:8"
              }
            ],
            "id": 5158,
            "name": "FunctionDefinition",
            "src": "5907:150:8"
          },
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "externalTokenDecreaseApproval",
              "payable": false,
              "scope": 5172,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 5171,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 5159,
                        "name": "UserDefinedTypeName",
                        "src": "6506:13:8"
                      }
                    ],
                    "id": 5160,
                    "name": "VariableDeclaration",
                    "src": "6506:28:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 5171,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5161,
                        "name": "ElementaryTypeName",
                        "src": "6536:7:8"
                      }
                    ],
                    "id": 5162,
                    "name": "VariableDeclaration",
                    "src": "6536:16:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_subtractedValue",
                      "scope": 5171,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 5163,
                        "name": "ElementaryTypeName",
                        "src": "6554:4:8"
                      }
                    ],
                    "id": 5164,
                    "name": "VariableDeclaration",
                    "src": "6554:21:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_avatar",
                      "scope": 5171,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 5165,
                        "name": "ElementaryTypeName",
                        "src": "6576:7:8"
                      }
                    ],
                    "id": 5166,
                    "name": "VariableDeclaration",
                    "src": "6576:15:8"
                  }
                ],
                "id": 5167,
                "name": "ParameterList",
                "src": "6505:87:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 5171,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5168,
                        "name": "ElementaryTypeName",
                        "src": "6616:4:8"
                      }
                    ],
                    "id": 5169,
                    "name": "VariableDeclaration",
                    "src": "6616:4:8"
                  }
                ],
                "id": 5170,
                "name": "ParameterList",
                "src": "6615:6:8"
              }
            ],
            "id": 5171,
            "name": "FunctionDefinition",
            "src": "6467:155:8"
          }
        ],
        "id": 5172,
        "name": "ContractDefinition",
        "src": "426:6198:8"
      }
    ],
    "id": 5173,
    "name": "SourceUnit",
    "src": "0:6625:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-04T21:57:39.055Z"
}