{
  "contractName": "PolymathRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "storedAddresses",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tokenContract",
          "type": "address"
        }
      ],
      "name": "reclaimERC20",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_nameKey",
          "type": "string"
        },
        {
          "indexed": true,
          "name": "_oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_newAddress",
          "type": "address"
        }
      ],
      "name": "LogChangeAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_nameKey",
          "type": "string"
        }
      ],
      "name": "getAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_nameKey",
          "type": "string"
        },
        {
          "name": "_newAddress",
          "type": "address"
        }
      ],
      "name": "changeAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160a060020a0319163317905561071a806100256000396000f3006080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636c47e36f8114610087578063715018a6146100bb5780638905fd4f146100d25780638da5cb5b146100f3578063a7dbb40214610108578063bf40fac11461016c578063f2fde38b146101c5575b600080fd5b34801561009357600080fd5b5061009f6004356101e6565b60408051600160a060020a039092168252519081900360200190f35b3480156100c757600080fd5b506100d0610201565b005b3480156100de57600080fd5b506100d0600160a060020a036004351661026d565b3480156100ff57600080fd5b5061009f6103dc565b34801561011457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100d094369492936024939284019190819084018382808284375094975050509235600160a060020a031693506103eb92505050565b34801561017857600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009f9436949293602493928401919081908401838280828437509497506105499650505050505050565b3480156101d157600080fd5b506100d0600160a060020a036004351661064e565b600160205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461021857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080548190600160a060020a0316331461028757600080fd5b600160a060020a038316151561029c57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050506040513d602081101561032a57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d60208110156103ca57600080fd5b505115156103d757600080fd5b505050565b600054600160a060020a031681565b60008054600160a060020a0316331461040357600080fd5b826040518082805190602001908083835b602083106104335780518252601f199092019160209182019101610414565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600081815260018352858120548385528b51858501528b51929950600160a060020a038b811699501696507f38575ca154acfc441b9e175568ded9b32501025df333c637fb24985161f53981958b9550849390840192908601918190849084905b838110156104d35781810151838201526020016104bb565b50505050905090810190601f1680156105005780820380516001836020036101000a031916815260200191505b509250505060405180910390a36000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b600080826040518082805190602001908083835b6020831061057c5780518252601f19909201916020918201910161055d565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260019092529290205491945050600160a060020a031615159150610630905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c69642061646472657373206b657900000000000000000000000000604482015290519081900360640190fd5b600090815260016020526040902054600160a060020a031692915050565b600054600160a060020a0316331461066557600080fd5b61066e81610671565b50565b600160a060020a038116151561068657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582036012523b165508c3f9ffedf85f80543bde25e5815ae9b9a9e0a2ed36407566d0029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636c47e36f8114610087578063715018a6146100bb5780638905fd4f146100d25780638da5cb5b146100f3578063a7dbb40214610108578063bf40fac11461016c578063f2fde38b146101c5575b600080fd5b34801561009357600080fd5b5061009f6004356101e6565b60408051600160a060020a039092168252519081900360200190f35b3480156100c757600080fd5b506100d0610201565b005b3480156100de57600080fd5b506100d0600160a060020a036004351661026d565b3480156100ff57600080fd5b5061009f6103dc565b34801561011457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100d094369492936024939284019190819084018382808284375094975050509235600160a060020a031693506103eb92505050565b34801561017857600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009f9436949293602493928401919081908401838280828437509497506105499650505050505050565b3480156101d157600080fd5b506100d0600160a060020a036004351661064e565b600160205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461021857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080548190600160a060020a0316331461028757600080fd5b600160a060020a038316151561029c57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050506040513d602081101561032a57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b505050506040513d60208110156103ca57600080fd5b505115156103d757600080fd5b505050565b600054600160a060020a031681565b60008054600160a060020a0316331461040357600080fd5b826040518082805190602001908083835b602083106104335780518252601f199092019160209182019101610414565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600081815260018352858120548385528b51858501528b51929950600160a060020a038b811699501696507f38575ca154acfc441b9e175568ded9b32501025df333c637fb24985161f53981958b9550849390840192908601918190849084905b838110156104d35781810151838201526020016104bb565b50505050905090810190601f1680156105005780820380516001836020036101000a031916815260200191505b509250505060405180910390a36000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b600080826040518082805190602001908083835b6020831061057c5780518252601f19909201916020918201910161055d565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260019092529290205491945050600160a060020a031615159150610630905057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c69642061646472657373206b657900000000000000000000000000604482015290519081900360640190fd5b600090815260016020526040902054600160a060020a031692915050565b600054600160a060020a0316331461066557600080fd5b61066e81610671565b50565b600160a060020a038116151561068657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582036012523b165508c3f9ffedf85f80543bde25e5815ae9b9a9e0a2ed36407566d0029",
  "sourceMap": "146:1039:3:-;;;567:5:64;:18;;-1:-1:-1;;;;;;567:18:64;575:10;567:18;;;146:1039:3;;;;;;",
  "deployedSourceMap": "146:1039:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;196:51:3;;;;;;;;;-1:-1:-1;;;;;196:51:3;;;;;;;;;;;;;;827:111:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:111:64;;;;;;426:281:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;426:281:4;-1:-1:-1;;;;;426:281:4;;;;;238:20:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:64;;;;926:255:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;926:255:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;926:255:3;;-1:-1:-1;;;926:255:3;;-1:-1:-1;;;;;926:255:3;;-1:-1:-1;926:255:3;;-1:-1:-1;;;926:255:3;504:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;504:236:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;504:236:3;;-1:-1:-1;504:236:3;;-1:-1:-1;;;;;;;504:236:3;1100:103:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1100:103:64;-1:-1:-1;;;;;1100:103:64;;;;;196:51:3;;;;;;;;;;;;-1:-1:-1;;;;;196:51:3;;:::o;827:111:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;903:5;;;884:25;;-1:-1:-1;;;;;903:5:64;;;;884:25;;;931:1;915:18;;-1:-1:-1;;915:18:64;;;827:111::o;426:281:4:-;548:16;719:5:64;;548:16:4;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;509:28:4;;;;501:37;;;;;;621:30;;;;;;645:4;621:30;;;;;;578:14;;-1:-1:-1;;;;;;621:15:4;;;;;:30;;;;;;;;;;;;;;-1:-1:-1;621:15:4;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;621:30:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;621:30:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;621:30:4;684:5;;;669:30;;;;;;-1:-1:-1;;;;;684:5:4;;;669:30;;;;;;;;;;;;621;;-1:-1:-1;669:14:4;;;;;;:30;;;;;621;;669;;;;;;;;;;;:14;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;669:30:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;669:30:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;669:30:4;661:39;;;;;;;;426:281;;;:::o;238:20:64:-;;;-1:-1:-1;;;;;238:20:64;;:::o;926:255:3:-;1014:11;719:5:64;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;1044:8:3;1028:26;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1028:26:3;;;;;;;;;;;;-1:-1:-1;1096:20:3;;;274:1:-1;1096:20:3;;;;;;1069:61;;;;;;;;;;;1028:26;;-1:-1:-1;;;;;;1069:61:3;;;;-1:-1:-1;1096:20:3;;-1:-1:-1;1069:61:3;;;;-1:-1:-1;1028:26:3;;1069:61;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1069:61:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:20;;;;:15;:20;;;;;:34;;-1:-1:-1;;1140:34:3;-1:-1:-1;;;;;1140:34:3;;;;;;;;;;-1:-1:-1;926:255:3:o;504:236::-;561:7;580:11;610:8;594:26;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;594:26:3;;;;;;;;;;;;;-1:-1:-1;638:20:3;;;274:1:-1;638:20:3;;;;;;;594:26;;-1:-1:-1;;;;;;;638:20:3;:34;;;-1:-1:-1;630:66:3;;-1:-1:-1;630:66:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;713:20;;;;:15;:20;;;;;;-1:-1:-1;;;;;713:20:3;;504:236;-1:-1:-1;;504:236:3:o;1100:103:64:-;719:5;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;1169:29;1188:9;1169:18;:29::i;:::-;1100:103;:::o;1338:171::-;-1:-1:-1;;;;;1408:23:64;;;;1400:32;;;;;;1464:5;;;1443:38;;-1:-1:-1;;;;;1443:38:64;;;;1464:5;;;1443:38;;;1487:5;:17;;-1:-1:-1;;1487:17:64;-1:-1:-1;;;;;1487:17:64;;;;;;;;;;1338:171::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./Pausable.sol\";\nimport \"./ReclaimTokens.sol\";\n\n/**\n * @title Core functionality for registry upgradability\n */\ncontract PolymathRegistry is ReclaimTokens {\n\n    mapping (bytes32 => address) public storedAddresses;\n\n    event LogChangeAddress(string _nameKey, address indexed _oldAddress, address indexed _newAddress);\n\n    /**\n     * @notice Get the contract address\n     * @param _nameKey is the key for the contract address mapping\n     * @return address\n     */\n    function getAddress(string _nameKey) view public returns(address) {\n        bytes32 key = keccak256(bytes(_nameKey));\n        require(storedAddresses[key] != address(0), \"Invalid address key\");\n        return storedAddresses[key];\n    }\n\n    /**\n     * @notice change the contract address\n     * @param _nameKey is the key for the contract address mapping\n     * @param _newAddress is the new contract address\n     */\n    function changeAddress(string _nameKey, address _newAddress) public onlyOwner {\n        bytes32 key = keccak256(bytes(_nameKey));\n        emit LogChangeAddress(_nameKey, storedAddresses[key], _newAddress);\n        storedAddresses[key] = _newAddress;\n    }\n\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/PolymathRegistry.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/PolymathRegistry.sol",
    "exportedSymbols": {
      "PolymathRegistry": [
        553
      ]
    },
    "id": 554,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 473,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/Pausable.sol",
        "file": "./Pausable.sol",
        "id": 474,
        "nodeType": "ImportDirective",
        "scope": 554,
        "sourceUnit": 472,
        "src": "26:24:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ReclaimTokens.sol",
        "file": "./ReclaimTokens.sol",
        "id": 475,
        "nodeType": "ImportDirective",
        "scope": 554,
        "sourceUnit": 600,
        "src": "51:29:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 476,
              "name": "ReclaimTokens",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 599,
              "src": "175:13:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReclaimTokens_$599",
                "typeString": "contract ReclaimTokens"
              }
            },
            "id": 477,
            "nodeType": "InheritanceSpecifier",
            "src": "175:13:3"
          }
        ],
        "contractDependencies": [
          599,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Core functionality for registry upgradability",
        "fullyImplemented": true,
        "id": 553,
        "linearizedBaseContracts": [
          553,
          599,
          22664
        ],
        "name": "PolymathRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 481,
            "name": "storedAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 553,
            "src": "196:51:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 480,
              "keyType": {
                "id": 478,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "205:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "196:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 479,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "216:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 489,
            "name": "LogChangeAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 483,
                  "indexed": false,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "277:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "277:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 485,
                  "indexed": true,
                  "name": "_oldAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "294:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 484,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "294:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 487,
                  "indexed": true,
                  "name": "_newAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "323:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 486,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "276:75:3"
            },
            "src": "254:98:3"
          },
          {
            "body": {
              "id": 519,
              "nodeType": "Block",
              "src": "570:170:3",
              "statements": [
                {
                  "assignments": [
                    497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 497,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 520,
                      "src": "580:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 496,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "580:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 503,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 500,
                            "name": "_nameKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 491,
                            "src": "610:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "604:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "604:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 498,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "594:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "594:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "580:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 505,
                            "name": "storedAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "638:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 507,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 506,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "654:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "638:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "670:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "662:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "662:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "638:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642061646472657373206b6579",
                        "id": 512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "674:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2d5cad5c8c2d42d040c96dc019ee2c8acdbf7bebadf6e564f83201ca477a0d4e",
                          "typeString": "literal_string \"Invalid address key\""
                        },
                        "value": "Invalid address key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2d5cad5c8c2d42d040c96dc019ee2c8acdbf7bebadf6e564f83201ca477a0d4e",
                          "typeString": "literal_string \"Invalid address key\""
                        }
                      ],
                      "id": 504,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "630:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "630:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 514,
                  "nodeType": "ExpressionStatement",
                  "src": "630:66:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 515,
                      "name": "storedAddresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 481,
                      "src": "713:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 517,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 516,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 497,
                      "src": "729:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "713:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 495,
                  "id": 518,
                  "nodeType": "Return",
                  "src": "706:27:3"
                }
              ]
            },
            "documentation": "@notice Get the contract address\n@param _nameKey is the key for the contract address mapping\n@return address",
            "id": 520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 491,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "524:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 490,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "523:17:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 494,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "561:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "560:9:3"
            },
            "scope": 553,
            "src": "504:236:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 551,
              "nodeType": "Block",
              "src": "1004:177:3",
              "statements": [
                {
                  "assignments": [
                    530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 530,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 552,
                      "src": "1014:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 529,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1014:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 536,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 533,
                            "name": "_nameKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 522,
                            "src": "1044:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1038:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1038:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 531,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "1028:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1028:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1014:40:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 538,
                        "name": "_nameKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 522,
                        "src": "1086:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 539,
                          "name": "storedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 481,
                          "src": "1096:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 541,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 540,
                          "name": "key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 530,
                          "src": "1112:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1096:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 542,
                        "name": "_newAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 524,
                        "src": "1118:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 537,
                      "name": "LogChangeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 489,
                      "src": "1069:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address,address)"
                      }
                    },
                    "id": 543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1069:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 544,
                  "nodeType": "EmitStatement",
                  "src": "1064:66:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 545,
                        "name": "storedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 481,
                        "src": "1140:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 546,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 530,
                        "src": "1156:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1140:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 548,
                      "name": "_newAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 524,
                      "src": "1163:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1140:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 550,
                  "nodeType": "ExpressionStatement",
                  "src": "1140:34:3"
                }
              ]
            },
            "documentation": "@notice change the contract address\n@param _nameKey is the key for the contract address mapping\n@param _newAddress is the new contract address",
            "id": 552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 527,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 526,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "994:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "994:9:3"
              }
            ],
            "name": "changeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 522,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 552,
                  "src": "949:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 521,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "949:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 524,
                  "name": "_newAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 552,
                  "src": "966:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "948:38:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1004:0:3"
            },
            "scope": 553,
            "src": "926:255:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 554,
        "src": "146:1039:3"
      }
    ],
    "src": "0:1186:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/PolymathRegistry.sol",
    "exportedSymbols": {
      "PolymathRegistry": [
        553
      ]
    },
    "id": 554,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 473,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/Pausable.sol",
        "file": "./Pausable.sol",
        "id": 474,
        "nodeType": "ImportDirective",
        "scope": 554,
        "sourceUnit": 472,
        "src": "26:24:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ReclaimTokens.sol",
        "file": "./ReclaimTokens.sol",
        "id": 475,
        "nodeType": "ImportDirective",
        "scope": 554,
        "sourceUnit": 600,
        "src": "51:29:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 476,
              "name": "ReclaimTokens",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 599,
              "src": "175:13:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReclaimTokens_$599",
                "typeString": "contract ReclaimTokens"
              }
            },
            "id": 477,
            "nodeType": "InheritanceSpecifier",
            "src": "175:13:3"
          }
        ],
        "contractDependencies": [
          599,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Core functionality for registry upgradability",
        "fullyImplemented": true,
        "id": 553,
        "linearizedBaseContracts": [
          553,
          599,
          22664
        ],
        "name": "PolymathRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 481,
            "name": "storedAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 553,
            "src": "196:51:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 480,
              "keyType": {
                "id": 478,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "205:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "196:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 479,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "216:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 489,
            "name": "LogChangeAddress",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 483,
                  "indexed": false,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "277:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "277:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 485,
                  "indexed": true,
                  "name": "_oldAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "294:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 484,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "294:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 487,
                  "indexed": true,
                  "name": "_newAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 489,
                  "src": "323:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 486,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "276:75:3"
            },
            "src": "254:98:3"
          },
          {
            "body": {
              "id": 519,
              "nodeType": "Block",
              "src": "570:170:3",
              "statements": [
                {
                  "assignments": [
                    497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 497,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 520,
                      "src": "580:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 496,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "580:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 503,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 500,
                            "name": "_nameKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 491,
                            "src": "610:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "604:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "604:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 498,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "594:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "594:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "580:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 505,
                            "name": "storedAddresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "638:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 507,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 506,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "654:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "638:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "670:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "662:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "662:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "638:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e76616c69642061646472657373206b6579",
                        "id": 512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "674:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2d5cad5c8c2d42d040c96dc019ee2c8acdbf7bebadf6e564f83201ca477a0d4e",
                          "typeString": "literal_string \"Invalid address key\""
                        },
                        "value": "Invalid address key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2d5cad5c8c2d42d040c96dc019ee2c8acdbf7bebadf6e564f83201ca477a0d4e",
                          "typeString": "literal_string \"Invalid address key\""
                        }
                      ],
                      "id": 504,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "630:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "630:66:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 514,
                  "nodeType": "ExpressionStatement",
                  "src": "630:66:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 515,
                      "name": "storedAddresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 481,
                      "src": "713:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 517,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 516,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 497,
                      "src": "729:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "713:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 495,
                  "id": 518,
                  "nodeType": "Return",
                  "src": "706:27:3"
                }
              ]
            },
            "documentation": "@notice Get the contract address\n@param _nameKey is the key for the contract address mapping\n@return address",
            "id": 520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 491,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "524:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 490,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "523:17:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 494,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "561:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "560:9:3"
            },
            "scope": 553,
            "src": "504:236:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 551,
              "nodeType": "Block",
              "src": "1004:177:3",
              "statements": [
                {
                  "assignments": [
                    530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 530,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 552,
                      "src": "1014:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 529,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1014:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 536,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 533,
                            "name": "_nameKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 522,
                            "src": "1044:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1038:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1038:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 531,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23125,
                      "src": "1028:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1028:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1014:40:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 538,
                        "name": "_nameKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 522,
                        "src": "1086:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 539,
                          "name": "storedAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 481,
                          "src": "1096:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 541,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 540,
                          "name": "key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 530,
                          "src": "1112:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1096:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 542,
                        "name": "_newAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 524,
                        "src": "1118:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 537,
                      "name": "LogChangeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 489,
                      "src": "1069:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (string memory,address,address)"
                      }
                    },
                    "id": 543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1069:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 544,
                  "nodeType": "EmitStatement",
                  "src": "1064:66:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 545,
                        "name": "storedAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 481,
                        "src": "1140:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 547,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 546,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 530,
                        "src": "1156:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1140:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 548,
                      "name": "_newAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 524,
                      "src": "1163:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1140:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 550,
                  "nodeType": "ExpressionStatement",
                  "src": "1140:34:3"
                }
              ]
            },
            "documentation": "@notice change the contract address\n@param _nameKey is the key for the contract address mapping\n@param _newAddress is the new contract address",
            "id": 552,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 527,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 526,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "994:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "994:9:3"
              }
            ],
            "name": "changeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 522,
                  "name": "_nameKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 552,
                  "src": "949:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 521,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "949:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 524,
                  "name": "_newAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 552,
                  "src": "966:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "948:38:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1004:0:3"
            },
            "scope": 553,
            "src": "926:255:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 554,
        "src": "146:1039:3"
      }
    ],
    "src": "0:1186:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {
    "15": {
      "events": {
        "0x38575ca154acfc441b9e175568ded9b32501025df333c637fb24985161f53981": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_nameKey",
              "type": "string"
            },
            {
              "indexed": true,
              "name": "_oldAddress",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_newAddress",
              "type": "address"
            }
          ],
          "name": "LogChangeAddress",
          "type": "event"
        },
        "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipRenounced",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x61136a15f4717907338bed906673c145991e93c3",
      "transactionHash": "0x9f483248d359bd735d4ab80a2b335f30d13d23aa1d2d37ece5ae11d745327fef"
    }
  },
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:28.911Z"
}