{
  "contractName": "Contract",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "template",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "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"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Contract",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806104d8833981016040525160008054600160a060020a031916331790556100667f01ffc9a7000000000000000000000000000000000000000000000000000000006401000000006100dc810204565b600160a060020a038116151561007b57600080fd5b6002805433600160a060020a03199182161790915560008054909116600160a060020a0383161790556100d67f6125ede5000000000000000000000000000000000000000000000000000000006401000000006100dc810204565b5061014b565b7fffffffff00000000000000000000000000000000000000000000000000000000808216141561010b57600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b61037e8061015a6000396000f3006080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a7811461008757806319fa8f50146100d25780636f2ddd9314610119578063715018a61461014a5780638da5cb5b14610161578063f2fde38b14610176578063fbf964eb14610197575b600080fd5b34801561009357600080fd5b506100be7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166101ac565b604080519115158252519081900360200190f35b3480156100de57600080fd5b506100e76101e0565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561012557600080fd5b5061012e610204565b60408051600160a060020a039092168252519081900360200190f35b34801561015657600080fd5b5061015f610213565b005b34801561016d57600080fd5b5061012e61027f565b34801561018257600080fd5b5061015f600160a060020a036004351661028e565b3480156101a357600080fd5b506100e76102b1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600254600160a060020a031681565b600054600160a060020a0316331461022a57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a031633146102a557600080fd5b6102ae816102d5565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b600160a060020a03811615156102ea57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582062aef1aa6fc51d3311877ade39a99adff7df16226af59b18b04f40c5412509a10029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a7811461008757806319fa8f50146100d25780636f2ddd9314610119578063715018a61461014a5780638da5cb5b14610161578063f2fde38b14610176578063fbf964eb14610197575b600080fd5b34801561009357600080fd5b506100be7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166101ac565b604080519115158252519081900360200190f35b3480156100de57600080fd5b506100e76101e0565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561012557600080fd5b5061012e610204565b60408051600160a060020a039092168252519081900360200190f35b34801561015657600080fd5b5061015f610213565b005b34801561016d57600080fd5b5061012e61027f565b34801561018257600080fd5b5061015f600160a060020a036004351661028e565b3480156101a357600080fd5b506100e76102b1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600254600160a060020a031681565b600054600160a060020a0316331461022a57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a031633146102a557600080fd5b6102ae816102d5565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b600160a060020a03811615156102ea57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582062aef1aa6fc51d3311877ade39a99adff7df16226af59b18b04f40c5412509a10029",
  "sourceMap": "205:510:4:-;;;515:198;8:9:-1;5:2;;;30:1;27;20:12;5:2;515:198:4;;;;;;;;;;;;;567:5:21;:18;;-1:-1:-1;;;;;;567:18:21;575:10;567:18;;;649:38:18;668:18;649;;;;:38;:::i;:::-;-1:-1:-1;;;;;568:20:4;;;;560:29;;;;;;600:8;:31;;620:10;-1:-1:-1;;;;;;600:31:4;;;;;;;-1:-1:-1;641:14:4;;;;;-1:-1:-1;;;;;641:14:4;;;;;666:40;685:20;666:18;;;;:40;:::i;:::-;515:198;205:510;;987:156:18;1065:26;;;;;;1057:35;;;;;;1098:33;;;;;;1134:4;1098:33;;;;;;;;:40;;-1:-1:-1;;1098:40:18;;;;;;987:156::o;205:510:4:-;;;;;;;",
  "deployedSourceMap": "205:510:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;775:142:18;-1:-1:-1;;775:142:18;;;;;;;;;;;;;;;;;;;;;;;230:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:18;;;;;;;;-1:-1:-1;;230:54:18;;;;;;;;;;;;;;484:24:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:24:4;;;;;;;;-1:-1:-1;;;;;484:24:4;;;;;;;;;;;;;;1001:111:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:21;;;;;;238:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:21;;;;1274:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:21;-1:-1:-1;;;;;1274:103:21;;;;;421:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:56:4;;;;775:142:18;-1:-1:-1;;879:33:18;858:4;879:33;;;:19;:33;;;;;;;;;775:142::o;230:54::-;;;:::o;484:24:4:-;;;-1:-1:-1;;;;;484:24:4;;:::o;1001:111:21:-;719:5;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;1077:5;;;1058:25;;-1:-1:-1;;;;;1077:5:21;;;;1058:25;;;1105:1;1089:18;;-1:-1:-1;;1089:18:21;;;1001:111::o;238:20::-;;;-1:-1:-1;;;;;238:20:21;;:::o;1274:103::-;719:5;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;:::-;1274:103;:::o;421:56:4:-;;;:::o;1512:171:21:-;-1:-1:-1;;;;;1582:23:21;;;;1574:32;;;;;;1638:5;;;1617:38;;-1:-1:-1;;;;;1617:38:21;;;;1638:5;;;1617:38;;;1661:5;:17;;-1:-1:-1;;1661:17:21;-1:-1:-1;;;;;1661:17:21;;;;;;;;;;1512:171::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"zeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol\";\nimport \"./template/Template.sol\";\n\ncontract Contract is Ownable, SupportsInterfaceWithLookup {\n    /**\n     * @notice this.owner.selector ^ this.renounceOwnership.selector ^ this.transferOwnership.selector\n        ^ this.template.selector\n     */\n    bytes4 public constant InterfaceId_Contract = 0x6125ede5;\n\n    Template public template;\n\n    constructor(address _owner) public {\n        require(_owner != address(0));\n\n        template = Template(msg.sender);\n        owner = _owner;\n\n        _registerInterface(InterfaceId_Contract);\n    }\n}\n",
  "sourcePath": "tokenboost-solidity/contracts/Contract.sol",
  "ast": {
    "absolutePath": "tokenboost-solidity/contracts/Contract.sol",
    "exportedSymbols": {
      "Contract": [
        556
      ]
    },
    "id": 557,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 514,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:4"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 515,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 4123,
        "src": "26:59:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol",
        "file": "zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol",
        "id": 516,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 3883,
        "src": "86:83:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/template/Template.sol",
        "file": "./template/Template.sol",
        "id": 517,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 761,
        "src": "170:33:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 518,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4122,
              "src": "226:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4122",
                "typeString": "contract Ownable"
              }
            },
            "id": 519,
            "nodeType": "InheritanceSpecifier",
            "src": "226:7:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 520,
              "name": "SupportsInterfaceWithLookup",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3882,
              "src": "235:27:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SupportsInterfaceWithLookup_$3882",
                "typeString": "contract SupportsInterfaceWithLookup"
              }
            },
            "id": 521,
            "nodeType": "InheritanceSpecifier",
            "src": "235:27:4"
          }
        ],
        "contractDependencies": [
          3831,
          3882,
          4122
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 556,
        "linearizedBaseContracts": [
          556,
          3882,
          3831,
          4122
        ],
        "name": "Contract",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 524,
            "name": "InterfaceId_Contract",
            "nodeType": "VariableDeclaration",
            "scope": 556,
            "src": "421:56:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 522,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "421:6:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783631323565646535",
              "id": 523,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "467:10:4",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1629875685_by_1",
                "typeString": "int_const 1629875685"
              },
              "value": "0x6125ede5"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 526,
            "name": "template",
            "nodeType": "VariableDeclaration",
            "scope": 556,
            "src": "484:24:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Template_$760",
              "typeString": "contract Template"
            },
            "typeName": {
              "contractScope": null,
              "id": 525,
              "name": "Template",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 760,
              "src": "484:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Template_$760",
                "typeString": "contract Template"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 554,
              "nodeType": "Block",
              "src": "550:163:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 532,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 528,
                          "src": "568:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "586:1:4",
                              "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": 533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "578:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "578:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "568:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 531,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4919,
                        4920
                      ],
                      "referencedDeclaration": 4919,
                      "src": "560:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "560:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 538,
                  "nodeType": "ExpressionStatement",
                  "src": "560:29:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 539,
                      "name": "template",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 526,
                      "src": "600:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Template_$760",
                        "typeString": "contract Template"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 541,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4916,
                            "src": "620:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "620:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 540,
                        "name": "Template",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 760,
                        "src": "611:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Template_$760_$",
                          "typeString": "type(contract Template)"
                        }
                      },
                      "id": 543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "611:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Template_$760",
                        "typeString": "contract Template"
                      }
                    },
                    "src": "600:31:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Template_$760",
                      "typeString": "contract Template"
                    }
                  },
                  "id": 545,
                  "nodeType": "ExpressionStatement",
                  "src": "600:31:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 546,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4040,
                      "src": "641:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 547,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 528,
                      "src": "649:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "641:14:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 549,
                  "nodeType": "ExpressionStatement",
                  "src": "641:14:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 551,
                        "name": "InterfaceId_Contract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 524,
                        "src": "685:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 550,
                      "name": "_registerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3881,
                      "src": "666:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "666:40:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 553,
                  "nodeType": "ExpressionStatement",
                  "src": "666:40:4"
                }
              ]
            },
            "documentation": null,
            "id": 555,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 555,
                  "src": "527:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 530,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "550:0:4"
            },
            "scope": 556,
            "src": "515:198:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 557,
        "src": "205:510:4"
      }
    ],
    "src": "0:716:4"
  },
  "legacyAST": {
    "absolutePath": "tokenboost-solidity/contracts/Contract.sol",
    "exportedSymbols": {
      "Contract": [
        556
      ]
    },
    "id": 557,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 514,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:4"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 515,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 4123,
        "src": "26:59:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol",
        "file": "zeppelin-solidity/contracts/introspection/SupportsInterfaceWithLookup.sol",
        "id": 516,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 3883,
        "src": "86:83:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/template/Template.sol",
        "file": "./template/Template.sol",
        "id": 517,
        "nodeType": "ImportDirective",
        "scope": 557,
        "sourceUnit": 761,
        "src": "170:33:4",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 518,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4122,
              "src": "226:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4122",
                "typeString": "contract Ownable"
              }
            },
            "id": 519,
            "nodeType": "InheritanceSpecifier",
            "src": "226:7:4"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 520,
              "name": "SupportsInterfaceWithLookup",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3882,
              "src": "235:27:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SupportsInterfaceWithLookup_$3882",
                "typeString": "contract SupportsInterfaceWithLookup"
              }
            },
            "id": 521,
            "nodeType": "InheritanceSpecifier",
            "src": "235:27:4"
          }
        ],
        "contractDependencies": [
          3831,
          3882,
          4122
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 556,
        "linearizedBaseContracts": [
          556,
          3882,
          3831,
          4122
        ],
        "name": "Contract",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 524,
            "name": "InterfaceId_Contract",
            "nodeType": "VariableDeclaration",
            "scope": 556,
            "src": "421:56:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 522,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "421:6:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783631323565646535",
              "id": 523,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "467:10:4",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1629875685_by_1",
                "typeString": "int_const 1629875685"
              },
              "value": "0x6125ede5"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 526,
            "name": "template",
            "nodeType": "VariableDeclaration",
            "scope": 556,
            "src": "484:24:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Template_$760",
              "typeString": "contract Template"
            },
            "typeName": {
              "contractScope": null,
              "id": 525,
              "name": "Template",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 760,
              "src": "484:8:4",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Template_$760",
                "typeString": "contract Template"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 554,
              "nodeType": "Block",
              "src": "550:163:4",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 532,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 528,
                          "src": "568:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "586:1:4",
                              "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": 533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "578:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "578:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "568:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 531,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4919,
                        4920
                      ],
                      "referencedDeclaration": 4919,
                      "src": "560:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "560:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 538,
                  "nodeType": "ExpressionStatement",
                  "src": "560:29:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 539,
                      "name": "template",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 526,
                      "src": "600:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Template_$760",
                        "typeString": "contract Template"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 541,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4916,
                            "src": "620:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "620:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 540,
                        "name": "Template",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 760,
                        "src": "611:8:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Template_$760_$",
                          "typeString": "type(contract Template)"
                        }
                      },
                      "id": 543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "611:20:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Template_$760",
                        "typeString": "contract Template"
                      }
                    },
                    "src": "600:31:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Template_$760",
                      "typeString": "contract Template"
                    }
                  },
                  "id": 545,
                  "nodeType": "ExpressionStatement",
                  "src": "600:31:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 546,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4040,
                      "src": "641:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 547,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 528,
                      "src": "649:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "641:14:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 549,
                  "nodeType": "ExpressionStatement",
                  "src": "641:14:4"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 551,
                        "name": "InterfaceId_Contract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 524,
                        "src": "685:20:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 550,
                      "name": "_registerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3881,
                      "src": "666:18:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "666:40:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 553,
                  "nodeType": "ExpressionStatement",
                  "src": "666:40:4"
                }
              ]
            },
            "documentation": null,
            "id": 555,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 555,
                  "src": "527:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 530,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "550:0:4"
            },
            "scope": 556,
            "src": "515:198:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 557,
        "src": "205:510:4"
      }
    ],
    "src": "0:716:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-16T05:56:33.146Z"
}