{
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "charter",
      "outputs": [
        {
          "internalType": "contract Charter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Charter",
          "name": "newCharter",
          "type": "address"
        }
      ],
      "name": "setCharter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50600180546001600160a01b0319163317905560fe806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063b94ed2d1146037578063c1aadb4d146048575b600080fd5b6046604236600460c3565b6076565b005b600054605a906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546001600160a01b03163314608c57600080fd5b6000546001600160a01b03161560a157600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121560d457600080fd5b81356001600160a01b038116811460ea57600080fd5b939250505056fea164736f6c634300080d000a",
    "sourceMap": "558:600:14:-:0;;;640:52;;;;;;;;;-1:-1:-1;664:8:14;:21;;-1:-1:-1;;;;;;664:21:14;675:10;664:21;;;558:600;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063b94ed2d1146037578063c1aadb4d146048575b600080fd5b6046604236600460c3565b6076565b005b600054605a906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546001600160a01b03163314608c57600080fd5b6000546001600160a01b03161560a157600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121560d457600080fd5b81356001600160a01b038116811460ea57600080fd5b939250505056fea164736f6c634300080d000a",
    "sourceMap": "558:600:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;698:174;;;;;;:::i;:::-;;:::i;:::-;;581:22;;;;;-1:-1:-1;;;;;581:22:14;;;;;;-1:-1:-1;;;;;501:32:22;;;483:51;;471:2;456:18;581:22:14;;;;;;;698:174;777:8;;-1:-1:-1;;;;;777:8:14;763:10;:22;755:31;;;;;;832:1;812:7;-1:-1:-1;;;;;812:7:14;804:30;796:39;;;;;;845:7;:20;;-1:-1:-1;;;;;;845:20:14;-1:-1:-1;;;;;845:20:14;;;;;;;;;;698:174::o;14:302:22:-;89:6;142:2;130:9;121:7;117:23;113:32;110:52;;;158:1;155;148:12;110:52;184:23;;-1:-1:-1;;;;;236:31:22;;226:42;;216:70;;282:1;279;272:12;216:70;305:5;14:302;-1:-1:-1;;;14:302:22:o",
    "linkReferences": {}
  },
  "userdoc": {
    "version": 1,
    "kind": "user"
  },
  "devdoc": {
    "version": 1,
    "kind": "dev",
    "details": "Allows a \"founder\" to create a contract and then surrender control over the contract once and only once."
  },
  "ast": {
    "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Tokens.sol",
    "exportedSymbols": {
      "Address": [
        2382
      ],
      "Association": [
        4902
      ],
      "Charter": [
        4538
      ],
      "CharterConfig": [
        2820
      ],
      "CharterGovernanceToken": [
        4801
      ],
      "CharterStakingToken": [
        4752
      ],
      "Context": [
        2404
      ],
      "ERC20": [
        690
      ],
      "ERC777": [
        1884
      ],
      "Founded": [
        4641
      ],
      "IERC1820Registry": [
        2494
      ],
      "IERC20": [
        768
      ],
      "IERC20Metadata": [
        793
      ],
      "IERC777": [
        2047
      ],
      "IERC777Recipient": [
        2067
      ],
      "IERC777Sender": [
        2087
      ],
      "Limited": [
        5242
      ],
      "Math": [
        5394
      ],
      "Member": [
        5043
      ],
      "Ownable": [
        104
      ],
      "TimeDelayStakingToken": [
        5769
      ],
      "TrialDeposit": [
        2831
      ]
    },
    "id": 4802,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4540,
        "literals": [
          "solidity",
          "0.8",
          ".13"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:14"
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "id": 4541,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 691,
        "src": "57:64:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "id": 4542,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 1885,
        "src": "122:66:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "id": 4543,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 2068,
        "src": "189:76:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/access/Ownable.sol",
        "file": "openzeppelin-contracts/contracts/access/Ownable.sol",
        "id": 4544,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 105,
        "src": "266:61:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Charter.sol",
        "file": "./Charter.sol",
        "id": 4545,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 4539,
        "src": "329:23:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Association.sol",
        "file": "./lib/Association.sol",
        "id": 4546,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5044,
        "src": "353:31:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Stake.sol",
        "file": "./lib/Stake.sol",
        "id": 4547,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5770,
        "src": "385:25:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Limited.sol",
        "file": "./lib/Limited.sol",
        "id": 4548,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5243,
        "src": "411:27:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Founded",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 4549,
          "nodeType": "StructuredDocumentation",
          "src": "440:118:14",
          "text": "@dev Allows a \"founder\" to create a contract and then\n surrender control over the contract once and only once."
        },
        "fullyImplemented": true,
        "id": 4641,
        "linearizedBaseContracts": [
          4641
        ],
        "name": "Founded",
        "nameLocation": "567:7:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "c1aadb4d",
            "id": 4552,
            "mutability": "mutable",
            "name": "charter",
            "nameLocation": "596:7:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "581:22:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Charter_$4538",
              "typeString": "contract Charter"
            },
            "typeName": {
              "id": 4551,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 4550,
                "name": "Charter",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 4538,
                "src": "581:7:14"
              },
              "referencedDeclaration": 4538,
              "src": "581:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Charter_$4538",
                "typeString": "contract Charter"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4554,
            "mutability": "mutable",
            "name": "_founder",
            "nameLocation": "625:8:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "609:24:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4553,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "609:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 4562,
              "nodeType": "Block",
              "src": "654:38:14",
              "statements": [
                {
                  "expression": {
                    "id": 4560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4557,
                      "name": "_founder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4554,
                      "src": "664:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 4558,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "675:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "675:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "664:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4561,
                  "nodeType": "ExpressionStatement",
                  "src": "664:21:14"
                }
              ]
            },
            "id": 4563,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "651:2:14"
            },
            "returnParameters": {
              "id": 4556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "654:0:14"
            },
            "scope": 4641,
            "src": "640:52:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4592,
              "nodeType": "Block",
              "src": "745:127:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4570,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "763:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "763:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 4572,
                          "name": "_founder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4554,
                          "src": "777:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "763:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "755:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "755:31:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4575,
                  "nodeType": "ExpressionStatement",
                  "src": "755:31:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 4579,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "812:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "804:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4577,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "804:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "804:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "832:1:14",
                              "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": 4582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "824:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4581,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "824:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "824:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "804:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "796:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "796:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4587,
                  "nodeType": "ExpressionStatement",
                  "src": "796:39:14"
                },
                {
                  "expression": {
                    "id": 4590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4588,
                      "name": "charter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4552,
                      "src": "845:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4589,
                      "name": "newCharter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4566,
                      "src": "855:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "src": "845:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "id": 4591,
                  "nodeType": "ExpressionStatement",
                  "src": "845:20:14"
                }
              ]
            },
            "functionSelector": "b94ed2d1",
            "id": 4593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setCharter",
            "nameLocation": "707:10:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4566,
                  "mutability": "mutable",
                  "name": "newCharter",
                  "nameLocation": "726:10:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4593,
                  "src": "718:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Charter_$4538",
                    "typeString": "contract Charter"
                  },
                  "typeName": {
                    "id": 4565,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4564,
                      "name": "Charter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4538,
                      "src": "718:7:14"
                    },
                    "referencedDeclaration": 4538,
                    "src": "718:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "717:20:14"
            },
            "returnParameters": {
              "id": 4568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "745:0:14"
            },
            "scope": 4641,
            "src": "698:174:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4616,
              "nodeType": "Block",
              "src": "901:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4596,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "919:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "919:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "941:1:14",
                              "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": 4599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "933:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4598,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "933:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "933:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "919:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "911:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "911:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4604,
                  "nodeType": "ExpressionStatement",
                  "src": "911:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4606,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "962:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "962:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 4610,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "984:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "976:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4608,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "976:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "976:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "962:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4605,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "954:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "954:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4614,
                  "nodeType": "ExpressionStatement",
                  "src": "954:39:14"
                },
                {
                  "id": 4615,
                  "nodeType": "PlaceholderStatement",
                  "src": "1004:1:14"
                }
              ]
            },
            "id": 4617,
            "name": "onlyCharter",
            "nameLocation": "887:11:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "898:2:14"
            },
            "src": "878:134:14",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4639,
              "nodeType": "Block",
              "src": "1046:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4620,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1064:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1064:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1086:1:14",
                              "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": 4623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1078:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4622,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1078:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1078:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1064:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4619,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1056:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1056:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4628,
                  "nodeType": "ExpressionStatement",
                  "src": "1056:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4630,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1107:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1107:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4632,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "1121:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            },
                            "id": 4633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32,
                            "src": "1121:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 4634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1121:15:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1107:29:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4629,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1099:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1099:38:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4637,
                  "nodeType": "ExpressionStatement",
                  "src": "1099:38:14"
                },
                {
                  "id": 4638,
                  "nodeType": "PlaceholderStatement",
                  "src": "1148:1:14"
                }
              ]
            },
            "id": 4640,
            "name": "onlyCharterOwner",
            "nameLocation": "1027:16:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1043:2:14"
            },
            "src": "1018:138:14",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 4802,
        "src": "558:600:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4642,
              "name": "TimeDelayStakingToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5769,
              "src": "1192:21:14"
            },
            "id": 4643,
            "nodeType": "InheritanceSpecifier",
            "src": "1192:21:14"
          },
          {
            "baseName": {
              "id": 4644,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "1215:7:14"
            },
            "id": 4645,
            "nodeType": "InheritanceSpecifier",
            "src": "1215:7:14"
          },
          {
            "baseName": {
              "id": 4646,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "1224:7:14"
            },
            "id": 4647,
            "nodeType": "InheritanceSpecifier",
            "src": "1224:7:14"
          }
        ],
        "canonicalName": "CharterStakingToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4752,
        "linearizedBaseContracts": [
          4752,
          5242,
          4641,
          5769,
          5394,
          2067,
          1884,
          768,
          2047,
          2404
        ],
        "name": "CharterStakingToken",
        "nameLocation": "1169:19:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4690,
              "nodeType": "Block",
              "src": "1661:57:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4683,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1677:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1677:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4685,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4657,
                        "src": "1689:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1704:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1708:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4682,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1671:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1671:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4689,
                  "nodeType": "ExpressionStatement",
                  "src": "1671:40:14"
                }
              ]
            },
            "id": 4691,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4662,
                    "name": "withdraw",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4653,
                    "src": "1461:8:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4663,
                    "name": "period",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4655,
                    "src": "1471:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 4664,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4661,
                  "name": "TimeDelayStakingToken",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5769,
                  "src": "1439:21:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1439:39:14"
              },
              {
                "arguments": [
                  {
                    "id": 4666,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4649,
                    "src": "1494:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4667,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4651,
                    "src": "1500:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 4671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1522:1:14",
                        "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": 4670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1508:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1512:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4669,
                        "nodeType": "ArrayTypeName",
                        "src": "1512:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 4672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1508:16:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  }
                ],
                "id": 4673,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4665,
                  "name": "ERC777",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1884,
                  "src": "1487:6:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1487:38:14"
              },
              {
                "arguments": [],
                "id": 4675,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4674,
                  "name": "Founded",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4641,
                  "src": "1534:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1534:9:14"
              },
              {
                "arguments": [
                  {
                    "id": 4677,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4657,
                    "src": "1573:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4678,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4659,
                    "src": "1600:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1632:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4680,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4676,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "1552:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1552:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4649,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "1273:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1259:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4648,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1259:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4651,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "1301:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1287:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4650,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4653,
                  "mutability": "mutable",
                  "name": "withdraw",
                  "nameLocation": "1325:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1317:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4655,
                  "mutability": "mutable",
                  "name": "period",
                  "nameLocation": "1351:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1343:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1343:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4657,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "1375:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1367:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4656,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1367:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4659,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "1406:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1398:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1249:181:14"
            },
            "returnParameters": {
              "id": 4681,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1661:0:14"
            },
            "scope": 4752,
            "src": "1238:480:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4705,
              "nodeType": "Block",
              "src": "1787:37:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4701,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4693,
                        "src": "1804:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4702,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4695,
                        "src": "1810:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4700,
                      "name": "_slash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5768,
                      "src": "1797:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 4703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1797:20:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4704,
                  "nodeType": "ExpressionStatement",
                  "src": "1797:20:14"
                }
              ]
            },
            "functionSelector": "83f684a4",
            "id": 4706,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4698,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4697,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1775:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1775:11:14"
              }
            ],
            "name": "slash",
            "nameLocation": "1733:5:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4693,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1747:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1739:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4692,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4695,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1760:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1753:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4694,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1738:29:14"
            },
            "returnParameters": {
              "id": 4699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1787:0:14"
            },
            "scope": 4752,
            "src": "1724:100:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4726,
              "nodeType": "Block",
              "src": "1890:83:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4716,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4708,
                        "src": "1906:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4718,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 991,
                              "src": "1935:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1935:13:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4720,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4710,
                            "src": "1950:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 4717,
                          "name": "_cappedNewSupplyToCreate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5241,
                          "src": "1910:24:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) returns (uint256)"
                          }
                        },
                        "id": 4721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1910:47:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1959:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1963:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4715,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1900:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1900:66:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4725,
                  "nodeType": "ExpressionStatement",
                  "src": "1900:66:14"
                }
              ]
            },
            "functionSelector": "2893c5b0",
            "id": 4727,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4713,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4712,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1878:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1878:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "1839:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4708,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1852:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1844:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4707,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1844:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4710,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1863:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1856:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4709,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1856:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1843:27:14"
            },
            "returnParameters": {
              "id": 4714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1890:0:14"
            },
            "scope": 4752,
            "src": "1830:143:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4738,
              "nodeType": "Block",
              "src": "2093:70:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4735,
                        "name": "newStakeWithdrawPerPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4729,
                        "src": "2130:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4734,
                      "name": "_setStakeWithdrawPerPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5528,
                      "src": "2103:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2103:53:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4737,
                  "nodeType": "ExpressionStatement",
                  "src": "2103:53:14"
                }
              ]
            },
            "functionSelector": "8061766e",
            "id": 4739,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4732,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4731,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2072:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2072:16:14"
              }
            ],
            "name": "setStakeWithdrawPerPeriod",
            "nameLocation": "1988:25:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4729,
                  "mutability": "mutable",
                  "name": "newStakeWithdrawPerPeriod",
                  "nameLocation": "2022:25:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4739,
                  "src": "2014:33:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2014:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2013:35:14"
            },
            "returnParameters": {
              "id": 4733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:14"
            },
            "scope": 4752,
            "src": "1979:184:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4750,
              "nodeType": "Block",
              "src": "2269:56:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4747,
                        "name": "newPeriodInSeconds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4741,
                        "src": "2299:18:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4746,
                      "name": "_setPeriodInSeconds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5550,
                      "src": "2279:19:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2279:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4749,
                  "nodeType": "ExpressionStatement",
                  "src": "2279:39:14"
                }
              ]
            },
            "functionSelector": "d3700604",
            "id": 4751,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4744,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4743,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2248:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2248:16:14"
              }
            ],
            "name": "setPeriodInSeconds",
            "nameLocation": "2178:18:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4741,
                  "mutability": "mutable",
                  "name": "newPeriodInSeconds",
                  "nameLocation": "2205:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4751,
                  "src": "2197:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2197:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2196:28:14"
            },
            "returnParameters": {
              "id": 4745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2269:0:14"
            },
            "scope": 4752,
            "src": "2169:156:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "1160:1167:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4753,
              "name": "ERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 690,
              "src": "2364:5:14"
            },
            "id": 4754,
            "nodeType": "InheritanceSpecifier",
            "src": "2364:5:14"
          },
          {
            "baseName": {
              "id": 4755,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "2371:7:14"
            },
            "id": 4756,
            "nodeType": "InheritanceSpecifier",
            "src": "2371:7:14"
          },
          {
            "baseName": {
              "id": 4757,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "2380:7:14"
            },
            "id": 4758,
            "nodeType": "InheritanceSpecifier",
            "src": "2380:7:14"
          }
        ],
        "canonicalName": "CharterGovernanceToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4801,
        "linearizedBaseContracts": [
          4801,
          5242,
          5394,
          4641,
          690,
          793,
          768,
          2404
        ],
        "name": "CharterGovernanceToken",
        "nameLocation": "2338:22:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4784,
              "nodeType": "Block",
              "src": "2682:49:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4779,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2698:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2698:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4781,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4764,
                        "src": "2710:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4778,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2692:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2692:32:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4783,
                  "nodeType": "ExpressionStatement",
                  "src": "2692:32:14"
                }
              ]
            },
            "id": 4785,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4769,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4760,
                    "src": "2551:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4770,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4762,
                    "src": "2557:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 4771,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4768,
                  "name": "ERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 690,
                  "src": "2545:5:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2545:19:14"
              },
              {
                "arguments": [
                  {
                    "id": 4773,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4764,
                    "src": "2594:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4774,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4766,
                    "src": "2621:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2653:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4776,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4772,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "2573:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2573:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4760,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "2429:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2415:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4759,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2415:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4762,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "2457:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2443:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4761,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2443:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4764,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "2481:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2473:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4766,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "2512:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2504:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2504:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2405:131:14"
            },
            "returnParameters": {
              "id": 4777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2682:0:14"
            },
            "scope": 4801,
            "src": "2394:337:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4799,
              "nodeType": "Block",
              "src": "2805:41:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4795,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4787,
                        "src": "2821:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4796,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4789,
                        "src": "2832:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4794,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2815:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2815:24:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4798,
                  "nodeType": "ExpressionStatement",
                  "src": "2815:24:14"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 4800,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4792,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4791,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "2793:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2793:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "2746:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4787,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2759:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2751:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4789,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2778:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2770:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2770:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:35:14"
            },
            "returnParameters": {
              "id": 4793,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2805:0:14"
            },
            "scope": 4801,
            "src": "2737:109:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "2329:519:14",
        "usedErrors": []
      }
    ],
    "src": "32:2817:14"
  }
}